{"product_id":"curle™-flawless-touch-up-mirror","title":"Curle™ Flawless LED Touch-Up Mirror","description":"\u003csection class=\"curle-product-section\" id=\"curle-mirror\"\u003e\n\u003cdiv class=\"curle-background-glow\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"curle-container\"\u003e\n\u003c!-- Hero Content --\u003e\n\u003cdiv class=\"curle-hero\"\u003e\n\u003cdiv class=\"curle-copy\"\u003e\n\u003cspan class=\"curle-eyebrow\"\u003e✨ Your beauty essential, elevated\u003c\/span\u003e\n\u003ch1\u003eLook Flawless.\u003cbr\u003e\u003cspan\u003eAnywhere. Every Time.\u003c\/span\u003e\n\u003c\/h1\u003e\n\u003cp class=\"curle-description\"\u003eMeet the \u003cstrong\u003eCurle™ Flawless Touch-Up Mirror\u003c\/strong\u003e — your go-to beauty companion for effortless touch-ups, wherever the day takes you.\u003c\/p\u003e\n\u003cdiv class=\"curle-buttons\"\u003e\n\u003ca href=\"#shop-curle\" class=\"curle-primary-btn\"\u003e Shop Curle™ \u003cspan\u003e→\u003c\/span\u003e \u003c\/a\u003e \u003ca href=\"#curle-details\" class=\"curle-secondary-btn\"\u003e Discover More \u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-trust-row\"\u003e\n\u003cdiv\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Product Visual --\u003e\n\u003cdiv class=\"curle-product-stage\"\u003e\n\u003cdiv class=\"curle-orbit orbit-one\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"curle-orbit orbit-two\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"curle-floating-badge\"\u003e\n\u003cspan\u003eNEW\u003c\/span\u003e \u003cstrong\u003eBeauty\u003cbr\u003eOn-the-Go\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-mirror\"\u003e\n\u003cdiv class=\"curle-mirror-frame\"\u003e\n\u003cdiv class=\"curle-reflection\"\u003e\n\u003cdiv class=\"reflection-shine\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"reflection-circle\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-mirror-stand\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-shadow\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Features --\u003e\n\u003cdiv class=\"curle-features\" id=\"curle-details\"\u003e\n\u003cdiv class=\"curle-section-heading\"\u003e\n\u003cspan\u003eTHE CURLE™ DIFFERENCE\u003c\/span\u003e\n\u003ch2\u003eSmall mirror.\u003cbr\u003e\u003cem\u003eMajor confidence.\u003c\/em\u003e\n\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-feature-grid\"\u003e\n\u003cdiv class=\"curle-feature-card\"\u003e\n\u003cdiv class=\"feature-icon\"\u003e🪞\u003c\/div\u003e\n\u003ch3\u003eCrystal-Clear Reflection\u003c\/h3\u003e\n\u003cp\u003eHD clarity glass reveals every detail, making your touch-up routine precise and effortless.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-feature-card\"\u003e\n\u003cdiv class=\"feature-icon\"\u003e📐\u003c\/div\u003e\n\u003ch3\u003eAdjustable Kickstand\u003c\/h3\u003e\n\u003cp\u003eSet your ideal angle and enjoy hands-free styling wherever you are.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-feature-card\"\u003e\n\u003cdiv class=\"feature-icon\"\u003e👜\u003c\/div\u003e\n\u003ch3\u003eMade to Travel\u003c\/h3\u003e\n\u003cp\u003eFolds flat and slips easily into your handbag, tote, or carry-on.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-feature-card\"\u003e\n\u003cdiv class=\"feature-icon\"\u003e🖤\u003c\/div\u003e\n\u003ch3\u003eTimeless Matte Finish\u003c\/h3\u003e\n\u003cp\u003eA sleek vegan leather exterior that looks beautiful on every vanity.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Product Details --\u003e\n\u003cdiv class=\"curle-details-box\"\u003e\n\u003cdiv class=\"curle-details-content\"\u003e\n\u003cspan class=\"curle-small-label\"\u003eDESIGNED FOR EVERYDAY BEAUTY\u003c\/span\u003e\n\u003ch2\u003eBeauty that fits\u003cbr\u003e\u003cem\u003ein your bag.\u003c\/em\u003e\n\u003c\/h2\u003e\n\u003cp\u003eFrom quick office touch-ups to full glam at home, Curle™ gives you the confidence to look your best at any moment.\u003c\/p\u003e\n\u003ca href=\"#shop-curle\" class=\"curle-primary-btn\"\u003e Get Your Curle™ \u003cspan\u003e→\u003c\/span\u003e \u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-specs\"\u003e\n\u003ch3\u003eProduct Specifications\u003c\/h3\u003e\n\u003cdiv class=\"curle-spec-row\"\u003e\u003cspan\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv class=\"curle-spec-row\"\u003e\n\u003cspan\u003eFolded Dimensions\u003c\/span\u003e \u003cstrong\u003e13 × 10 × 1.5 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-spec-row\"\u003e\n\u003cspan\u003eWeight\u003c\/span\u003e \u003cstrong\u003e180 g\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-spec-row\"\u003e\n\u003cspan\u003eExterior\u003c\/span\u003e \u003cstrong\u003ePremium Vegan Leather\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-spec-row\"\u003e\n\u003cspan\u003eLining\u003c\/span\u003e \u003cstrong\u003eSoft Textured Fabric\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003csmall\u003e*Specifications may vary slightly by unit.\u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CTA --\u003e\n\u003cdiv class=\"curle-final-cta\" id=\"shop-curle\"\u003e\n\u003cspan\u003e✨ YOUR EVERYDAY BEAUTY COMPANION\u003c\/span\u003e\n\u003ch2\u003eNever leave home\u003cbr\u003ewithout your flawless reflection.\u003c\/h2\u003e\n\u003ca href=\"\/products\/curle-flawless-touch-up-mirror\" class=\"curle-primary-btn\"\u003e Shop Curle™ Now \u003cspan\u003e→\u003c\/span\u003e \u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"curle-particle particle-one\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"curle-particle particle-two\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"curle-particle particle-three\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"curle-particle particle-four\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/section\u003e\n\u003cstyle\u003e\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600;700\u0026family=Playfair+Display:ital,wght@0,500;0,600;1,500;1,600\u0026display=swap');\n\n  :root {\n    --curle-black: #111111;\n    --curle-dark: #1c1b1b;\n    --curle-cream: #f8f5f0;\n    --curle-pink: #e9a9ad;\n    --curle-soft-pink: #f6dfe0;\n    --curle-muted: #817b79;\n    --curle-white: #ffffff;\n  }\n\n  .curle-product-section {\n    position: relative;\n    overflow: hidden;\n    padding: 100px 24px;\n    color: var(--curle-black);\n    background:\n      radial-gradient(circle at 85% 10%, rgba(233, 169, 173, .24), transparent 28%),\n      linear-gradient(135deg, #fffdfa 0%, var(--curle-cream) 100%);\n    font-family: 'DM Sans', sans-serif;\n  }\n\n  .curle-container {\n    position: relative;\n    z-index: 2;\n    max-width: 1180px;\n    margin: 0 auto;\n  }\n\n  .curle-hero {\n    min-height: 650px;\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    align-items: center;\n    gap: 70px;\n  }\n\n  .curle-eyebrow,\n  .curle-small-label,\n  .curle-section-heading span,\n  .curle-final-cta \u003e span {\n    display: inline-block;\n    color: #b16e73;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 2px;\n    text-transform: uppercase;\n  }\n\n  .curle-copy h1 {\n    margin: 20px 0;\n    color: var(--curle-black);\n    font-size: clamp(45px, 6vw, 78px);\n    line-height: .98;\n    letter-spacing: -4px;\n  }\n\n  .curle-copy h1 span {\n    color: #b7797d;\n    font-family: 'Playfair Display', serif;\n    font-style: italic;\n    font-weight: 500;\n    letter-spacing: -3px;\n  }\n\n  .curle-description {\n    max-width: 500px;\n    color: var(--curle-muted);\n    font-size: 17px;\n    line-height: 1.8;\n  }\n\n  .curle-description strong {\n    color: var(--curle-black);\n  }\n\n  .curle-buttons {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    gap: 15px;\n    margin-top: 35px;\n  }\n\n  .curle-primary-btn,\n  .curle-secondary-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 18px;\n    min-height: 53px;\n    padding: 0 25px;\n    border-radius: 100px;\n    text-decoration: none;\n    font-size: 13px;\n    font-weight: 700;\n    transition: .35s ease;\n  }\n\n  .curle-primary-btn {\n    color: var(--curle-white);\n    background: var(--curle-black);\n    box-shadow: 0 12px 25px rgba(0, 0, 0, .14);\n  }\n\n  .curle-primary-btn span {\n    font-size: 20px;\n    transition: transform .3s ease;\n  }\n\n  .curle-primary-btn:hover {\n    color: white;\n    background: #b7797d;\n    transform: translateY(-4px);\n    box-shadow: 0 16px 30px rgba(183, 121, 125, .3);\n  }\n\n  .curle-primary-btn:hover span {\n    transform: translateX(5px);\n  }\n\n  .curle-secondary-btn {\n    color: var(--curle-black);\n    border: 1px solid #d9d2cc;\n  }\n\n  .curle-secondary-btn:hover {\n    color: white;\n    background: var(--curle-black);\n    border-color: var(--curle-black);\n  }\n\n  .curle-trust-row {\n    display: flex;\n    gap: 35px;\n    margin-top: 45px;\n  }\n\n  .curle-trust-row div {\n    display: flex;\n    flex-direction: column;\n    gap: 5px;\n  }\n\n  .curle-trust-row strong {\n    font-size: 20px;\n  }\n\n  .curle-trust-row small {\n    color: var(--curle-muted);\n    font-size: 10px;\n    letter-spacing: .5px;\n  }\n\n  \/* Product Visual *\/\n  .curle-product-stage {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 550px;\n  }\n\n  .curle-mirror {\n    position: relative;\n    z-index: 3;\n    width: 270px;\n    animation: curleFloat 5s ease-in-out infinite;\n    transform-origin: center bottom;\n  }\n\n  .curle-mirror-frame {\n    padding: 15px;\n    border-radius: 22px;\n    background: linear-gradient(145deg, #333, #090909);\n    box-shadow:\n      20px 25px 45px rgba(0, 0, 0, .22),\n      inset 2px 2px 3px rgba(255, 255, 255, .16);\n    transform: rotate(-7deg);\n  }\n\n  .curle-reflection {\n    position: relative;\n    overflow: hidden;\n    height: 340px;\n    border: 3px solid #191919;\n    border-radius: 12px;\n    background:\n      radial-gradient(circle at 50% 32%, rgba(255, 255, 255, .98) 0 12%, transparent 13%),\n      radial-gradient(ellipse at 50% 75%, #eac0b7 0 22%, transparent 23%),\n      linear-gradient(145deg, #f4eeee, #c8d5d3 48%, #f8f2e9);\n    box-shadow: inset 0 0 22px rgba(255, 255, 255, .8);\n  }\n\n  .reflection-shine {\n    position: absolute;\n    top: -40%;\n    left: -80%;\n    width: 50%;\n    height: 180%;\n    opacity: .4;\n    background: linear-gradient(90deg, transparent, white, transparent);\n    transform: rotate(25deg);\n    animation: curleShine 4s ease-in-out infinite;\n  }\n\n  .reflection-circle {\n    position: absolute;\n    top: 21%;\n    left: 41%;\n    width: 48px;\n    height: 48px;\n    border: 4px solid rgba(255, 255, 255, .65);\n    border-radius: 50%;\n    box-shadow: 0 0 20px rgba(255, 255, 255, .7);\n  }\n\n  .curle-mirror-stand {\n    position: absolute;\n    z-index: -1;\n    bottom: -75px;\n    left: 50%;\n    width: 130px;\n    height: 105px;\n    border-right: 13px solid #171717;\n    border-bottom: 13px solid #171717;\n    border-radius: 0 0 25px 0;\n    transform: translateX(-50%) rotate(8deg);\n  }\n\n  .curle-shadow {\n    position: absolute;\n    bottom: 80px;\n    width: 300px;\n    height: 35px;\n    border-radius: 50%;\n    background: rgba(0, 0, 0, .18);\n    filter: blur(18px);\n    animation: curleShadow 5s ease-in-out infinite;\n  }\n\n  .curle-floating-badge {\n    position: absolute;\n    z-index: 5;\n    top: 80px;\n    right: 5%;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    width: 115px;\n    height: 115px;\n    padding: 15px;\n    color: white;\n    text-align: center;\n    border-radius: 50%;\n    background: #b7797d;\n    box-shadow: 0 15px 30px rgba(183, 121, 125, .3);\n    transform: rotate(12deg);\n    animation: curleBadge 4s ease-in-out infinite;\n  }\n\n  .curle-floating-badge span {\n    margin-bottom: 5px;\n    font-size: 10px;\n    letter-spacing: 2px;\n  }\n\n  .curle-floating-badge strong {\n    font-family: 'Playfair Display', serif;\n    font-size: 16px;\n    line-height: 1.1;\n  }\n\n  .curle-orbit {\n    position: absolute;\n    border: 1px solid rgba(183, 121, 125, .22);\n    border-radius: 50%;\n    transform: rotate(-25deg);\n  }\n\n  .orbit-one {\n    width: 460px;\n    height: 250px;\n  }\n\n  .orbit-two {\n    width: 530px;\n    height: 320px;\n    transform: rotate(35deg);\n  }\n\n  \/* Features *\/\n  .curle-features {\n    padding: 100px 0 50px;\n  }\n\n  .curle-section-heading {\n    margin-bottom: 40px;\n  }\n\n  .curle-section-heading h2,\n  .curle-details-content h2,\n  .curle-final-cta h2 {\n    margin: 15px 0 0;\n    font-size: clamp(36px, 5vw, 59px);\n    line-height: 1;\n    letter-spacing: -2px;\n  }\n\n  .curle-section-heading em,\n  .curle-details-content em,\n  .curle-final-cta em {\n    color: #b7797d;\n    font-family: 'Playfair Display', serif;\n    font-weight: 500;\n  }\n\n  .curle-feature-grid {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 15px;\n  }\n\n  .curle-feature-card {\n    padding: 30px 25px;\n    border: 1px solid rgba(0, 0, 0, .07);\n    border-radius: 18px;\n    background: rgba(255, 255, 255, .6);\n    transition: .35s ease;\n  }\n\n  .curle-feature-card:hover {\n    background: white;\n    transform: translateY(-9px);\n    box-shadow: 0 18px 35px rgba(0, 0, 0, .08);\n  }\n\n  .feature-icon {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 48px;\n    height: 48px;\n    margin-bottom: 22px;\n    border-radius: 50%;\n    background: var(--curle-soft-pink);\n    font-size: 21px;\n  }\n\n  .curle-feature-card h3 {\n    margin: 0 0 10px;\n    font-size: 17px;\n  }\n\n  .curle-feature-card p {\n    margin: 0;\n    color: var(--curle-muted);\n    font-size: 13px;\n    line-height: 1.7;\n  }\n\n  \/* Details *\/\n  .curle-details-box {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 60px;\n    margin-top: 80px;\n    padding: 65px;\n    border-radius: 25px;\n    color: white;\n    background: var(--curle-dark);\n  }\n\n  .curle-details-content p {\n    max-width: 430px;\n    margin: 25px 0 32px;\n    color: #beb9b5;\n    line-height: 1.8;\n  }\n\n  .curle-details-content h2 {\n    color: white;\n  }\n\n  .curle-specs h3 {\n    margin-top: 0;\n    margin-bottom: 23px;\n    font-size: 18px;\n  }\n\n  .curle-spec-row {\n    display: flex;\n    justify-content: space-between;\n    gap: 20px;\n    padding: 15px 0;\n    border-bottom: 1px solid rgba(255, 255, 255, .12);\n    color: #bdb8b4;\n    font-size: 13px;\n  }\n\n  .curle-spec-row strong {\n    color: white;\n    text-align: right;\n    font-weight: 600;\n  }\n\n  .curle-specs \u003e small {\n    display: block;\n    margin-top: 18px;\n    color: #8f8986;\n    font-size: 10px;\n  }\n\n  \/* Final CTA *\/\n  .curle-final-cta {\n    padding: 120px 20px 30px;\n    text-align: center;\n  }\n\n  .curle-final-cta h2 {\n    margin: 20px 0 35px;\n  }\n\n  \/* Floating Particles *\/\n  .curle-particle {\n    position: absolute;\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n    background: var(--curle-pink);\n    opacity: .5;\n    animation: curleParticle 7s ease-in-out infinite;\n  }\n\n  .particle-one {\n    top: 18%;\n    left: 8%;\n  }\n\n  .particle-two {\n    top: 65%;\n    left: 48%;\n    width: 5px;\n    height: 5px;\n    animation-delay: 2s;\n  }\n\n  .particle-three {\n    top: 35%;\n    right: 7%;\n    width: 6px;\n    height: 6px;\n    animation-delay: 1s;\n  }\n\n  .particle-four {\n    bottom: 12%;\n    right: 20%;\n    width: 10px;\n    height: 10px;\n    animation-delay: 3s;\n  }\n\n  \/* Animations *\/\n  @keyframes curleFloat {\n    0%, 100% {\n      transform: translateY(0) rotate(0deg);\n    }\n    50% {\n      transform: translateY(-17px) rotate(2deg);\n    }\n  }\n\n  @keyframes curleShadow {\n    0%, 100% {\n      transform: scaleX(1);\n      opacity: .18;\n    }\n    50% {\n      transform: scaleX(.78);\n      opacity: .1;\n    }\n  }\n\n  @keyframes curleShine {\n    0% {\n      left: -80%;\n    }\n    55%, 100% {\n      left: 150%;\n    }\n  }\n\n  @keyframes curleBadge {\n    0%, 100% {\n      transform: rotate(12deg) translateY(0);\n    }\n    50% {\n      transform: rotate(8deg) translateY(-10px);\n    }\n  }\n\n  @keyframes curleParticle {\n    0%, 100% {\n      transform: translate(0, 0);\n      opacity: .2;\n    }\n    50% {\n      transform: translate(20px, -35px);\n      opacity: .8;\n    }\n  }\n\n  \/* Mobile *\/\n  @media screen and (max-width: 850px) {\n    .curle-product-section {\n      padding: 65px 18px;\n    }\n\n    .curle-hero {\n      display: flex;\n      flex-direction: column;\n      min-height: auto;\n      gap: 20px;\n    }\n\n    .curle-copy {\n      text-align: center;\n    }\n\n    .curle-copy h1 {\n      font-size: clamp(44px, 13vw, 68px);\n      letter-spacing: -3px;\n    }\n\n    .curle-description {\n      margin: 0 auto;\n      font-size: 15px;\n    }\n\n    .curle-buttons {\n      justify-content: center;\n    }\n\n    .curle-trust-row {\n      justify-content: center;\n      gap: 20px;\n    }\n\n    .curle-product-stage {\n      width: 100%;\n      min-height: 500px;\n      transform: scale(.88);\n    }\n\n    .curle-feature-grid {\n      grid-template-columns: repeat(2, 1fr);\n    }\n\n    .curle-details-box {\n      grid-template-columns: 1fr;\n      gap: 45px;\n      padding: 38px 25px;\n    }\n\n    .curle-final-cta {\n      padding-top: 80px;\n    }\n  }\n\n  @media screen and (max-width: 500px) {\n    .curle-feature-grid {\n      grid-template-columns: 1fr;\n    }\n\n    .curle-product-stage {\n      min-height: 460px;\n      transform: scale(.73);\n      margin: -40px 0;\n    }\n\n    .curle-buttons {\n      flex-direction: column;\n    }\n\n    .curle-primary-btn,\n    .curle-secondary-btn {\n      width: 100%;\n    }\n\n    .curle-trust-row {\n      gap: 12px;\n    }\n\n    .curle-trust-row strong {\n      font-size: 17px;\n    }\n\n    .curle-trust-row small {\n      font-size: 9px;\n    }\n\n    .curle-spec-row {\n      flex-direction: column;\n      gap: 5px;\n    }\n\n    .curle-spec-row strong {\n      text-align: left;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    *,\n    *::before,\n    *::after {\n      animation-duration: .01ms !important;\n      animation-iteration-count: 1 !important;\n      scroll-behavior: auto !important;\n    }\n  }\n\u003c\/style\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"Curle","offers":[{"title":"Default Title","offer_id":67371168890925,"sku":null,"price":239.99,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0771\/1198\/4173\/files\/led-compact-mirror-marble_517ac132-1112-4fdc-8ed4-f1e941a2beaa.png?v=1787518608","url":"https:\/\/curle.co.za\/products\/curle%e2%84%a2-flawless-touch-up-mirror","provider":"Curle","version":"1.0","type":"link"}