Skip to content
Couple's Passport

Sao Paulo City

/* ========================================================= MANGO GETAWAY — SÃO PAULO CITY v1 ========================================================= */ /* ========================================================= 01. ROOT / VARIABLES ========================================================= */ #mg-sp { --mg-bg: #14110e; --mg-bg-2: #1b1713; --mg-bg-3: #211c17; --mg-bg-4: #2b241d; --mg-cream: #fff5e6; --mg-cream-soft: #e8dccb; --mg-muted: #a99d8e; --mg-mango: #f4a641; --mg-mango-dark: #d87916; --mg-line: rgba(255, 245, 230, 0.14); --mg-line-strong: rgba(255, 245, 230, 0.25); --mg-display: "Cormorant Garamond", Georgia, serif; --mg-body: "DM Sans", Arial, sans-serif; --mg-mono: "DM Mono", monospace; --mg-radius: 4px; --mg-max: 1240px; position: relative; width: 100%; overflow: hidden; background: var(--mg-bg); color: var(--mg-cream); font-family: var(--mg-body); } /* ========================================================= 02. RESET / GLOBAL ========================================================= */ #mg-sp *, #mg-sp *::before, #mg-sp *::after { box-sizing: border-box; } #mg-sp a { color: inherit; text-decoration: none; } #mg-sp button { font: inherit; } #mg-sp h1, #mg-sp h2, #mg-sp h3, #mg-sp p { margin-top: 0; } .mg-sp-container { width: min(calc(100% - 48px), var(--mg-max)); margin-inline: auto; } /* ========================================================= 03. SHARED TYPOGRAPHY ========================================================= */ .mg-sp-section-label, .mg-sp-eyebrow { margin-bottom: 18px; font-family: var(--mg-mono); font-size: 11px; line-height: 1.4; letter-spacing: 0.18em; text-transform: uppercase; color: var(--mg-mango); } .mg-sp-heading { max-width: 800px; margin-bottom: 58px; } .mg-sp-heading--center { margin-inline: auto; text-align: center; } .mg-sp-heading h2, .mg-sp-intro h2, .mg-sp-areas h2, .mg-sp-decision h2, .mg-sp-next h2, .mg-sp-close h2 { margin-bottom: 0; font-family: var(--mg-display); font-weight: 500; font-size: clamp(42px, 5.4vw, 74px); line-height: 0.96; letter-spacing: -0.035em; } .mg-sp-heading > p:last-child { max-width: 590px; margin: 22px auto 0; color: var(--mg-muted); font-size: 16px; line-height: 1.7; } /* ========================================================= 04. HERO ========================================================= */ .mg-sp-hero { position: relative; min-height: min(900px, 100svh); display: flex; align-items: stretch; background: #15110e; } .mg-sp-hero__media { position: absolute; inset: 0; background-image: url("YOUR-SAOPAULO-CITY-HERO-IMAGE.webp"); background-position: center; background-size: cover; transform: scale(1.01); } .mg-sp-hero__overlay { position: absolute; inset: 0; background: linear-gradient( 90deg, rgba(15, 12, 9, 0.95) 0%, rgba(15, 12, 9, 0.80) 42%, rgba(15, 12, 9, 0.33) 72%, rgba(15, 12, 9, 0.22) 100% ), linear-gradient( 0deg, rgba(20, 17, 14, 0.92) 0%, rgba(20, 17, 14, 0.08) 48% ); } .mg-sp-hero__inner { position: relative; z-index: 2; min-height: min(900px, 100svh); display: flex; flex-direction: column; padding-top: 42px; padding-bottom: 32px; } .mg-sp-breadcrumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-family: var(--mg-mono); font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: rgba(255, 245, 230, 0.67); } .mg-sp-breadcrumbs a { transition: color 180ms ease; } .mg-sp-breadcrumbs a:hover { color: var(--mg-cream); } .mg-sp-hero__content { width: min(720px, 100%); margin-top: auto; margin-bottom: auto; padding: 80px 0; } .mg-sp-hero h1 { margin-bottom: 30px; font-family: var(--mg-display); font-size: clamp(68px, 9vw, 132px); line-height: 0.78; letter-spacing: -0.055em; font-weight: 500; } .mg-sp-hero h1 em { color: var(--mg-mango); font-weight: 400; } .mg-sp-hero__lead { max-width: 600px; margin-bottom: 34px; color: rgba(255, 245, 230, 0.85); font-size: clamp(17px, 1.8vw, 21px); line-height: 1.6; } .mg-sp-button { min-height: 52px; display: inline-flex; align-items: center; justify-content: center; padding: 0 24px; border: 1px solid transparent; border-radius: var(--mg-radius); font-size: 13px; font-weight: 700; letter-spacing: 0.02em; transition: transform 180ms ease, background 180ms ease, border-color 180ms ease; } .mg-sp-button:hover { transform: translateY(-2px); } .mg-sp-button--primary { background: var(--mg-mango); color: #18120b !important; } .mg-sp-button--primary:hover { background: #ffb654; } .mg-sp-hero__footer { display: flex; align-items: center; gap: 22px; font-family: var(--mg-mono); font-size: 9px; line-height: 1; letter-spacing: 0.12em; text-transform: uppercase; color: rgba(255, 245, 230, 0.52); } .mg-sp-hero__line { width: 60px; height: 1px; background: rgba(255, 245, 230, 0.25); } /* ========================================================= 05. INTRO ========================================================= */ .mg-sp-intro { padding: 120px 0; background: var(--mg-bg); } .mg-sp-intro__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(300px, 0.65fr); gap: clamp(60px, 10vw, 150px); align-items: end; } .mg-sp-intro h2 { max-width: 770px; } .mg-sp-intro__copy p { margin-bottom: 24px; color: var(--mg-cream-soft); font-size: 17px; line-height: 1.75; } .mg-sp-intro__copy p:last-child { margin-bottom: 0; } /* ========================================================= 06. MOODS ========================================================= */ .mg-sp-moods { padding: 120px 0; background: var(--mg-bg-2); } .mg-sp-mood-tabs { display: grid; grid-template-columns: repeat(4, 1fr); margin-bottom: 30px; border-top: 1px solid var(--mg-line); border-bottom: 1px solid var(--mg-line); } .mg-sp-mood-tab { min-height: 90px; display: flex; align-items: center; gap: 14px; padding: 18px 20px; border: 0; border-right: 1px solid var(--mg-line); background: transparent; color: var(--mg-muted); text-align: left; cursor: pointer; transition: color 180ms ease, background 180ms ease; } .mg-sp-mood-tab:last-child { border-right: 0; } .mg-sp-mood-tab:hover { color: var(--mg-cream); background: rgba(255, 245, 230, 0.025); } .mg-sp-mood-tab.is-active { color: var(--mg-cream); background: var(--mg-bg-3); } .mg-sp-mood-tab__number { flex: 0 0 auto; font-family: var(--mg-mono); color: var(--mg-mango); font-size: 10px; } .mg-sp-mood-tab > span:last-child { font-family: var(--mg-display); font-size: 21px; line-height: 1.05; } .mg-sp-mood-stage { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(360px, 0.95fr); min-height: 630px; background: var(--mg-bg-3); } .mg-sp-mood-stage__image { position: relative; min-height: 630px; overflow: hidden; } .mg-sp-mood-stage__photo { position: absolute; inset: 0; background-image: linear-gradient( 0deg, rgba(20, 17, 14, 0.50), rgba(20, 17, 14, 0.04) ), url("YOUR-SAOPAULO-SLOW-LOCAL-IMAGE.webp"); background-position: center; background-size: cover; transition: opacity 220ms ease, transform 500ms ease; } .mg-sp-mood-stage:hover .mg-sp-mood-stage__photo { transform: scale(1.015); } .mg-sp-mood-stage__badge { position: absolute; left: 24px; bottom: 24px; max-width: 270px; padding: 18px 20px; background: rgba(20, 17, 14, 0.9); backdrop-filter: blur(8px); border-left: 2px solid var(--mg-mango); } .mg-sp-mood-stage__badge span, .mg-sp-couple-prompt span, .mg-sp-experience-card__why span, .mg-sp-area__fit span, .mg-sp-decision__result span { display: block; margin-bottom: 7px; font-family: var(--mg-mono); font-size: 9px; line-height: 1.4; letter-spacing: 0.14em; text-transform: uppercase; color: var(--mg-mango); } .mg-sp-mood-stage__badge strong { font-family: var(--mg-display); font-size: 19px; font-weight: 500; line-height: 1.15; } .mg-sp-mood-stage__content { display: flex; flex-direction: column; justify-content: center; padding: clamp(42px, 6vw, 82px); } .mg-sp-mood-stage__content h3 { max-width: 550px; margin-bottom: 24px; font-family: var(--mg-display); font-weight: 500; font-size: clamp(42px, 5vw, 68px); line-height: 0.98; } .mg-sp-mood-stage__lead { max-width: 570px; margin-bottom: 38px; color: var(--mg-cream-soft); font-size: 16px; line-height: 1.7; } .mg-sp-moment-list { border-top: 1px solid var(--mg-line); } .mg-sp-moment { display: grid; grid-template-columns: 34px 1fr; gap: 8px; padding: 17px 0; border-bottom: 1px solid var(--mg-line); } .mg-sp-moment > span { font-family: var(--mg-mono); font-size: 9px; color: var(--mg-mango); } .mg-sp-moment p { margin: 0; color: var(--mg-cream-soft); font-size: 14px; line-height: 1.55; } .mg-sp-couple-prompt { margin-top: 30px; padding-left: 18px; border-left: 1px solid var(--mg-mango); } .mg-sp-couple-prompt p { max-width: 500px; margin-bottom: 0; font-family: var(--mg-display); font-size: 20px; line-height: 1.3; } /* ========================================================= 07. WORTH YOUR TIME ========================================================= */ .mg-sp-worth { padding: 130px 0; background: var(--mg-bg); } .mg-sp-worth__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--mg-line); } .mg-sp-experience-card { min-width: 0; background: var(--mg-bg-2); } .mg-sp-experience-card__media { position: relative; aspect-ratio: 16 / 9; background-position: center; background-size: cover; overflow: hidden; } .mg-sp-experience-card__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient( 0deg, rgba(20, 17, 14, 0.6), transparent 60% ); } .mg-sp-img-neighbourhood { background-image: url("YOUR-SAOPAULO-NEIGHBOURHOOD-IMAGE.webp"); } .mg-sp-img-food { background-image: url("YOUR-SAOPAULO-FOOD-IMAGE.webp"); } .mg-sp-img-art { background-image: url("YOUR-SAOPAULO-ART-CULTURE-IMAGE.webp"); } .mg-sp-img-night { background-image: url("YOUR-SAOPAULO-NIGHT-IMAGE.webp"); } .mg-sp-experience-card__body { padding: clamp(28px, 4.5vw, 54px); } .mg-sp-experience-card__topline { display: flex; justify-content: space-between; margin-bottom: 28px; font-family: var(--mg-mono); font-size: 9px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--mg-muted); } .mg-sp-experience-card__topline span:first-child { color: var(--mg-mango); } .mg-sp-experience-card h3 { max-width: 500px; margin-bottom: 20px; font-family: var(--mg-display); font-size: clamp(32px, 3.6vw, 48px); line-height: 1; font-weight: 500; } .mg-sp-experience-card__body > p { max-width: 520px; margin-bottom: 30px; color: var(--mg-muted); font-size: 15px; line-height: 1.7; } .mg-sp-experience-card__why { padding-top: 20px; border-top: 1px solid var(--mg-line); } .mg-sp-experience-card__why p { margin: 0; color: var(--mg-cream-soft); font-size: 14px; line-height: 1.55; } /* ========================================================= 08. AREAS ========================================================= */ .mg-sp-areas { padding: 130px 0; background: var(--mg-bg-3); } .mg-sp-areas__header { display: grid; grid-template-columns: 1.2fr 0.65fr; gap: 80px; align-items: end; margin-bottom: 70px; } .mg-sp-areas__header > p { max-width: 430px; margin: 0; color: var(--mg-muted); font-size: 16px; line-height: 1.7; } .mg-sp-area-list { border-top: 1px solid var(--mg-line); } .mg-sp-area { display: grid; grid-template-columns: 90px 1fr minmax(280px, 0.65fr); gap: 30px; align-items: center; padding: 34px 0; border-bottom: 1px solid var(--mg-line); transition: padding 180ms ease, background 180ms ease; } .mg-sp-area:hover { padding-left: 18px; padding-right: 18px; background: rgba(255, 245, 230, 0.025); } .mg-sp-area__number { font-family: var(--mg-mono); font-size: 11px; color: var(--mg-mango); } .mg-sp-area__main h3 { margin-bottom: 8px; font-family: var(--mg-display); font-size: 38px; line-height: 1; font-weight: 500; } .mg-sp-area__main p { max-width: 580px; margin: 0; color: var(--mg-muted); font-size: 14px; line-height: 1.6; } .mg-sp-area__fit strong { display: block; color: var(--mg-cream-soft); font-size: 14px; line-height: 1.55; font-weight: 500; } /* ========================================================= 09. DECISION TOOL ========================================================= */ .mg-sp-decision { padding: 130px 0; background: var(--mg-bg); } .mg-sp-decision__box { padding: clamp(36px, 7vw, 92px); border: 1px solid var(--mg-line); background: linear-gradient( 135deg, var(--mg-bg-3), var(--mg-bg-2) ); } .mg-sp-decision h2 { max-width: 750px; } .mg-sp-decision__intro { margin: 28px 0 50px; color: var(--mg-muted); font-size: 16px; line-height: 1.65; } .mg-sp-decision__choices { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; } .mg-sp-choice { display: flex; flex-direction: column; align-items: flex-start; min-height: 110px; padding: 22px; border: 1px solid var(--mg-line); background: rgba(255, 245, 230, 0.015); color: var(--mg-cream); text-align: left; cursor: pointer; transition: background 180ms ease, border-color 180ms ease, transform 180ms ease; } .mg-sp-choice:hover { transform: translateY(-2px); border-color: var(--mg-line-strong); background: rgba(255, 245, 230, 0.035); } .mg-sp-choice.is-selected { border-color: rgba(244, 166, 65, 0.5); background: rgba(244, 166, 65, 0.08); } .mg-sp-choice span { margin-bottom: 9px; font-family: var(--mg-display); font-size: 25px; line-height: 1.1; } .mg-sp-choice small { color: var(--mg-muted); font-size: 12px; line-height: 1.5; } .mg-sp-decision__result { margin-top: 16px; padding: 24px; border-left: 2px solid var(--mg-mango); background: var(--mg-bg); } .mg-sp-decision__result p { margin: 0; font-family: var(--mg-display); font-size: 24px; line-height: 1.25; } /* ========================================================= 10. PRACTICAL ========================================================= */ .mg-sp-practical { padding: 120px 0; background: var(--mg-bg-4); } .mg-sp-practical__grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--mg-line); } .mg-sp-practical article { min-height: 260px; padding: 38px 34px; border-right: 1px solid var(--mg-line); border-bottom: 1px solid var(--mg-line); } .mg-sp-practical article:first-child { border-left: 1px solid var(--mg-line); } .mg-sp-practical article > span { display: block; margin-bottom: 40px; font-family: var(--mg-mono); font-size: 10px; color: var(--mg-mango); } .mg-sp-practical h3 { margin-bottom: 16px; font-family: var(--mg-display); font-size: 30px; line-height: 1.05; font-weight: 500; } .mg-sp-practical article p { margin: 0; color: var(--mg-muted); font-size: 14px; line-height: 1.7; } /* ========================================================= 11. NEXT ========================================================= */ .mg-sp-next { padding: 130px 0; background: var(--mg-bg-2); } .mg-sp-next__inner { display: grid; grid-template-columns: 1fr 0.85fr; gap: clamp(50px, 10vw, 140px); align-items: start; } .mg-sp-next__inner > div:first-child > p:last-child { max-width: 550px; margin: 28px 0 0; color: var(--mg-muted); font-size: 16px; line-height: 1.7; } .mg-sp-next__links { border-top: 1px solid var(--mg-line); } .mg-sp-next__links a { display: grid; grid-template-columns: 40px 1fr 20px; gap: 18px; align-items: center; min-height: 92px; border-bottom: 1px solid var(--mg-line); transition: padding 180ms ease, color 180ms ease; } .mg-sp-next__links a:hover { padding-left: 12px; color: var(--mg-mango); } .mg-sp-next__links span { font-family: var(--mg-mono); font-size: 9px; color: var(--mg-mango); } .mg-sp-next__links strong { font-family: var(--mg-display); font-size: 22px; line-height: 1.15; font-weight: 500; } .mg-sp-next__links b { font-size: 18px; font-weight: 400; } /* ========================================================= 12. CLOSE ========================================================= */ .mg-sp-close { padding: 150px 0; background: var(--mg-bg); text-align: center; } .mg-sp-close p { margin-bottom: 22px; font-family: var(--mg-mono); font-size: 10px; letter-spacing: 0.17em; text-transform: uppercase; color: var(--mg-muted); } .mg-sp-close h2 { font-size: clamp(56px, 8vw, 108px); } .mg-sp-close h2 em { color: var(--mg-mango); font-weight: 400; } /* ========================================================= 13. TABLET ========================================================= */ @media (max-width: 1000px) { .mg-sp-intro__grid, .mg-sp-areas__header, .mg-sp-next__inner { grid-template-columns: 1fr; gap: 42px; } .mg-sp-mood-tabs { grid-template-columns: repeat(2, 1fr); } .mg-sp-mood-tab:nth-child(2) { border-right: 0; } .mg-sp-mood-tab:nth-child(-n + 2) { border-bottom: 1px solid var(--mg-line); } .mg-sp-mood-stage { grid-template-columns: 1fr; } .mg-sp-mood-stage__image { min-height: 520px; } .mg-sp-area { grid-template-columns: 60px 1fr; } .mg-sp-area__fit { grid-column: 2 / -1; } } /* ========================================================= 14. MOBILE ========================================================= */ @media (max-width: 700px) { .mg-sp-container { width: min(calc(100% - 32px), var(--mg-max)); } .mg-sp-hero { min-height: 820px; } .mg-sp-hero__media { background-position: 62% center; } .mg-sp-hero__overlay { background: linear-gradient( 0deg, rgba(15, 12, 9, 0.98) 0%, rgba(15, 12, 9, 0.69) 58%, rgba(15, 12, 9, 0.34) 100% ); } .mg-sp-hero__inner { min-height: 820px; padding-top: 28px; padding-bottom: 24px; } .mg-sp-breadcrumbs { gap: 6px; font-size: 8px; } .mg-sp-hero__content { margin-top: auto; margin-bottom: 30px; padding: 100px 0 25px; } .mg-sp-hero h1 { font-size: clamp(64px, 22vw, 88px); line-height: 0.82; } .mg-sp-hero__lead { font-size: 16px; line-height: 1.55; } .mg-sp-button { width: 100%; } .mg-sp-hero__footer { align-items: flex-start; gap: 10px; flex-direction: column; } .mg-sp-hero__line { display: none; } .mg-sp-intro, .mg-sp-moods, .mg-sp-worth, .mg-sp-areas, .mg-sp-decision, .mg-sp-practical, .mg-sp-next { padding: 86px 0; } .mg-sp-close { padding: 110px 0; } .mg-sp-heading { margin-bottom: 42px; } .mg-sp-heading h2, .mg-sp-intro h2, .mg-sp-areas h2, .mg-sp-decision h2, .mg-sp-next h2 { font-size: 46px; } .mg-sp-mood-tabs { display: flex; overflow-x: auto; margin-inline: -16px; padding-left: 16px; border: 0; scrollbar-width: none; } .mg-sp-mood-tabs::-webkit-scrollbar { display: none; } .mg-sp-mood-tab { flex: 0 0 175px; min-height: 86px; border: 1px solid var(--mg-line) !important; border-right: 0 !important; } .mg-sp-mood-tab:last-child { margin-right: 16px; border-right: 1px solid var(--mg-line) !important; } .mg-sp-mood-tab > span:last-child { font-size: 18px; } .mg-sp-mood-stage { margin-top: 22px; } .mg-sp-mood-stage__image { min-height: 430px; } .mg-sp-mood-stage__content { padding: 34px 24px 40px; } .mg-sp-mood-stage__content h3 { font-size: 43px; } .mg-sp-mood-stage__badge { left: 16px; right: 16px; bottom: 16px; max-width: none; } .mg-sp-worth__grid { grid-template-columns: 1fr; } .mg-sp-experience-card__body { padding: 30px 24px 36px; } .mg-sp-experience-card h3 { font-size: 38px; } .mg-sp-area { grid-template-columns: 34px 1fr; gap: 14px; padding: 28px 0; } .mg-sp-area:hover { padding-left: 0; padding-right: 0; background: transparent; } .mg-sp-area__main h3 { font-size: 32px; } .mg-sp-area__fit { grid-column: 2; } .mg-sp-decision__box { padding: 34px 22px; } .mg-sp-decision__choices { grid-template-columns: 1fr; } .mg-sp-practical__grid { grid-template-columns: 1fr; } .mg-sp-practical article, .mg-sp-practical article:first-child { min-height: 0; padding: 30px 24px; border-left: 1px solid var(--mg-line); border-right: 1px solid var(--mg-line); } .mg-sp-practical article > span { margin-bottom: 24px; } .mg-sp-next__links a { min-height: 82px; } .mg-sp-next__links strong { font-size: 20px; } .mg-sp-close h2 { font-size: clamp(54px, 17vw, 76px); } } /* ========================================================= 15. REDUCED MOTION ========================================================= */ @media (prefers-reduced-motion: reduce) { #mg-sp *, #mg-sp *::before, #mg-sp *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; } } /* ========================================================= MANGO GETAWAY — SÃO PAULO CITY v1 ========================================================= */ (function () { "use strict"; const root = document.getElementById("mg-sp"); if (!root) { return; } /* ===================================================== 01. MOOD DATA ====================================================== */ const moods = { slow: { label: "SLOW & LOCAL", title: "Let the neighbourhood be the plan.", description: "Pick one part of the city and give it enough time to surprise you. Coffee, independent shops, a long lunch and nowhere you urgently need to be next.", bestFor: "Wandering without rushing", image: "YOUR-SAOPAULO-SLOW-LOCAL-IMAGE.webp", moments: [ "Start somewhere you can walk rather than building the day around transfers.", "Leave room for the place one of you notices along the way.", "Finish with dinner nearby instead of racing across the city again." ], question: "Would you rather choose one great neighbourhood today or cross the city ticking things off?" }, culture: { label: "CULTURE & CURIOSITY", title: "Give yourselves something to talk about.", description: "Build the day around art, architecture, design or a part of São Paulo neither of you fully understands yet. The objective is not simply to look. It is to react together.", bestFor: "Couples who like discovering ideas together", image: "YOUR-SAOPAULO-CULTURE-IMAGE.webp", moments: [ "Choose one strong cultural anchor rather than trying to cover everything.", "Give yourselves time afterwards to walk, eat or talk nearby.", "Let each person choose one thing the other might not have picked." ], question: "Which is more fun for you: loving the same thing, or arguing about whether it was actually good?" }, food: { label: "EAT YOUR WAY THROUGH IT", title: "Let the table decide where you go.", description: "São Paulo makes an excellent city for couples who plan from meal to meal. Choose one restaurant, market or food neighbourhood worth travelling for and let the rest of the day form around it.", bestFor: "Couples who remember trips through food", image: "YOUR-SAOPAULO-FOOD-MOOD-IMAGE.webp", moments: [ "Choose one meal important enough to reserve or plan around.", "Use cafés, bakeries and small stops to connect the gaps instead of forcing another attraction.", "Leave enough time at dinner that nobody is checking the clock." ], question: "If you could remember only one meal from São Paulo, would you want it refined, local, unexpected or completely indulgent?" }, night: { label: "STAY OUT LATE", title: "Give São Paulo one of your nights.", description: "Start slower, protect your energy and allow the evening to develop. The best late-night plan often has a beginning without forcing an exact ending.", bestFor: "Couples who want the city after dark", image: "YOUR-SAOPAULO-NIGHT-MOOD-IMAGE.webp", moments: [ "Keep the afternoon lighter so the evening does not begin with both of you exhausted.", "Start with one place you deliberately chose.", "Leave the following morning spacious enough that staying out feels worth it." ], question: "Would you rather know exactly where the night is going or start somewhere good and see what happens?" } }; /* ===================================================== 02. MOOD ELEMENTS ====================================================== */ const moodTabs = root.querySelectorAll(".mg-sp-mood-tab"); const moodPhoto = root.querySelector("#mg-sp-mood-photo"); const moodLabel = root.querySelector("#mg-sp-mood-label"); const moodTitle = root.querySelector("#mg-sp-mood-title"); const moodDescription = root.querySelector("#mg-sp-mood-description"); const moodBestFor = root.querySelector("#mg-sp-best-for"); const moodMoment1 = root.querySelector("#mg-sp-moment-1"); const moodMoment2 = root.querySelector("#mg-sp-moment-2"); const moodMoment3 = root.querySelector("#mg-sp-moment-3"); const moodQuestion = root.querySelector("#mg-sp-couple-question"); /* ===================================================== 03. CHANGE MOOD ====================================================== */ function setMood(moodKey) { const mood = moods[moodKey]; if (!mood) { return; } moodTabs.forEach(function (tab) { const active = tab.dataset.mood === moodKey; tab.classList.toggle( "is-active", active ); tab.setAttribute( "aria-selected", active ? "true" : "false" ); }); if (moodPhoto) { moodPhoto.style.opacity = "0"; window.setTimeout(function () { moodPhoto.style.backgroundImage = 'linear-gradient(0deg, rgba(20,17,14,.50), rgba(20,17,14,.04)), url("' + mood.image + '")'; moodPhoto.style.opacity = "1"; }, 130); } if (moodLabel) { moodLabel.textContent = mood.label; } if (moodTitle) { moodTitle.textContent = mood.title; } if (moodDescription) { moodDescription.textContent = mood.description; } if (moodBestFor) { moodBestFor.textContent = mood.bestFor; } if (moodMoment1) { moodMoment1.textContent = mood.moments[0]; } if (moodMoment2) { moodMoment2.textContent = mood.moments[1]; } if (moodMoment3) { moodMoment3.textContent = mood.moments[2]; } if (moodQuestion) { moodQuestion.textContent = mood.question; } } moodTabs.forEach(function (tab) { tab.addEventListener( "click", function () { setMood( this.dataset.mood ); } ); }); /* ===================================================== 04. COUPLE DECISION TOOL ====================================================== */ const choices = root.querySelectorAll(".mg-sp-choice"); const choiceResult = root.querySelector( "#mg-sp-choice-result p" ); const choiceCopy = { food: "Start with the meal you most want to share, then keep the rest of your plans in the same part of the city.", wander: "Choose one neighbourhood with enough cafés, streets and places to discover on foot. Let that become the day.", culture: "Choose one strong cultural experience, then leave time afterwards for the two of you to actually talk about it.", night: "Keep the daytime lighter, choose where the evening begins and protect tomorrow morning from unnecessary plans." }; choices.forEach(function (choice) { choice.addEventListener( "click", function () { const key = this.dataset.choice; choices.forEach(function (item) { item.classList.remove( "is-selected" ); }); this.classList.add( "is-selected" ); if ( choiceResult && choiceCopy[key] ) { choiceResult.textContent = choiceCopy[key]; } } ); }); /* ===================================================== 05. SMOOTH INTERNAL LINKS ====================================================== */ const internalLinks = root.querySelectorAll( 'a[href^="#"]' ); internalLinks.forEach(function (link) { link.addEventListener( "click", function (event) { const selector = this.getAttribute("href"); if ( !selector || selector === "#" ) { return; } const target = root.querySelector(selector); if (!target) { return; } event.preventDefault(); target.scrollIntoView({ behavior: "smooth", block: "start" }); } ); }); })();

SÃO PAULO · BRAZIL

São Paulo
for two.

Come for the city. Stay for the neighbourhoods, long dinners, late nights and the feeling that there is always somewhere else to discover together.

Choose your São Paulo

São Paulo is better when you stop trying to see all of it.

This is a city to experience in pieces. One neighbourhood. One table. One gallery. One late drink. One unexpected detour.

Mango Getaway helps you choose the parts that fit the kind of day the two of you actually want.

How do you want São Paulo to feel?

Pick the mood that sounds most like your day.

BEST FOR Wandering without rushing

Let the neighbourhood be the plan.

Pick one part of the city and give it enough time to surprise you. Coffee, independent shops, a long lunch and nowhere you urgently need to be next.

01

Start somewhere you can walk rather than building the day around transfers.

02

Leave room for the place one of you notices along the way.

03

Finish with dinner nearby instead of racing across the city again.

ASK EACH OTHER

Would you rather choose one great neighbourhood today or cross the city ticking things off?

Four kinds of São Paulo days we would actually build a trip around.

01 HALF DAY

Choose one neighbourhood and stay there.

São Paulo becomes far more enjoyable when you stop treating distance as a challenge to conquer.

WHY TOGETHER

It gives you space to notice, react and decide the day as a pair.

02 EVENING

Make dinner the main event.

Pick somewhere worth travelling for, arrive hungry and leave the evening open around it.

WHY TOGETHER

Great city memories often begin when there is nowhere else you are supposed to be.

03 DAYTIME

Find something you disagree about.

Art, architecture and design are more memorable when both of you actually have an opinion.

WHY TOGETHER

The conversation afterwards can become as good as the experience itself.

04 AFTER DARK

Give yourselves one properly late night.

Start with a drink. See where the city takes you. Keep the following morning light.

WHY TOGETHER

Sometimes the memory is simply that neither of you wanted the night to end.

Don’t ask, “Which area is best?”

Ask which part of the city fits the version of São Paulo the two of you want to experience.

01

Jardins

For couples who want polished, convenient and easy-to-build days.

CHOOSE THIS IF You want good access without sacrificing date-night energy.
02

Pinheiros

For food, coffee, creative energy and days that can stretch into night.

CHOOSE THIS IF You like discovering places as you go.
03

Vila Madalena

For a more social day with colour, street life and somewhere to continue afterwards.

CHOOSE THIS IF You want less structure and more atmosphere.
04

Liberdade

For couples who want the city to feel distinctly different for a few hours.

CHOOSE THIS IF Food and cultural curiosity usually shape your days.

Pick one thing you both want.

São Paulo rewards couples who leave enough space between plans.

YOUR SÃO PAULO STARTING POINT

Choose one above and build the rest of the day around it.

What changes the experience.

01

Distance matters.

Build days geographically. Crossing the city repeatedly can consume the time you came to enjoy.

02

Leave breathing room.

Two strong plans are often better than six places squeezed together.

03

Protect the evening.

If dinner or nightlife matters, avoid arriving there already tired from an overloaded day.

Now choose what deserves a place in your trip.

Explore stays, experiences and future Mango Getaway couple itineraries for São Paulo.

Travel Designed for Two.

Create More
Shared Memories.