Skip to content
Couple's Passport

Activities

/* ========================================================= MANGO GETAWAY — MYKONOS ACTIVITIES MG-MYK-ACT V0.6.0 ========================================================= */ .mgact6 { --black: #14110e; --deep: #181410; --brown: #211c17; --brown-2: #29221b; --cream: #f0e3d1; --mango: #f4a641; --gold: #d9973f; --copy: rgba(255,245,230,.70); --soft: rgba(255,245,230,.40); --line: rgba(255,245,230,.11); width: 100%; overflow: hidden; background: var(--black); color: var(--cream); font-family: "DM Sans", Arial, sans-serif; } .mgact6 *, .mgact6 *::before, .mgact6 *::after { box-sizing: border-box; } /* TYPOGRAPHY LOCK */ .mgact6, .mgact6 p, .mgact6 a, .mgact6 button, .mgact6 span, .mgact6 small, .mgact6 nav { font-family: "DM Sans", Arial, sans-serif; } .mgact6 h1, .mgact6 h2, .mgact6 h3, .mgact6 h4, .mgact6 h1 em, .mgact6 h2 em { font-family: "Cormorant Garamond", Georgia, serif !important; } .mgact6 h1 em, .mgact6 h2 em { font-style: italic; } .mgact6-meta, .mgact6-direction__number, .mgact6-day-grid article > small { font-family: "DM Mono", monospace !important; } /* SHELL */ .mgact6-shell { width: min(1180px, calc(100% - 48px)); margin-inline: auto; } .mgact6-shell--narrow { width: min(980px, calc(100% - 48px)); } .mgact6-kicker { margin: 0 0 17px; color: var(--mango); font-size: .61rem; font-weight: 700; letter-spacing: .19em; text-transform: uppercase; } /* ========================================================= HERO ========================================================= */ .mgact6-hero { position: relative; min-height: min(860px, 92vh); background: linear-gradient( 90deg, rgba(20,17,14,.95), rgba(20,17,14,.63), rgba(20,17,14,.16) ), var(--hero); background-size: cover; background-position: center; } .mgact6-hero__shade { position: absolute; inset: 0; background: linear-gradient( to bottom, transparent 55%, rgba(20,17,14,.9) ); } .mgact6-hero__inner { position: relative; z-index: 2; min-height: inherit; padding: 28px 0 50px; display: grid; grid-template-rows: auto 1fr; } .mgact6-breadcrumb { display: flex; flex-wrap: wrap; gap: 7px; color: rgba(255,245,230,.40); font-size: .57rem !important; letter-spacing: .08em; text-transform: uppercase; } .mgact6-breadcrumb a { color: inherit !important; text-decoration: none !important; } .mgact6-breadcrumb a:hover { color: var(--gold) !important; } .mgact6-hero__copy { max-width: 850px; align-self: center; } .mgact6-hero h1 { margin: 0 !important; padding-bottom: clamp(40px, 4vw, 58px); color: var(--cream); font-size: clamp(4.2rem, 7.8vw, 7.7rem) !important; font-weight: 400 !important; letter-spacing: -.055em; line-height: .89 !important; } .mgact6-hero h1 em { display: block; color: var(--mango); line-height: .93; } .mgact6-hero__copy > p:not(.mgact6-kicker) { max-width: 620px; margin: 0 0 30px; color: var(--copy); font-size: 1rem; line-height: 1.7; } .mgact6-primary { min-height: 52px; padding: 0 22px; display: inline-flex; align-items: center; gap: 35px; border: 1px solid var(--mango); border-radius: 999px; background: var(--mango); color: var(--black) !important; font-size: .68rem; font-weight: 700; text-decoration: none !important; } /* ========================================================= DIRECTIONS MATCHES MYKONOS PARENT ========================================================= */ .mgact6-directions { padding: 95px 0 105px; background: var(--deep); } .mgact6-heading h2 { max-width: 760px; margin: 0; color: var(--cream); font-size: clamp(3.4rem, 6vw, 5.5rem); font-weight: 400; line-height: .92; letter-spacing: -.05em; } .mgact6-heading h2 em { color: var(--mango); } .mgact6-heading > p:last-child { max-width: 650px; margin: 23px 0 0; color: var(--copy); font-size: .86rem; line-height: 1.7; } .mgact6-direction-grid { margin-top: 48px; display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); gap: 10px; } .mgact6-direction { position: relative; min-height: 190px; padding: 18px; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 15px; background: var(--brown); color: var(--cream) !important; text-decoration: none !important; } .mgact6-direction:hover, .mgact6-direction.is-current { border-color: var(--mango); } .mgact6-direction__number { color: var(--soft); font-size: .52rem; } .mgact6-direction small { margin-top: auto; margin-bottom: 9px; color: var(--mango); font-size: .50rem; font-weight: 700; letter-spacing: .08em; } .mgact6-direction strong { color: var(--mango); font-family: "Cormorant Garamond", Georgia, serif !important; font-size: 1.6rem; font-weight: 500; line-height: .95; } /* ========================================================= CATEGORY ========================================================= */ .mgact6-category { padding: 110px 0; scroll-margin-top: 25px; background: var(--black); } .mgact6-category--alt { background: var(--brown); } .mgact6-category__header { margin-bottom: 37px; padding: 36px; display: grid; grid-template-columns: minmax(0,1.3fr) minmax(300px,.7fr); gap: 40px; border: 1px solid var(--line); border-radius: 19px; background: rgba(0,0,0,.12); } .mgact6-category__header h2 { margin: 0 0 15px; color: var(--mango); font-size: clamp(3rem, 5vw, 4.5rem); font-weight: 400; line-height: .95; } .mgact6-category__header > div > p:last-child { max-width: 650px; margin: 0; color: var(--copy); font-size: .82rem; line-height: 1.7; } .mgact6-category__header aside { padding-left: 28px; border-left: 1px solid var(--line); } .mgact6-category__header aside small { color: var(--mango); font-size: .53rem; font-weight: 700; letter-spacing: .13em; } .mgact6-category__header aside p { margin: 14px 0 0; color: var(--cream); font-family: "Cormorant Garamond", Georgia, serif !important; font-size: 1.35rem; line-height: 1.3; } /* ========================================================= EXPERIENCES ========================================================= */ .mgact6-experience-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 15px; } .mgact6-experience { overflow: hidden; display: flex; flex-direction: column; border: 1px solid var(--line); background: var(--deep); transition: border-color .18s ease, transform .18s ease; } .mgact6-experience:hover { transform: translateY(-3px); border-color: rgba(217,151,63,.38); } .mgact6-experience.is-saved { border-color: var(--gold); } .mgact6-experience__image { position: relative; min-height: 270px; background: linear-gradient( to top, rgba(20,17,14,.75), transparent ), var(--image); background-size: cover; background-position: center; } .mgact6-experience__image span { position: absolute; left: 16px; bottom: 16px; padding: 7px 10px; border: 1px solid rgba(255,245,230,.15); border-radius: 999px; background: rgba(20,17,14,.72); color: var(--cream); font-size: .49rem; font-weight: 700; letter-spacing: .10em; } .mgact6-experience__body { flex: 1; padding: 23px; display: flex; flex-direction: column; } .mgact6-meta { margin: 0 0 11px; color: var(--mango); font-size: .51rem; letter-spacing: .05em; } .mgact6-experience h3 { margin: 0 0 13px !important; color: var(--cream) !important; font-size: 1.95rem !important; font-weight: 500 !important; line-height: 1 !important; } .mgact6-experience__intro { margin: 0 0 18px; color: var(--copy); font-size: .72rem; line-height: 1.6; } .mgact6-detail { padding: 12px 0; display: grid; grid-template-columns: 105px minmax(0,1fr); gap: 12px; border-top: 1px solid var(--line); } .mgact6-detail:last-of-type { border-bottom: 1px solid var(--line); } .mgact6-detail small { color: var(--soft); font-size: .48rem; font-weight: 700; } .mgact6-detail p { margin: 0; color: rgba(255,245,230,.72); font-size: .64rem; line-height: 1.5; } .mgact6-experience__actions { margin-top: auto; padding-top: 19px; display: grid; gap: 6px; } /* BUTTON RESETS */ .mgact6 button.mgact6-save, .mgact6 button.mgact6-options { appearance: none !important; width: 100%; min-height: 44px; margin: 0 !important; padding: 0 12px !important; border-radius: 2px !important; background: transparent !important; box-shadow: none !important; font-size: .59rem !important; cursor: pointer; } .mgact6 button.mgact6-save { border: 1px solid var(--line) !important; color: rgba(255,245,230,.68) !important; } .mgact6 button.mgact6-save[aria-pressed="true"] { border-color: var(--gold) !important; color: var(--gold) !important; background: rgba(217,151,63,.06) !important; } .mgact6 button.mgact6-options { display: flex; align-items: center; justify-content: space-between; border: 1px solid rgba(217,151,63,.44) !important; color: var(--cream) !important; } /* ========================================================= MATCH ========================================================= */ .mgact6-match { padding: 100px 0; background: var(--brown-2); } .mgact6-match[hidden] { display: none !important; } .mgact6-match h2 { max-width: 780px; margin: 0; color: var(--cream); font-size: clamp(3.4rem,6vw,5.5rem); font-weight: 400; line-height: .91; } .mgact6-match h2 em { color: var(--mango); } .mgact6-match > div > p:last-child { max-width: 690px; margin: 27px 0 0; color: var(--cream); font-family: "Cormorant Garamond", Georgia, serif !important; font-size: 1.7rem; line-height: 1.3; } /* ========================================================= BOOKING ========================================================= */ .mgact6-booking { padding: 105px 0; background: var(--deep); scroll-margin-top: 25px; } .mgact6-booking__empty { margin-top: 40px; padding: 28px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--copy); font-size: .72rem; } .mgact6-booking__active { margin-top: 40px; } .mgact6-booking__active[hidden] { display: none !important; } .mgact6-booking__active header { padding-bottom: 22px; border-bottom: 1px solid var(--line); } .mgact6-booking__active header small { color: var(--mango); font-size: .50rem; font-weight: 700; } .mgact6-booking__active h3 { margin: 7px 0; color: var(--cream); font-size: 2.3rem; font-weight: 500; } .mgact6-booking__active p { margin: 0; color: var(--copy); font-size: .70rem; } .mgact6-operator { margin-top: 10px; padding: 20px; display: grid; grid-template-columns: minmax(0,1fr) 190px; gap: 25px; border: 1px solid var(--line); background: var(--brown); } .mgact6-operator h4 { margin: 5px 0 8px !important; color: var(--cream) !important; font-size: 1.7rem !important; } .mgact6-operator p { color: var(--copy); } .mgact6-operator-actions { display: grid; gap: 6px; } /* ========================================================= DAY BUILDER ========================================================= */ .mgact6-day { padding: 105px 0; background: var(--black); } .mgact6-day-grid { margin-top: 43px; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); } .mgact6-day-grid article { position: relative; min-height: 245px; padding: 22px; border-right: 1px solid var(--line); } .mgact6-day-grid article:last-child { border-right: 0; } .mgact6-day-grid article > small { color: var(--mango); font-size: .49rem; } .mgact6-day-grid h3 { margin: 25px 0 14px; color: var(--cream); font-size: 1.7rem; font-weight: 500; } .mgact6-day-selection { min-height: 50px; color: var(--soft); font-size: .61rem; } .mgact6-day-grid button { appearance: none; margin-top: 20px; padding: 0; border: 0; background: transparent; color: var(--mango); font-size: .55rem; cursor: pointer; } .mgact6-day-choices { position: absolute; z-index: 5; left: 12px; right: 12px; bottom: 12px; padding: 8px; border: 1px solid var(--gold); background: var(--brown); } .mgact6-day-choices[hidden] { display: none !important; } .mgact6-day-choice { width: 100%; padding: 9px; display: block; color: var(--cream) !important; text-align: left; } .mgact6-day-note { color: var(--soft); font-family: "Cormorant Garamond", Georgia, serif !important; font-size: 1rem; font-style: italic; } /* ========================================================= SHORTLIST ========================================================= */ .mgact6-shortlist { padding: 105px 0; background: var(--brown); } .mgact6-shortlist__header { padding-bottom: 38px; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 35px; border-bottom: 1px solid var(--line); } .mgact6-shortlist h2 { margin: 0; color: var(--cream); font-size: clamp(3.4rem,6vw,5.4rem); font-weight: 400; line-height: .9; } .mgact6-shortlist h2 em { color: var(--mango); } .mgact6-shortlist__header > div:first-child > p:last-child { max-width: 620px; margin: 21px 0 0; color: var(--copy); font-size: .75rem; } .mgact6-counts { display: flex; gap: 25px; } .mgact6-counts div { text-align: right; } .mgact6-counts strong { display: block; color: var(--mango); font-family: "Cormorant Garamond", Georgia, serif; font-size: 3rem; font-weight: 400; } .mgact6-counts span { color: var(--soft); font-size: .46rem; } .mgact6-shortlist-grid { padding-top: 30px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; } .mgact6-shortlist-item { padding: 20px; border: 1px solid var(--line); background: var(--deep); } .mgact6-shortlist-item h4 { margin: 15px 0 8px; color: var(--cream); font-size: 1.7rem; } .mgact6-shortlist-item p { color: var(--copy); font-size: .63rem; } .mgact6-shortlist-actions { margin-top: 30px; display: flex; gap: 7px; } .mgact6-shortlist-actions button { min-height: 42px; padding: 0 14px; border: 1px solid var(--gold); border-radius: 999px; background: transparent; color: var(--cream); font-size: .57rem; cursor: pointer; } /* ========================================================= JOURNEYS ========================================================= */ .mgact6-journeys { position: relative; min-height: 650px; padding: 100px 0; background: linear-gradient( 90deg, rgba(20,17,14,.94), rgba(20,17,14,.45) ), var(--journey); background-size: cover; background-position: center; } .mgact6-journeys__shade { position: absolute; inset: 0; background: linear-gradient( to top, rgba(20,17,14,.65), transparent ); } .mgact6-journeys > .mgact6-shell { position: relative; z-index: 2; } .mgact6-journeys h2 { max-width: 780px; margin: 0; color: var(--cream); font-size: clamp(3.5rem,6vw,5.6rem); font-weight: 400; line-height: .9; } .mgact6-journeys h2 em { color: var(--mango); } .mgact6-journey-grid { margin-top: 42px; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; } .mgact6-journey-grid a { min-height: 210px; padding: 20px; display: flex; flex-direction: column; border: 1px solid rgba(255,245,230,.16); background: rgba(20,17,14,.45); color: var(--cream) !important; text-decoration: none !important; } .mgact6-journey-grid a:hover { border-color: var(--mango); } .mgact6-journey-grid h3 { margin: auto 0 7px; color: var(--cream); font-size: 1.8rem; } .mgact6-journey-grid p { color: var(--copy); font-size: .62rem; } .mgact6-journey-grid span { color: var(--mango); font-size: .55rem; } /* ========================================================= DISCLOSURE ========================================================= */ .mgact6-disclosure { padding: 27px 0; background: #0c0a08; } .mgact6-disclosure p { margin: 0; color: rgba(255,245,230,.32); font-size: .57rem; line-height: 1.6; text-align: center; } /* ========================================================= RESPONSIVE ========================================================= */ @media (max-width: 950px) { .mgact6-direction-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } .mgact6-experience-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } .mgact6-day-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } } @media (max-width: 700px) { .mgact6-shell, .mgact6-shell--narrow { width: calc(100% - 32px); } .mgact6-hero h1 { font-size: clamp(3.4rem,16vw,5rem) !important; padding-bottom: 38px; } .mgact6-direction-grid, .mgact6-experience-grid, .mgact6-day-grid, .mgact6-shortlist-grid, .mgact6-journey-grid { grid-template-columns: 1fr; } .mgact6-direction { min-height: 135px; } .mgact6-category__header { padding: 26px; grid-template-columns: 1fr; } .mgact6-category__header aside { padding-left: 0; padding-top: 24px; border-left: 0; border-top: 1px solid var(--line); } .mgact6-detail { grid-template-columns: 1fr; gap: 5px; } .mgact6-shortlist__header { grid-template-columns: 1fr; } .mgact6-counts div { text-align: left; } .mgact6-operator { grid-template-columns: 1fr; } } /* ========================================================= MANGO GETAWAY — MYKONOS ACTIVITIES MG-MYK-ACT V0.6.0 FUNCTIONS: - Multi-save experiences - Hash-aware parent → child navigation - Multiple operators per experience - Operator saves - Build Our Day - Shortlist - Print / PDF - localStorage persistence ========================================================= */ (function () { "use strict"; const STORAGE_KEY = "mg_mykonos_activities_v060"; function boot() { const page = document.querySelector(".mgact6"); if (!page) { return; } if ( page.dataset.ready === "true" ) { return; } page.dataset.ready = "true"; init(page); } function init(page) { let state = load(); /* ================================================= DEFAULT ================================================= */ function defaultState() { return { experiences: [], operators: [], activeBooking: "", day: { morning: "", afternoon: "", sunset: "", night: "" } }; } /* ================================================= STORAGE ================================================= */ function load() { try { const parsed = JSON.parse( localStorage.getItem( STORAGE_KEY ) ); return { ...defaultState(), ...(parsed || {}), day: { ...defaultState().day, ...(parsed?.day || {}) } }; } catch (error) { return defaultState(); } } function save() { try { localStorage.setItem( STORAGE_KEY, JSON.stringify(state) ); } catch (error) {} } /* ================================================= HELPERS ================================================= */ function clean(value) { return String( value || "" ).trim(); } function esc(value) { return clean(value) .replaceAll("&", "&") .replaceAll("", ">") .replaceAll('"', """) .replaceAll("'", "'"); } function cards() { return Array.from( page.querySelectorAll( ".mgact6-experience[data-id]" ) ); } function cardById(id) { return ( cards().find( function (card) { return ( card.dataset.id === id ); } ) || null ); } function liveOperators() { return Array.from( page.querySelectorAll( ".mgact6-partner-source [data-live='true']" ) ); } function operatorById(id) { return ( liveOperators().find( function (operator) { return ( operator.dataset.operatorId === id ); } ) || null ); } function toggle(array, id) { const index = array.indexOf(id); if (index === -1) { array.push(id); return true; } array.splice( index, 1 ); return false; } /* ================================================= ANCHOR CONTINUITY ================================================= */ function renderActiveAnchor() { const hash = window.location.hash .replace("#", ""); page.querySelectorAll( ".mgact6-direction" ) .forEach( function (link) { link.classList.toggle( "is-current", link.dataset.direction === hash ); } ); } /* ================================================= EXPERIENCE SAVE ================================================= */ function toggleExperience(card) { if (!card) { return; } const id = card.dataset.id; const selected = toggle( state.experiences, id ); if (!selected) { Object.keys( state.day ) .forEach( function (part) { if ( state.day[part] === id ) { state.day[part] = ""; } } ); } save(); render(); } function renderCards() { cards().forEach( function (card) { const selected = state.experiences .includes( card.dataset.id ); card.classList.toggle( "is-saved", selected ); const button = card.querySelector( ".mgact6-save" ); if (button) { button.setAttribute( "aria-pressed", selected ? "true" : "false" ); button.innerHTML = selected ? "Saved for us" : "This feels like us"; } const options = card.querySelector( ".mgact6-options" ); if (options) { options.hidden = !selected; } } ); } /* ================================================= MATCH REFLECTION ================================================= */ function renderMatch() { const match = page.querySelector( "#our-mykonos-match" ); const output = page.querySelector( "#mgact6-match-copy" ); if ( !match || !output ) { return; } if ( state.experiences.length < 2 ) { match.hidden = true; return; } match.hidden = false; const categories = state.experiences .map( function (id) { return ( cardById(id) ?.dataset.category || "" ); } ); const has = function (category) { return categories .includes( category ); }; if ( has("water") && has("move-together") ) { output.textContent = "Active, exploratory and happiest when the day keeps moving."; } else if ( has("taste-mykonos") && has("slow-down") ) { output.textContent = "Food-led, unhurried and built around staying longer."; } else if ( has("try-something-different") && has("move-together") ) { output.textContent = "Curious, playful and willing to share a few firsts."; } else if ( has("water") && has("slow-down") ) { output.textContent = "Blue water, plenty of breathing room and very little rushing."; } else { output.textContent = "Experience-led, balanced and deliberately yours."; } } /* ================================================= BOOKING ================================================= */ function openBooking(id) { state.activeBooking = id; save(); renderBooking(); page.querySelector( "#booking-options" ) ?.scrollIntoView({ behavior: "smooth", block: "start" }); } function renderBooking() { const empty = page.querySelector( "#mgact6-booking-empty" ); const active = page.querySelector( "#mgact6-booking-active" ); const title = page.querySelector( "#mgact6-booking-title" ); const feel = page.querySelector( "#mgact6-booking-feel" ); const list = page.querySelector( "#mgact6-operators" ); const card = cardById( state.activeBooking ); if (!card) { empty.hidden = false; active.hidden = true; return; } empty.hidden = true; active.hidden = false; title.textContent = card.dataset.title; feel.textContent = card.dataset.feel; list.innerHTML = ""; const operators = liveOperators() .filter( function (operator) { return ( operator.dataset.experienceId === state.activeBooking ); } ); if ( operators.length === 0 ) { list.innerHTML = `
Mango is still curating the bookable options for this experience. Keep the experience saved — it does not need a commercial partner to deserve a place on your shortlist.
`; return; } operators.forEach( function (operator) { const id = operator.dataset.operatorId; const selected = state.operators .includes(id); const element = document.createElement( "article" ); element.className = "mgact6-operator"; element.innerHTML = `
${esc( operator.dataset.label )}

${esc( operator.dataset.name )}

${esc( operator.dataset.why )}

${esc( operator.dataset.price )} · ${esc( operator.dataset.fit )}

Mango Couple Benefit: ${esc( operator.dataset.benefit )}

Check availability →
`; list.appendChild( element ); } ); } /* ================================================= DAY BUILDER ================================================= */ function renderDay() { Object.keys( state.day ) .forEach( function (part) { const selection = page.querySelector( `[data-selection="${part}"]` ); const choices = page.querySelector( `[data-choices="${part}"]` ); const selected = cardById( state.day[part] ); if (selection) { selection.textContent = selected ? selected.dataset.title : "Leave it open"; } if (!choices) { return; } choices.innerHTML = ""; state.experiences .map(cardById) .filter(Boolean) .filter( function (card) { return clean( card.dataset.dayparts ) .split(",") .map( function (value) { return value.trim(); } ) .includes(part); } ) .forEach( function (card) { const button = document.createElement( "button" ); button.type = "button"; button.className = "mgact6-day-choice"; button.dataset .assignPart = part; button.dataset .assignExperience = card.dataset.id; button.textContent = card.dataset.title; choices.appendChild( button ); } ); const leaveOpen = document.createElement( "button" ); leaveOpen.type = "button"; leaveOpen.className = "mgact6-day-choice"; leaveOpen.dataset .assignPart = part; leaveOpen.dataset .assignExperience = ""; leaveOpen.textContent = "Leave this part open"; choices.appendChild( leaveOpen ); } ); } /* ================================================= SHORTLIST ================================================= */ function renderShortlist() { const grid = page.querySelector( "#mgact6-shortlist-grid" ); const operatorGrid = page.querySelector( "#mgact6-shortlist-operators" ); const experienceCount = page.querySelector( "#mgact6-experience-count" ); const operatorCount = page.querySelector( "#mgact6-operator-count" ); const actions = page.querySelector( "#mgact6-shortlist-actions" ); grid.innerHTML = ""; operatorGrid.innerHTML = ""; state.experiences .map(cardById) .filter(Boolean) .forEach( function (card) { const item = document.createElement( "article" ); item.className = "mgact6-shortlist-item"; item.innerHTML = ` ${esc( card.dataset.categoryLabel )}

${esc( card.dataset.title )}

${esc( card.dataset.feel )}

`; grid.appendChild( item ); } ); state.operators .map(operatorById) .filter(Boolean) .forEach( function (operator) { const item = document.createElement( "article" ); item.className = "mgact6-shortlist-item"; item.innerHTML = ` BOOKABLE OPTION

${esc( operator.dataset.name )}

${esc( operator.dataset.price )}

Check availability → `; operatorGrid.appendChild( item ); } ); experienceCount.textContent = String( state.experiences.length ); operatorCount.textContent = String( state.operators.length ); actions.hidden = ( state.experiences.length + state.operators.length ) === 0; } /* ================================================= PRINT ================================================= */ function printShortlist() { window.print(); } /* ================================================= MASTER RENDER ================================================= */ function render() { renderActiveAnchor(); renderCards(); renderMatch(); renderBooking(); renderDay(); renderShortlist(); } /* ================================================= EVENTS ================================================= */ page.addEventListener( "click", function (event) { const saveExperience = event.target.closest( ".mgact6-save" ); if (saveExperience) { toggleExperience( saveExperience.closest( ".mgact6-experience" ) ); return; } const options = event.target.closest( ".mgact6-options" ); if (options) { openBooking( options.dataset.bookingFor ); return; } const operatorSave = event.target.closest( "[data-save-operator]" ); if (operatorSave) { toggle( state.operators, operatorSave.dataset .saveOperator ); save(); render(); return; } const openDay = event.target.closest( "[data-open-day]" ); if (openDay) { const choices = page.querySelector( `[data-choices="${openDay.dataset.openDay}"]` ); choices.hidden = !choices.hidden; return; } const assign = event.target.closest( "[data-assign-part]" ); if (assign) { state.day[ assign.dataset.assignPart ] = assign.dataset.assignExperience; save(); renderDay(); page.querySelector( `[data-choices="${assign.dataset.assignPart}"]` ).hidden = true; return; } const removeExperience = event.target.closest( "[data-remove-experience]" ); if (removeExperience) { state.experiences = state.experiences.filter( function (id) { return ( id !== removeExperience.dataset .removeExperience ); } ); save(); render(); return; } const removeOperator = event.target.closest( "[data-remove-operator]" ); if (removeOperator) { state.operators = state.operators.filter( function (id) { return ( id !== removeOperator.dataset .removeOperator ); } ); save(); render(); } } ); /* PRINT */ page.querySelector( "#mgact6-print" ) ?.addEventListener( "click", printShortlist ); /* CLEAR */ page.querySelector( "#mgact6-clear" ) ?.addEventListener( "click", function () { state = defaultState(); save(); render(); } ); /* HASH UPDATE */ window.addEventListener( "hashchange", renderActiveAnchor ); render(); } if ( document.readyState === "loading" ) { document.addEventListener( "DOMContentLoaded", boot ); } else { boot(); } })();

  ADD SOMETHING TO THE STORY

What do you want to do together?

Your itinerary gives the trip a rhythm. Now choose the kind of experience you want to remember from it.

Find our kind of experience

CHOOSE WHAT YOU WANT TO ADD

What sounds like you two?

These are the same five experience directions you started with on Mykonos. Pick one or keep exploring — you can save as many as you want.

FOR A DAY ON THE AEGEAN

Get on the Water

Leave the road behind for a while. Sail, swim or spend part of the day seeing Mykonos from the water instead of from shore.

JUST THE TWO OF YOU

€€€€ · 4–8 HOURS

Charter a Boat for the Day

Make the Aegean your space for a few hours.

WHY DO IT TOGETHER?

Privacy and uninterrupted time turn the boat itself into part of the memory.

BEST FOR

Celebrations, honeymoons and couples wanting one standout day.

HISTORY + SWIM

€€€ · 5–8 HOURS

Delos First. Swim Afterwards.

Let the day move from discovery into open water.

WHY DO IT TOGETHER?

You learn something together before slowing into the rest of the day.

BEST FOR

First-time Mykonos couples.

GET IN THE WATER

€€ · 2–4 HOURS

Swim, Paddle, Explore

Pick something where both of you actually participate.

WHY DO IT TOGETHER?

Shared effort gives the two of you a better story afterwards.

BEST FOR

Active and playful couples.

DO SOMETHING SIDE BY SIDE

Move Together

Walk, ride, explore or try something that gets both of you participating in the island.

RIDE TOGETHER

€€ · 2–3 HOURS

See the Island From the Saddle

Let the movement slow the whole day down.

WHY DO IT TOGETHER?

You experience the landscape at the same pace.

BEST FOR

Couples wanting scenery with a little adventure.

ON FOOT

€€ · 2–4 HOURS

Walk Somewhere Worth Noticing

Trade speed for detail.

WHY DO IT TOGETHER?

Walking creates room for conversation and discovery.

BEST FOR

Curious couples and slower mornings.

MOVE A LITTLE MORE

€€ · 2–5 HOURS

Make the Day a Little More Active

Choose the version that suits your pace.

WHY DO IT TOGETHER?

Doing something unfamiliar makes the day more memorable.

BEST FOR

Couples who dislike sitting still all day.

AROUND THE TABLE

Taste Mykonos

Make food part of the experience rather than something squeezed between activities.

MAKE + TASTE

€€ · 3–5 HOURS

Make Dinner Part of the Story

Replace one restaurant booking with participation.

WHY DO IT TOGETHER?

You both contribute to the experience.

BEST FOR

Food-focused couples.

SIT + TASTE

€€ · 2–4 HOURS

Taste Something Slowly

Let the conversation become part of the activity.

WHY DO IT TOGETHER?

You share the flavours and the conversation.

BEST FOR

Wine and food couples.

EAT THE ISLAND

€€ · 3–5 HOURS

Learn Mykonos Through Food

Make the meal part of understanding the place.

WHY DO IT TOGETHER?

You discover the destination through something shared.

BEST FOR

Curious eaters.

DO LESS

Slow Down

Protect part of the trip from becoming another sequence of things you need to accomplish.

STAY AWHILE

€ · OPEN ENDED

Find a Beach Worth Staying At

Stop treating beaches like checkpoints.

WHY DO IT TOGETHER?

You finally leave nothing else to accomplish.

BEST FOR

Doing almost nothing.

NO NEXT RESERVATION

€€ · 2–4 HOURS

Let Lunch Become the Afternoon

Leave the next few hours empty on purpose.

WHY DO IT TOGETHER?

Conversation gets as much room as the meal.

BEST FOR

Food couples and empty afternoons.

RESET

€€€ · 1–3 HOURS

Give the Trip a Reset

Let both of you stop moving at the same time.

WHY DO IT TOGETHER?

You reset together instead of taking turns resting.

BEST FOR

Recovery days.

SHARE A FIRST

Try Something Different

Give the trip one experience neither of you would normally choose at home.

MAKE SOMETHING

€€ · 2–4 HOURS

Make the Souvenir Yourselves

Leave with something connected to the day.

WHY DO IT TOGETHER?

Both of you get to be beginners.

BEST FOR

Creative and curious couples.

SEE IT DIFFERENTLY

€€ · 1–3 HOURS

Put Both of You in the Memory

Stop having one of you missing from every photograph.

WHY DO IT TOGETHER?

The memory belongs to both of you.

BEST FOR

Milestones and couples who rarely take photos together.

SHARE A FIRST

€€ · EXPERIENCE DEPENDENT

Choose One Shared First

The point is not being good at it.

WHY DO IT TOGETHER?

New experiences are easier to remember than familiar ones.

BEST FOR

Couples wanting one unexpected story.

EXPERIENCE FIRST · OPERATOR SECOND

Turn the idea into a plan.

Once you know what you want to experience, Mango narrows who could actually deliver it.

Save an experience above, then choose See booking options.

FROM GOOD IDEAS TO ONE GOOD DAY

Build Our Day

Give a few of your saved experiences somewhere to live without turning the day into a timetable.

01

Morning

Leave it open
02

Afternoon

Leave it open
03

Sunset

Leave it open
04

Night

Leave it open

A good Mykonos day can still have empty space.

WHAT SURVIVED THE SCROLL

Our Mykonos Shortlist

The experiences and bookable options the two of you decided were worth keeping.

0 EXPERIENCES
0 OPTIONS

Mango recommends selectively. Some booking links may earn Mango Getaway commission or partner revenue at no additional cost to you. Couple fit comes before commercial placement.