{"product_id":"sonora-luna-wrap-menstrual-heating-pad","title":"Sonora - Luna Wrap (Menstrual Heating Pad)","description":"\u003cbody\u003e\n\n\n\u003cmeta charset=\"UTF-8\"\u003e\n\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n\u003ctitle\u003eSonora Luna Wrap — Relief That Moves With You\u003c\/title\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:wght@500;600;700\u0026amp;family=Manrope:wght@400;500;600;700;800\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\u003cstyle\u003e\n  :root{\n    --plum:#2b1b2f;\n    --plum-deep:#1c1220;\n    --terracotta:#c97b5f;\n    --terracotta-light:#e0a487;\n    --gold:#d9b675;\n    --cream:#faf5ee;\n    --blush:#e8b4bc;\n    --moon:#efe9f2;\n    --ink:#3a2c3d;\n    --shadow: 0 20px 60px rgba(43,27,47,0.18);\n  }\n  *{box-sizing:border-box; margin:0; padding:0; -webkit-tap-highlight-color:transparent;}\n  html{scroll-behavior:smooth;}\n  body{\n    font-family:'Manrope', sans-serif;\n    background:var(--cream);\n    color:var(--ink);\n    overflow-x:hidden;\n    line-height:1.6;\n  }\n  h1,h2,h3,.serif{\n    font-family:'Cormorant Garamond', serif;\n    font-weight:600;\n    letter-spacing:0.3px;\n  }\n  a{text-decoration:none; color:inherit; touch-action:manipulation;}\n  img,svg{display:block; max-width:100%;}\n  .container{\n    max-width:1140px;\n    margin:0 auto;\n    padding:0 32px;\n  }\n  .eyebrow{\n    text-transform:uppercase;\n    font-size:12px;\n    letter-spacing:3px;\n    font-weight:700;\n    color:var(--terracotta);\n  }\n\n  .reveal{\n    opacity:0;\n    transform:translateY(36px);\n    transition:opacity 0.9s cubic-bezier(.16,.84,.44,1), transform 0.9s cubic-bezier(.16,.84,.44,1);\n  }\n  .reveal.in{\n    opacity:1;\n    transform:translateY(0);\n  }\n  .reveal.delay-1{transition-delay:.12s;}\n  .reveal.delay-2{transition-delay:.24s;}\n  .reveal.delay-3{transition-delay:.36s;}\n\n  header{\n    position:fixed; top:0; left:0; right:0; z-index:100;\n    display:flex; align-items:center; justify-content:space-between;\n    padding:22px 40px;\n    background:rgba(250,245,238,0.96);\n    border-bottom:1px solid rgba(43,27,47,0.06);\n    transition:padding .3s ease;\n  }\n  @supports (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){\n    header{\n      background:rgba(250,245,238,0.72);\n      backdrop-filter:blur(14px);\n      -webkit-backdrop-filter:blur(14px);\n    }\n  }\n  .brand{\n    display:flex; align-items:center; gap:10px;\n  }\n  .brand .moon-mark{\n    width:26px; height:26px; border-radius:50%;\n    background:radial-gradient(circle at 32% 32%, var(--gold), var(--terracotta) 70%);\n    box-shadow:0 0 18px rgba(217,182,117,0.7);\n    animation:pulseGlow 3.5s ease-in-out infinite;\n  }\n  .brand-text{\n    font-family:'Cormorant Garamond', serif;\n    font-size:22px;\n    letter-spacing:2px;\n    font-weight:700;\n    color:var(--plum);\n  }\n  .brand-text span{\n    display:block;\n    font-family:'Manrope', sans-serif;\n    font-size:9px;\n    letter-spacing:4px;\n    font-weight:600;\n    color:var(--terracotta);\n    margin-top:-2px;\n  }\n  nav ul{\n    list-style:none;\n    display:flex;\n    gap:36px;\n    font-size:13px;\n    font-weight:600;\n    letter-spacing:0.5px;\n  }\n  nav a{\n    position:relative;\n    color:var(--plum);\n    opacity:0.75;\n    transition:opacity .25s ease;\n  }\n  nav a::after{\n    content:'';\n    position:absolute; left:0; bottom:-6px;\n    width:0; height:1.5px;\n    background:var(--terracotta);\n    transition:width .3s ease;\n  }\n  nav a:hover{opacity:1;}\n  nav a:hover::after{width:100%;}\n  .nav-cta{\n    padding:11px 24px;\n    background:var(--plum);\n    color:var(--cream) !important;\n    border-radius:999px;\n    font-size:12px;\n    letter-spacing:1px;\n    font-weight:700;\n    opacity:1 !important;\n    box-shadow:0 8px 20px rgba(43,27,47,0.25);\n    transition:transform .3s ease, box-shadow .3s ease, background .3s ease;\n  }\n  .nav-cta::after{display:none;}\n  .nav-cta:hover{\n    transform:translateY(-2px);\n    background:var(--terracotta);\n    box-shadow:0 12px 28px rgba(201,123,95,0.4);\n  }\n\n  .hero{\n    position:relative;\n    min-height:100vh;\n    min-height:100svh;\n    display:flex;\n    align-items:center;\n    overflow:hidden;\n    background:\n      radial-gradient(circle at 78% 18%, rgba(217,182,117,0.35), transparent 45%),\n      radial-gradient(circle at 15% 85%, rgba(232,180,188,0.35), transparent 45%),\n      linear-gradient(180deg, #fbf7f1 0%, #f6ede1 100%);\n    padding-top:80px;\n  }\n  .hero-grid{\n    display:grid;\n    grid-template-columns:1.05fr 0.95fr;\n    align-items:center;\n    gap:40px;\n    width:100%;\n  }\n  .hero-copy h1{\n    font-size:clamp(30px, 8.6vw, 68px);\n    color:var(--plum);\n    line-height:1.08;\n    margin:18px 0 22px;\n  }\n  .hero-copy h1 em{\n    font-style:normal;\n    background:linear-gradient(100deg, var(--terracotta), var(--gold) 60%, var(--terracotta-light));\n    -webkit-background-clip:text;\n    background-clip:text;\n    color:transparent;\n    background-size:200% auto;\n    animation:shine 5s linear infinite;\n  }\n  @supports not ((-webkit-background-clip:text) or (background-clip:text)){\n    .hero-copy h1 em{ background:none; color:var(--terracotta); }\n  }\n  .hero-copy p{\n    font-size:17px;\n    max-width:460px;\n    color:var(--ink);\n    opacity:0.85;\n    margin-bottom:34px;\n  }\n  .hero-actions{\n    display:flex;\n    align-items:center;\n    flex-wrap:wrap;\n    row-gap:16px;\n    gap:22px;\n  }\n  .btn-primary{\n    position:relative;\n    padding:17px 36px;\n    background:var(--plum);\n    color:var(--cream);\n    border-radius:999px;\n    font-weight:700;\n    font-size:14px;\n    letter-spacing:0.5px;\n    overflow:hidden;\n    isolation:isolate;\n    box-shadow:0 14px 30px rgba(43,27,47,0.28);\n    transition:transform .35s ease;\n    display:inline-block;\n  }\n  .btn-primary::before{\n    content:'';\n    position:absolute; inset:0;\n    background:linear-gradient(120deg, var(--terracotta), var(--gold));\n    z-index:-1;\n    transform:translateX(-101%);\n    transition:transform .45s cubic-bezier(.16,.84,.44,1);\n  }\n  .btn-primary:hover{transform:translateY(-3px);}\n  .btn-primary:hover::before{transform:translateX(0);}\n  .btn-ghost{\n    font-size:13px;\n    font-weight:700;\n    letter-spacing:0.5px;\n    color:var(--plum);\n    display:flex;\n    align-items:center;\n    gap:8px;\n  }\n  .btn-ghost .ring{\n    width:34px; height:34px;\n    border:1.5px solid var(--plum);\n    border-radius:50%;\n    display:flex; align-items:center; justify-content:center;\n    transition:background .3s ease, transform .3s ease;\n  }\n  .btn-ghost:hover .ring{background:var(--plum); color:var(--cream); transform:rotate(45deg);}\n\n  .hero-visual{\n    position:relative;\n    height:520px;\n    display:flex;\n    align-items:center;\n    justify-content:center;\n  }\n  .orbit{\n    position:absolute;\n    border:1px dashed rgba(43,27,47,0.18);\n    border-radius:50%;\n  }\n  .orbit-1{width:380px; height:380px; animation:spin 26s linear infinite;}\n  .orbit-2{width:470px; height:470px; animation:spin 40s linear infinite reverse;}\n  .orbit-dot{\n    position:absolute; top:-6px; left:calc(50% - 6px);\n    width:12px; height:12px; border-radius:50%;\n    background:var(--gold);\n    box-shadow:0 0 14px rgba(217,182,117,0.9);\n  }\n  .moon-core{\n    position:relative;\n    width:250px; height:250px;\n    border-radius:50%;\n    background:\n      radial-gradient(circle at 34% 30%, #fff5e6, var(--gold) 38%, var(--terracotta) 75%, var(--plum) 100%);\n    box-shadow:\n      0 0 0 14px rgba(255,255,255,0.35),\n      0 30px 70px rgba(201,123,95,0.45);\n    animation:floaty 6s ease-in-out infinite;\n    display:flex; align-items:center; justify-content:center;\n  }\n  .moon-core span{\n    font-family:'Cormorant Garamond', serif;\n    font-size:15px;\n    letter-spacing:3px;\n    color:#fff;\n    text-transform:uppercase;\n    text-shadow:0 2px 10px rgba(0,0,0,0.25);\n  }\n  .float-badge{\n    position:absolute;\n    background:#fff;\n    padding:12px 18px;\n    border-radius:16px;\n    box-shadow:var(--shadow);\n    font-size:12.5px;\n    font-weight:700;\n    color:var(--plum);\n    display:flex; align-items:center; gap:8px;\n    animation:floaty 5s ease-in-out infinite;\n  }\n  .float-badge.b1{top:6%; left:-2%; animation-delay:.4s;}\n  .float-badge.b2{bottom:10%; right:-4%; animation-delay:1.2s;}\n  .float-badge .dot{width:8px; height:8px; border-radius:50%; background:#7fbf8e;}\n\n  .scroll-cue{\n    position:absolute; bottom:34px; left:50%; transform:translateX(-50%);\n    display:flex; flex-direction:column; align-items:center; gap:8px;\n    font-size:10.5px; letter-spacing:2px; font-weight:700; color:var(--plum); opacity:0.55;\n  }\n  .scroll-cue .line{\n    width:1px; height:36px; background:var(--plum);\n    position:relative; overflow:hidden;\n  }\n  .scroll-cue .line::after{\n    content:'';\n    position:absolute; top:-100%; left:0; width:100%; height:100%;\n    background:var(--terracotta);\n    animation:scrollLine 2.2s ease-in-out infinite;\n  }\n\n  section{padding:120px 0;}\n  #benefits, #lifestyle, #specs, #shop{scroll-margin-top:96px;}\n  .section-head{\n    max-width:640px;\n    margin:0 auto 64px;\n    text-align:center;\n  }\n  .section-head h2{\n    font-size:clamp(30px,3.6vw,44px);\n    color:var(--plum);\n    margin-top:12px;\n  }\n  .section-head p{\n    margin-top:16px;\n    font-size:15.5px;\n    opacity:0.75;\n  }\n\n  .benefits{\n    background:linear-gradient(180deg, #fff 0%, #fbf6ef 100%);\n  }\n  .benefit-grid{\n    display:grid;\n    grid-template-columns:repeat(3, 1fr);\n    gap:28px;\n  }\n  .benefit-card{\n    background:#fff;\n    border-radius:24px;\n    padding:38px 30px;\n    box-shadow:0 10px 40px rgba(43,27,47,0.06);\n    border:1px solid rgba(43,27,47,0.05);\n    transition:transform .45s cubic-bezier(.16,.84,.44,1), box-shadow .45s ease;\n    position:relative;\n    overflow:hidden;\n  }\n  .benefit-card::before{\n    content:'';\n    position:absolute; top:-40%; right:-40%;\n    width:180px; height:180px;\n    background:radial-gradient(circle, rgba(217,182,117,0.25), transparent 70%);\n    transition:transform .5s ease;\n  }\n  .benefit-card:hover{\n    transform:translateY(-10px);\n    box-shadow:0 26px 60px rgba(43,27,47,0.14);\n  }\n  .benefit-card:hover::before{transform:scale(1.4);}\n  .benefit-icon{\n    width:58px; height:58px;\n    border-radius:16px;\n    display:flex; align-items:center; justify-content:center;\n    font-size:26px;\n    margin-bottom:22px;\n    background:linear-gradient(135deg, var(--terracotta-light), var(--gold));\n    box-shadow:0 10px 24px rgba(201,123,95,0.35);\n    animation:softPulse 3.2s ease-in-out infinite;\n  }\n  .benefit-card h3{\n    font-size:22px;\n    color:var(--plum);\n    margin-bottom:12px;\n  }\n  .benefit-card p{\n    font-size:14.5px;\n    color:var(--ink);\n    opacity:0.78;\n  }\n\n  .lifestyle{\n    background:var(--plum);\n    color:var(--moon);\n    position:relative;\n    overflow:hidden;\n  }\n  .lifestyle::before{\n    content:'';\n    position:absolute; top:-20%; left:-10%;\n    width:500px; height:500px;\n    background:radial-gradient(circle, rgba(217,182,117,0.18), transparent 70%);\n  }\n  .lifestyle::after{\n    content:'';\n    position:absolute; bottom:-25%; right:-10%;\n    width:520px; height:520px;\n    background:radial-gradient(circle, rgba(232,180,188,0.14), transparent 70%);\n  }\n  .lifestyle-grid{\n    display:grid;\n    grid-template-columns:0.9fr 1.1fr;\n    gap:64px;\n    align-items:center;\n    position:relative;\n    z-index:2;\n  }\n  .wrap-visual{\n    position:relative;\n    height:420px;\n    display:flex; align-items:center; justify-content:center;\n  }\n  .wrap-shape{\n    width:230px; height:340px;\n    border-radius:50% 50% 46% 46% \/ 60% 60% 40% 40%;\n    background:linear-gradient(160deg, var(--terracotta-light), var(--terracotta) 55%, var(--plum-deep));\n    box-shadow:0 40px 90px rgba(0,0,0,0.4);\n    position:relative;\n    animation:floaty 7s ease-in-out infinite;\n  }\n  .wrap-shape .glow-line{\n    position:absolute; inset:18px;\n    border-radius:inherit;\n    border:1.5px solid rgba(255,255,255,0.35);\n  }\n  .heat-wave{\n    position:absolute; inset:0;\n    border-radius:inherit;\n    background:radial-gradient(circle at 50% 40%, rgba(255,220,170,0.55), transparent 60%);\n    animation:heatPulse 3s ease-in-out infinite;\n  }\n  .lifestyle-copy .eyebrow{color:var(--gold);}\n  .lifestyle-copy h2{\n    font-size:clamp(28px,3.4vw,40px);\n    margin:14px 0 20px;\n    color:#fff;\n  }\n  .lifestyle-copy p{\n    font-size:15.5px;\n    opacity:0.82;\n    max-width:460px;\n    margin-bottom:18px;\n  }\n  .tag-row{\n    display:flex; flex-wrap:wrap; gap:10px; margin-top:26px;\n  }\n  .tag{\n    padding:9px 16px;\n    border:1px solid rgba(255,255,255,0.25);\n    border-radius:999px;\n    font-size:12px;\n    letter-spacing:0.5px;\n    font-weight:600;\n    color:#fff;\n    background:rgba(255,255,255,0.05);\n    transition:background .3s ease, transform .3s ease;\n  }\n  .tag:hover{background:rgba(217,182,117,0.25); transform:translateY(-2px);}\n\n  .difference{\n    text-align:center;\n    background:linear-gradient(120deg, #fbf1e4, #f6e4d9);\n    position:relative;\n  }\n  .difference .container{max-width:780px;}\n  .difference h2{\n    font-size:clamp(28px,3.6vw,42px);\n    color:var(--plum);\n    margin:14px 0 20px;\n  }\n  .difference p{\n    font-size:16px;\n    opacity:0.8;\n  }\n  .shimmer-underline{\n    width:70px; height:3px;\n    margin:26px auto 0;\n    background:linear-gradient(90deg, var(--terracotta), var(--gold), var(--terracotta));\n    background-size:200% auto;\n    animation:shine 4s linear infinite;\n    border-radius:2px;\n  }\n\n  .specs{background:#fff;}\n  .spec-grid{\n    display:grid;\n    grid-template-columns:repeat(3, 1fr);\n    gap:24px;\n  }\n  .spec-card{\n    border:1px solid rgba(43,27,47,0.08);\n    border-radius:22px;\n    padding:30px 26px;\n    transition:transform .4s cubic-bezier(.16,.84,.44,1), border-color .4s ease, box-shadow .4s ease;\n  }\n  .spec-card:hover{\n    transform:translateY(-6px);\n    border-color:transparent;\n    box-shadow:0 20px 46px rgba(43,27,47,0.1);\n  }\n  .spec-top{\n    display:flex; align-items:center; gap:12px; margin-bottom:18px;\n  }\n  .spec-emoji{font-size:22px;}\n  .spec-card h4{\n    font-family:'Manrope',sans-serif;\n    font-size:13px;\n    letter-spacing:1px;\n    text-transform:uppercase;\n    font-weight:800;\n    color:var(--plum);\n  }\n  .spec-card .val{\n    font-size:15px;\n    color:var(--ink);\n    opacity:0.85;\n    margin-bottom:18px;\n    line-height:1.5;\n  }\n\n  .heat-gauge{\n    height:8px; border-radius:6px;\n    background:#f1e6da;\n    position:relative; overflow:hidden;\n  }\n  .heat-gauge::after{\n    content:'';\n    position:absolute; top:0; left:0; height:100%; width:40%;\n    border-radius:6px;\n    background:linear-gradient(90deg, var(--gold), var(--terracotta));\n    animation:gaugeFill 4s ease-in-out infinite;\n  }\n  .vibe-bars{\n    display:flex; align-items:flex-end; gap:5px; height:26px;\n  }\n  .vibe-bars span{\n    width:6px; border-radius:3px;\n    background:linear-gradient(180deg, var(--terracotta), var(--gold));\n    animation:bounce 1.1s ease-in-out infinite;\n  }\n  .vibe-bars span:nth-child(1){height:40%; animation-delay:0s;}\n  .vibe-bars span:nth-child(2){height:80%; animation-delay:.15s;}\n  .vibe-bars span:nth-child(3){height:55%; animation-delay:.3s;}\n  .vibe-bars span:nth-child(4){height:95%; animation-delay:.45s;}\n  .vibe-bars span:nth-child(5){height:65%; animation-delay:.6s;}\n  .timer-clock{\n    width:28px; height:28px; border-radius:50%;\n    border:2px solid var(--terracotta);\n    position:relative;\n  }\n  .timer-clock::after{\n    content:'';\n    position:absolute; top:50%; left:50%;\n    width:9px; height:1.5px;\n    background:var(--plum);\n    transform-origin:left center;\n    animation:tick 6s linear infinite;\n  }\n  .battery-shell{\n    width:34px; height:16px;\n    border:2px solid var(--terracotta);\n    border-radius:3px;\n    position:relative;\n    display:flex; align-items:center; padding:2px; gap:2px;\n  }\n  .battery-shell::after{\n    content:'';\n    position:absolute; right:-5px; top:4px;\n    width:3px; height:8px;\n    background:var(--terracotta);\n    border-radius:0 2px 2px 0;\n  }\n  .battery-shell i{\n    display:block; flex:1; height:100%;\n    background:var(--gold);\n    border-radius:1px;\n    animation:battFill 3s ease-in-out infinite;\n  }\n  .battery-shell i:nth-child(2){animation-delay:.3s;}\n  .battery-shell i:nth-child(3){animation-delay:.6s;}\n  .control-keys{display:flex; gap:8px;}\n  .control-keys span{\n    width:30px; height:30px; border-radius:9px;\n    background:var(--moon);\n    display:flex; align-items:center; justify-content:center;\n    font-size:13px;\n    box-shadow:inset 0 0 0 1px rgba(43,27,47,0.08);\n    transition:background .3s ease, transform .3s ease;\n  }\n  .spec-card:hover .control-keys span{\n    animation:keyPress 1.6s ease-in-out infinite;\n  }\n  .control-keys span:nth-child(2){animation-delay:.15s !important;}\n  .control-keys span:nth-child(3){animation-delay:.3s !important;}\n\n  .final-cta{\n    position:relative;\n    background:linear-gradient(160deg, var(--plum), var(--plum-deep));\n    color:#fff;\n    text-align:center;\n    overflow:hidden;\n  }\n  .final-cta::before{\n    content:'';\n    position:absolute; inset:0;\n    background:radial-gradient(circle at 50% 0%, rgba(217,182,117,0.25), transparent 55%);\n  }\n  .final-cta .container{position:relative; z-index:2;}\n  .final-cta h2{\n    font-size:clamp(30px,4vw,48px);\n    margin:14px 0 26px;\n  }\n  .final-cta p{\n    opacity:0.78;\n    max-width:480px;\n    margin:0 auto 34px;\n    font-size:15.5px;\n  }\n  .price-row{\n    display:flex; align-items:baseline; justify-content:center; gap:12px; margin-bottom:30px;\n  }\n  .price-row .now{font-size:34px; font-family:'Cormorant Garamond', serif; font-weight:700; color:var(--gold);}\n  .price-row .was{font-size:18px; text-decoration:line-through; opacity:0.5;}\n\n  footer{\n    background:var(--plum-deep);\n    color:rgba(255,255,255,0.55);\n    text-align:center;\n    padding:28px 20px;\n    font-size:12.5px;\n    letter-spacing:0.5px;\n  }\n\n  @keyframes pulseGlow{\n    0%,100%{box-shadow:0 0 10px rgba(217,182,117,0.6);}\n    50%{box-shadow:0 0 24px rgba(217,182,117,0.95);}\n  }\n  @keyframes shine{\n    0%{background-position:0% center;}\n    100%{background-position:200% center;}\n  }\n  @keyframes spin{\n    from{transform:rotate(0deg);} to{transform:rotate(360deg);}\n  }\n  @keyframes floaty{\n    0%,100%{transform:translateY(0px);}\n    50%{transform:translateY(-16px);}\n  }\n  @keyframes scrollLine{\n    0%{top:-100%;} 60%{top:100%;} 100%{top:100%;}\n  }\n  @keyframes softPulse{\n    0%,100%{transform:scale(1);}\n    50%{transform:scale(1.08);}\n  }\n  @keyframes heatPulse{\n    0%,100%{opacity:0.5; transform:scale(1);}\n    50%{opacity:0.9; transform:scale(1.06);}\n  }\n  @keyframes gaugeFill{\n    0%{width:15%;} 50%{width:85%;} 100%{width:15%;}\n  }\n  @keyframes bounce{\n    0%,100%{transform:scaleY(0.5);} 50%{transform:scaleY(1);}\n  }\n  @keyframes tick{\n    from{transform:rotate(0deg);} to{transform:rotate(360deg);}\n  }\n  @keyframes battFill{\n    0%,100%{opacity:0.3;} 50%{opacity:1;}\n  }\n  @keyframes keyPress{\n    0%,100%{transform:translateY(0); background:var(--moon);}\n    50%{transform:translateY(-3px); background:var(--terracotta-light);}\n  }\n\n  @media (max-width:960px){\n    nav ul{display:none;}\n    .hero-grid, .lifestyle-grid{grid-template-columns:1fr;}\n    .hero-visual{height:360px; margin-top:20px;}\n    .benefit-grid, .spec-grid{grid-template-columns:1fr 1fr;}\n    .wrap-visual{height:340px;}\n  }\n  @media (max-width:600px){\n    html{-webkit-text-size-adjust:100%;}\n    .container{padding:0 20px;}\n    header{padding:14px 16px;}\n    .brand-text{font-size:17px;}\n    .brand-text span{font-size:7.5px; letter-spacing:2.5px;}\n    .nav-cta{padding:13px 20px; font-size:11.5px; line-height:1;}\n    section{padding:56px 0;}\n    #benefits, #lifestyle, #specs, #shop{scroll-margin-top:72px;}\n    .hero{min-height:auto; padding-top:88px; padding-bottom:52px;}\n    .hero-copy p{font-size:15.5px; max-width:100%; margin-bottom:28px;}\n    .hero-actions{gap:14px; justify-content:center;}\n    .hero-copy{text-align:center;}\n    .btn-primary{padding:16px 32px; font-size:13.5px;}\n    .btn-ghost{font-size:12.5px;}\n    .hero-visual{height:210px; margin-top:4px;}\n    .orbit{display:none;}\n    .moon-core{width:180px; height:180px; box-shadow:0 0 0 10px rgba(255,255,255,0.35), 0 20px 50px rgba(201,123,95,0.45);}\n    .moon-core span{font-size:13px;}\n    .float-badge{display:none;}\n    .scroll-cue{display:none;}\n    .section-head{margin-bottom:36px;}\n    .section-head p{font-size:14.5px;}\n    .benefit-grid, .spec-grid{grid-template-columns:1fr; gap:14px;}\n    .benefit-card{padding:26px 22px;}\n    .benefit-icon{width:48px; height:48px; font-size:21px; margin-bottom:16px;}\n    .lifestyle-grid{gap:32px;}\n    .wrap-visual{height:200px;}\n    .wrap-shape{width:140px; height:196px;}\n    .tag-row{justify-content:center; gap:8px;}\n    .difference p{font-size:14.5px;}\n    .spec-card{padding:24px 20px;}\n    .price-row{margin-bottom:24px;}\n    .price-row .now{font-size:27px;}\n    .price-row .was{font-size:14.5px;}\n    .final-cta p{font-size:14.5px;}\n    .final-cta .btn-primary{width:100%; max-width:320px;}\n  }\n  @media (max-width:380px){\n    .brand-text{font-size:15px;}\n    .btn-primary{padding:15px 26px; font-size:13px;}\n    .price-row .now{font-size:24px;}\n    .benefit-card{padding:24px 18px;}\n  }\n\u003c\/style\u003e\n\n\n\n\u003cheader\u003e\n  \u003cdiv class=\"brand\"\u003e\n    \u003cdiv class=\"moon-mark\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"brand-text\"\u003eSONORA\u003cspan\u003eLUNA WRAP\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cnav\u003e\n    \u003cul\u003e\n      \u003cli\u003e\u003ca href=\"#benefits\"\u003eBenefits\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"#lifestyle\"\u003eLifestyle\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"#specs\"\u003eSpecs\u003c\/a\u003e\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/nav\u003e\n  \u003ca href=\"#shop\" class=\"nav-cta\"\u003eShop Now\u003c\/a\u003e\n\u003c\/header\u003e\n\n\u003csection class=\"hero\"\u003e\n  \u003cdiv class=\"container hero-grid\"\u003e\n    \u003cdiv class=\"hero-copy\"\u003e\n      \u003cdiv class=\"eyebrow reveal in\"\u003eSonora Luna Wrap\u003c\/div\u003e\n      \u003ch1 class=\"reveal in delay-1\"\u003eRelief that \u003cem\u003emoves\u003c\/em\u003e with you\u003c\/h1\u003e\n      \u003cp class=\"reveal in delay-2\"\u003eYour cycle shouldn't slow you down. The Luna Wrap delivers targeted, soothing heat exactly where you need it — easing cramps, relaxing tension, and helping you feel like yourself again, faster.\u003c\/p\u003e\n      \u003cdiv class=\"hero-actions reveal in delay-3\"\u003e\n        \u003ca href=\"#shop\" class=\"btn-primary\"\u003eShop the Luna Wrap\u003c\/a\u003e\n        \u003ca href=\"#benefits\" class=\"btn-ghost\"\u003e\u003cspan class=\"ring\"\u003e↓\u003c\/span\u003e See the benefits\u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"hero-visual\"\u003e\n      \u003cdiv class=\"orbit orbit-1\"\u003e\u003cdiv class=\"orbit-dot\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n      \u003cdiv class=\"orbit orbit-2\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"moon-core\"\u003e\u003cspan\u003eLuna\u003c\/span\u003e\u003c\/div\u003e\n      \u003cdiv class=\"float-badge b1\"\u003e\n\u003cspan class=\"dot\"\u003e\u003c\/span\u003e 5 Heat Levels\u003c\/div\u003e\n      \u003cdiv class=\"float-badge b2\"\u003e\n\u003cspan class=\"dot\"\u003e\u003c\/span\u003e Cordless \u0026amp; Rechargeable\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"scroll-cue\"\u003e\n\u003cspan\u003eSCROLL\u003c\/span\u003e\u003cspan class=\"line\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"benefits\" id=\"benefits\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"section-head reveal\"\u003e\n      \u003cdiv class=\"eyebrow\"\u003eWhat You'll Feel\u003c\/div\u003e\n      \u003ch2\u003eComfort, engineered around your cycle\u003c\/h2\u003e\n      \u003cp\u003eThree ways the Luna Wrap works with your body, not against it.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"benefit-grid\"\u003e\n      \u003cdiv class=\"benefit-card reveal\"\u003e\n        \u003cdiv class=\"benefit-icon\"\u003e🔥\u003c\/div\u003e\n        \u003ch3\u003eInstant Cramp Relief\u003c\/h3\u003e\n        \u003cp\u003eDeep, penetrating warmth relaxes uterine muscles and reduces pain within minutes.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"benefit-card reveal delay-1\"\u003e\n        \u003cdiv class=\"benefit-icon\"\u003e🌸\u003c\/div\u003e\n        \u003ch3\u003eLess Bloating \u0026amp; Tension\u003c\/h3\u003e\n        \u003cp\u003eGentle heat improves circulation and soothes lower back and abdominal discomfort.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"benefit-card reveal delay-2\"\u003e\n        \u003cdiv class=\"benefit-icon\"\u003e🧘\u003c\/div\u003e\n        \u003ch3\u003eCalm On Demand\u003c\/h3\u003e\n        \u003cp\u003eA ritual of warmth that signals your body to slow down and recover.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"lifestyle\" id=\"lifestyle\"\u003e\n  \u003cdiv class=\"container lifestyle-grid\"\u003e\n    \u003cdiv class=\"wrap-visual reveal\"\u003e\n      \u003cdiv class=\"wrap-shape\"\u003e\n        \u003cdiv class=\"heat-wave\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"glow-line\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"lifestyle-copy\"\u003e\n      \u003cdiv class=\"eyebrow reveal\"\u003eDesigned for Your Life\u003c\/div\u003e\n      \u003ch2 class=\"reveal delay-1\"\u003eSlim. Flexible. Discreet.\u003c\/h2\u003e\n      \u003cp class=\"reveal delay-2\"\u003eWear it under clothing and it fits seamlessly into your day — whether you're working from home, heading out, or simply resting. No cords. No compromise.\u003c\/p\u003e\n      \u003cdiv class=\"tag-row reveal delay-3\"\u003e\n        \u003cspan class=\"tag\"\u003eNo Cords\u003c\/span\u003e\n        \u003cspan class=\"tag\"\u003eSkin-Safe Materials\u003c\/span\u003e\n        \u003cspan class=\"tag\"\u003eBreathable Fabric\u003c\/span\u003e\n        \u003cspan class=\"tag\"\u003eWear Under Clothing\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"difference\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"reveal\"\u003e\n      \u003cdiv class=\"eyebrow\"\u003eThe Sonora Difference\u003c\/div\u003e\n      \u003ch2\u003eThe self-care essential your cycle has always deserved\u003c\/h2\u003e\n      \u003cp\u003eCrafted with skin-safe, breathable materials and precision heat control — every Luna Wrap is built to feel less like a device, and more like a ritual.\u003c\/p\u003e\n      \u003cdiv class=\"shimmer-underline\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"specs\" id=\"specs\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"section-head reveal\"\u003e\n      \u003cdiv class=\"eyebrow\"\u003eProduct Specifications\u003c\/div\u003e\n      \u003ch2\u003ePrecision, built in\u003c\/h2\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"spec-grid\"\u003e\n      \u003cdiv class=\"spec-card reveal\"\u003e\n        \u003cdiv class=\"spec-top\"\u003e\n\u003cspan class=\"spec-emoji\"\u003e📏\u003c\/span\u003e\u003ch4\u003eDimensions\u003c\/h4\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"val\"\u003e18cm × 8.2cm (7.09\" × 3.23\")\u003cbr\u003ePad depth: 3cm (1.18\")\u003c\/div\u003e\n        \u003cdiv class=\"heat-gauge\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"spec-card reveal delay-1\"\u003e\n        \u003cdiv class=\"spec-top\"\u003e\n\u003cspan class=\"spec-emoji\"\u003e🌡️\u003c\/span\u003e\u003ch4\u003eHeat Settings\u003c\/h4\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"val\"\u003e5 levels — 45° \/ 50° \/ 55° \/ 60° \/ 65°C\u003c\/div\u003e\n        \u003cdiv class=\"heat-gauge\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"spec-card reveal delay-2\"\u003e\n        \u003cdiv class=\"spec-top\"\u003e\n\u003cspan class=\"spec-emoji\"\u003e📳\u003c\/span\u003e\u003ch4\u003eVibration Modes\u003c\/h4\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"val\"\u003e4 modes — M1, M2, M3, M4\u003c\/div\u003e\n        \u003cdiv class=\"vibe-bars\"\u003e\n\u003cspan\u003e\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"spec-card reveal\"\u003e\n        \u003cdiv class=\"spec-top\"\u003e\n\u003cspan class=\"spec-emoji\"\u003e⏲️\u003c\/span\u003e\u003ch4\u003eSmart Timer\u003c\/h4\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"val\"\u003e15 or 30 minute auto-off\u003c\/div\u003e\n        \u003cdiv class=\"timer-clock\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"spec-card reveal delay-1\"\u003e\n        \u003cdiv class=\"spec-top\"\u003e\n\u003cspan class=\"spec-emoji\"\u003e🔋\u003c\/span\u003e\u003ch4\u003eBattery\u003c\/h4\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"val\"\u003eBuilt-in rechargeable battery with LED level indicator\u003c\/div\u003e\n        \u003cdiv class=\"battery-shell\"\u003e\n\u003ci\u003e\u003c\/i\u003e\u003ci\u003e\u003c\/i\u003e\u003ci\u003e\u003c\/i\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"spec-card reveal delay-2\"\u003e\n        \u003cdiv class=\"spec-top\"\u003e\n\u003cspan class=\"spec-emoji\"\u003e🔧\u003c\/span\u003e\u003ch4\u003eControls\u003c\/h4\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"val\"\u003eVibration key, Power\/Timer key, Temperature key\u003c\/div\u003e\n        \u003cdiv class=\"control-keys\"\u003e\n\u003cspan\u003e📳\u003c\/span\u003e\u003cspan\u003e⏻\u003c\/span\u003e\u003cspan\u003e🌡️\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"final-cta\" id=\"shop\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"eyebrow reveal\" style=\"color:var(--gold);\"\u003eReady When You Are\u003c\/div\u003e\n    \u003ch2 class=\"reveal delay-1\"\u003eFeel like yourself again, faster\u003c\/h2\u003e\n    \u003cp class=\"reveal delay-2\"\u003eJoin the ritual. The Luna Wrap ships fully charged and ready to soothe.\u003c\/p\u003e\n    \u003cdiv class=\"price-row reveal delay-3\"\u003e\n      \u003cspan class=\"was\"\u003eR 1,200\u003c\/span\u003e\n      \u003cspan class=\"now\"\u003eR 599\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003ca href=\"#\" class=\"btn-primary reveal delay-3\"\u003eAdd to Cart\u003c\/a\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cfooter\u003e\n  © 2026 Sonora Luna Wrap. Warmth, redefined.\n\u003c\/footer\u003e\n\n\u003cscript\u003e\n  const revealEls = document.querySelectorAll('.reveal');\n  const io = new IntersectionObserver((entries) =\u003e {\n    entries.forEach(entry =\u003e {\n      if(entry.isIntersecting){\n        entry.target.classList.add('in');\n        io.unobserve(entry.target);\n      }\n    });\n  }, { threshold: 0.15 });\n  revealEls.forEach(el =\u003e io.observe(el));\n\n  const heroVisual = document.querySelector('.hero-visual');\n  const canHover = window.matchMedia('(hover: hover) and (pointer: fine)').matches;\n  if(heroVisual \u0026\u0026 canHover){\n    document.addEventListener('mousemove', (e) =\u003e {\n      const x = (e.clientX \/ window.innerWidth - 0.5) * 14;\n      const y = (e.clientY \/ window.innerHeight - 0.5) * 14;\n      heroVisual.style.transform = `translate(${x}px, ${y}px)`;\n    });\n  }\n\u003c\/script\u003e\n\n\n\u003c\/body\u003e","brand":"Sonora Skincare","offers":[{"title":"Default Title","offer_id":54528269615379,"sku":null,"price":599.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1000\/1586\/6131\/files\/sonora-heating-pad-luxury-editorial.png?v=1785933310","url":"https:\/\/sonora.co.za\/products\/sonora-luna-wrap-menstrual-heating-pad","provider":"Sonora Skincare","version":"1.0","type":"link"}