{‘rendered’: ‘
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}
body{font-family:’DM Sans’,sans-serif;color:#0D0D0D;background:#FAFAF8;overflow-x:hidden;line-height:1.6}
img{max-width:100%;height:auto;display:block}
a{text-decoration:none;color:inherit}
:root{
–gold:#C9A84C;
–gold-light:#DFC66A;
–gold-dark:#A8862E;
–dark:#0D0D0D;
–dark-2:#1A1A1A;
–cream:#F8F6F0;
–cream-2:#F0ECE4;
–white:#FFFFFF;
–text:#2C2C2C;
–text-light:#6B6B6B;
–font-display:’Cormorant Garamond’,serif;
–font-body:’DM Sans’,sans-serif;
–section-pad:clamp(3rem, 8vw, 5rem);
–container-pad:clamp(1.25rem, 5vw, 2rem);
}
/* ===== REVEAL ===== */
.reveal{opacity:0;transform:translateY(30px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}
.reveal.visible{opacity:1;transform:translateY(0)}
/* ===== HERO ===== */
.svc-hero{position:relative;min-height:60vh;display:flex;align-items:center;justify-content:center;background:var(–dark);overflow:hidden;padding:5rem var(–container-pad) 3rem;text-align:center}
.svc-hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(13,13,13,.3) 0%,rgba(13,13,13,.9) 100%);z-index:1}
.svc-hero-glow{position:absolute;top:-20%;left:50%;transform:translateX(-50%);width:clamp(300px,60vw,600px);height:clamp(300px,60vw,600px);background:radial-gradient(circle,rgba(201,168,76,.1) 0%,transparent 70%);z-index:1;pointer-events:none}
.svc-hero-content{position:relative;z-index:2;max-width:680px}
.svc-hero-content .tag{display:inline-flex;align-items:center;gap:.5rem;background:rgba(201,168,76,.12);border:1px solid rgba(201,168,76,.25);color:var(–gold-light);padding:.35rem 1rem;border-radius:50px;font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;font-weight:500;margin-bottom:1.2rem}
.svc-hero-content h1{font-family:var(–font-display);font-size:clamp(2rem,5vw,3.2rem);font-weight:300;line-height:1.15;color:var(–white);margin-bottom:.8rem}
.svc-hero-content h1 em{font-style:italic;color:var(–gold)}
.svc-hero-content .sub{font-size:clamp(.95rem,1.6vw,1.1rem);color:rgba(255,255,255,.6);line-height:1.7;margin-bottom:2rem;max-width:520px;margin-left:auto;margin-right:auto}
.btn-gold{display:inline-flex;align-items:center;gap:.5rem;background:var(–gold);color:var(–dark);padding:.9rem 2rem;border-radius:50px;font-weight:600;font-size:.9rem;transition:all .35s cubic-bezier(.22,1,.36,1);border:none;cursor:pointer}
.btn-gold:hover{background:var(–gold-light);transform:translateY(-2px);box-shadow:0 10px 30px rgba(201,168,76,.2)}
.btn-outline-light{display:inline-flex;align-items:center;gap:.5rem;border:1.5px solid rgba(255,255,255,.2);color:var(–white);padding:.9rem 2rem;border-radius:50px;font-weight:500;font-size:.9rem;transition:all .35s cubic-bezier(.22,1,.36,1);background:transparent}
.btn-outline-light:hover{border-color:var(–gold);color:var(–gold);transform:translateY(-2px)}
.svc-actions{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center}
/* ===== SECTION ===== */
section{padding:var(–section-pad) var(–container-pad);max-width:1100px;margin:0 auto}
.section-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;color:var(–gold);font-weight:600;margin-bottom:.5rem;text-align:center}
.section-title{font-family:var(–font-display);font-size:clamp(1.6rem,4vw,2.4rem);font-weight:300;text-align:center;line-height:1.2;margin-bottom:.5rem}
.section-sub{text-align:center;color:var(–text-light);font-size:clamp(.85rem,1.3vw,.95rem);max-width:560px;margin:0 auto 2.5rem;line-height:1.7}
.section-dark{background:var(–dark);color:var(–white);max-width:100%;padding-left:var(–container-pad);padding-right:var(–container-pad)}
.section-dark .section-sub{color:rgba(255,255,255,.55)}
.section-cream{background:var(–cream);max-width:100%;padding-left:var(–container-pad);padding-right:var(–container-pad)}
.section-dark .section-title{color:var(–white)}
/* ===== CARDS GRID ===== */
.cards-2{display:grid;grid-template-columns:1fr;gap:1rem}
@media(min-width:600px){.cards-2{grid-template-columns:1fr 1fr}}
@media(min-width:900px){.cards-2{grid-template-columns:1fr 1fr 1fr}}
.card{background:var(–white);border-radius:14px;padding:1.6rem 1.4rem;transition:all .4s cubic-bezier(.22,1,.36,1);border:1px solid rgba(0,0,0,.04);box-shadow:0 2px 16px rgba(0,0,0,.03)}
.card:hover{transform:translateY(-3px);box-shadow:0 10px 30px rgba(0,0,0,.06);border-color:rgba(201,168,76,.12)}
.card .icon{font-size:1.6rem;margin-bottom:.7rem;display:block}
.card h3{font-family:var(–font-display);font-size:1.15rem;font-weight:500;margin-bottom:.4rem;color:var(–dark)}
.card p{font-size:.82rem;color:var(–text-light);line-height:1.6}
/* ===== PROCESS ===== */
.process{max-width:800px;margin:1.5rem auto 0}
.process-step{display:flex;gap:1.2rem;align-items:flex-start;margin-bottom:1.2rem;padding:1.2rem 1rem;border-radius:12px;transition:background .3s}
.process-step:hover{background:rgba(201,168,76,.04)}
.process-step .num{width:2.5rem;height:2.5rem;border-radius:50%;border:1.5px solid var(–gold);display:flex;align-items:center;justify-content:center;font-family:var(–font-display);font-size:1.1rem;color:var(–gold);flex-shrink:0;font-weight:500}
.process-step .content h3{font-family:var(–font-display);font-size:1.1rem;font-weight:500;margin-bottom:.2rem}
.process-step .content p{font-size:.85rem;color:var(–text-light);line-height:1.6}
.section-dark .process-step .content p{color:rgba(255,255,255,.55)}
.section-dark .process-step:hover{background:rgba(201,168,76,.06)}
/* ===== PRICING ===== */
.pricing-cards{display:grid;grid-template-columns:1fr;gap:1.2rem;max-width:700px;margin:0 auto}
@media(min-width:640px){.pricing-cards{grid-template-columns:repeat(3,1fr)}}
.pcard{background:var(–dark-2);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:2rem 1.5rem;text-align:center;transition:all .4s cubic-bezier(.22,1,.36,1);position:relative}
.pcard.featured{border-color:var(–gold);background:linear-gradient(180deg,rgba(201,168,76,.08) 0%,var(–dark-2) 100%)}
.pcard.featured .badge{position:absolute;top:.8rem;right:-2rem;background:var(–gold);color:var(–dark);padding:.25rem 2.5rem;font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600;transform:rotate(45deg)}
.pcard:hover{transform:translateY(-4px);border-color:rgba(201,168,76,.25);box-shadow:0 15px 40px rgba(0,0,0,.3)}
.pcard .name{font-family:var(–font-display);font-size:1.3rem;color:var(–white);font-weight:400;margin-bottom:.2rem}
.pcard .dur{font-size:.75rem;color:rgba(255,255,255,.35);text-transform:uppercase;letter-spacing:.08em;margin-bottom:1rem}
.pcard .price{font-family:var(–font-display);font-size:clamp(1.8rem,3vw,2.4rem);color:var(–gold);font-weight:500;margin-bottom:.3rem}
.pcard .note{font-size:.75rem;color:rgba(255,255,255,.35)}
.pcard .inc{font-size:.78rem;color:rgba(255,255,255,.5);margin-top:.8rem;line-height:1.5}
/* ===== FAQ ===== */
.faq{max-width:700px;margin:0 auto}
.faq-item{background:var(–white);border:1px solid rgba(0,0,0,.04);border-radius:12px;padding:1.2rem 1.4rem;margin-bottom:.7rem}
.faq-item h3{font-size:.85rem;color:var(–gold);font-weight:600;margin-bottom:.4rem;font-family:var(–font-body)}
.faq-item p{font-size:.82rem;color:var(–text-light);line-height:1.7}
.section-dark .faq-item{background:var(–dark-2);border-color:rgba(255,255,255,.06)}
.section-dark .faq-item p{color:rgba(255,255,255,.55)}
/* ===== CTA ===== */
.cta-section{text-align:center}
.section-dark h2.section-title{color:var(–gold)}
.cta-btns{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center;margin-top:1.5rem}
.cta-loc{color:rgba(255,255,255,.4);font-size:.8rem;margin-top:1.2rem;line-height:1.6}
/* ===== LINKS ===== */
.links-section{text-align:center;padding:2.5rem var(–container-pad)}
.links-section h2{font-family:var(–font-display);font-size:1.3rem;font-weight:400;margin-bottom:1.2rem}
.links-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;max-width:700px;margin:0 auto}
.links-grid a{background:var(–gold);color:var(–dark);padding:.5rem 1rem;border-radius:50px;font-size:.75rem;font-weight:600;transition:all .3s}
.links-grid a:hover{background:var(–dark);color:var(–gold);transform:translateY(-1px)}
.links-sub{margin-top:1rem;font-size:.8rem}
.links-sub a{color:var(–gold);margin:0 .4rem;font-weight:500}
/* ===== MOBILE ===== */
@media(max-width:480px){
.svc-hero h1{font-size:1.8rem}
.svc-hero-content .sub{font-size:.9rem}
.btn-gold,.btn-outline-light{font-size:.85rem;padding:.8rem 1.6rem;width:100%}
.svc-actions{flex-direction:column;align-items:center}
.card{padding:1.2rem 1rem}
.pcard{padding:1.5rem 1.2rem}
.faq-item{padding:1rem 1.2rem}
}
Back & Shoulder Massage in Gulshan Dhaka
Designed for Your Lifestyle
If any of these describe you, this treatment is exactly what you need
Desk Workers
8+ hours hunched over a laptop causes chronic upper back tension, rounded shoulders, and tech neck. Our massage reverses the damage.
Drivers & Commuters
Long hours gripping the wheel tightens shoulder blades and traps. Targeted pressure releases the stiffness.
Gym-Goers & Athletes
Post-workout recovery for back, traps, and deltoids. Reduces DOMS and improves range of motion.
Stress Sufferers
Stress accumulates in shoulders and upper back. Our massage lowers cortisol and resets your nervous system.
Chronic Pain Patients
Ongoing back pain, frozen shoulder, or stiff neck from poor posture or old injuries. We treat the root cause.
Frequent Travelers
Long flights and heavy luggage wreck your back. Recover with deep tissue work at our Gulshan spa.
What to Expect
A carefully sequenced session designed to release tension from the inside out
Consultation
Tell us your pain points and pressure preference. We assess your posture and identify problem areas.
Warm Oil Application
Warm aromatherapy oil is applied to prep your upper back and shoulders for deep work.
Deep Tissue Release
Targeted kneading, trigger point therapy, and cross-fiber friction on knots and tension bands.
Pressure Point Work
Acupressure on specific back and shoulder points to release energy blockages.
Stretching & Cool-Down
Gentle stretches to lengthen muscles, followed by warm towel compress and herbal tea.
Choose Your Duration
Flexible sessions to fit your schedule and needs
All sessions include aromatherapy oil, private room, and post-massage herbal tea
Why Choose Melody Thai Spa
3 branches, one standard of excellence
Certified Female Therapists
Trained in Thai, deep tissue, and sports massage with 3+ years of experience.
Private Rooms
Soundproof, private spaces. No shared areas, no interruptions.
Premium Oils
Choose lavender, eucalyptus, or lemongrass aromatherapy oil.
3 Locations
Road 55 (Westin), Road 41 (Lakeshore), Banani Road 11.
Hotel-Grade Hygiene
UV-sanitized rooms, hospital-standard cleaning, single-use linens.
Same-Day Booking
Walk in or WhatsApp. No appointment needed days ahead.
Common Questions
Is back and shoulder massage painful?
You may feel some discomfort when knots release — this is normal “good pain.” We adjust pressure throughout to keep you comfortable.
How is this different from a full body massage?
This targets your upper body only — back, shoulders, neck, upper arms. More efficient if your main issue is upper body tension.
How often should I come?
Chronic desk workers: weekly for first month, then bi-weekly. General wellness: every 2–4 weeks.
Can I add hot stones?
Yes! Combine with our hot stone massage for deeper heat penetration on stubborn knots.
What should I wear?
We provide disposable underwear and a robe. Professional draping is used throughout.
Do you treat frozen shoulder?
Yes. Our therapists work with frozen shoulder, stiff neck, scoliosis tension, and post-injury recovery.
Ready to Release the Tension?
Same-day booking available. Walk in or send a message.
Explore Our Massage Services
Explore Our Services
Book your session at spa.melodies.world/bookings or view current offers.
// Scroll reveal observer
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if(entry.isIntersecting){ entry.target.classList.add(‘visible’); }
});
}, { threshold: 0.1, rootMargin: ‘0px 0px -40px 0px’ });
document.addEventListener(‘DOMContentLoaded’, () => {
document.querySelectorAll(‘.reveal’).forEach(el => observer.observe(el));
});
‘, ‘protected’: False}