;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Dois novos hotéis brasileiros estão entre 96 melhores do mundo em 2022

Hotel Fasano Trancoso, um dos 96 melhores do mundo segundo a Condé Nast Traveller - Reprodução/Booking.com
Hotel Fasano Trancoso, um dos 96 melhores do mundo segundo a Condé Nast Traveller Imagem: Reprodução/Booking.com

De Nossa

03/05/2022 16h58

O Brasil é, oficialmente, parte da elite do turismo mundial, de acordo com a avaliação da revista britânica Condé Nast Traveller, que divulgou nesta terça (3) sua Hot List com o melhor da indústria de viagens de 2022.

Para o júri de editores da publicação em sete diferentes países onde ela é publicada, dois dos 96 melhores novos hotéis do mundo estão em nosso território. Conheça-os:

Hotel Fasano Trancoso

A Condé Nast Traveller destacou Trancoso, na Bahia, como "destino quente" para o glamour relaxado, que respeita o clima praiano. Não foi, contudo, nenhum dos hotéis boutique ou pousadas de luxo já consagrados da região que conquistaram os editores, mas, sim, este hotel com proporções de resort na cidade.

Os bangalôs geométricos, a vegetação nativa, déques com terraços privativos e a visa para o mar são marcas do design do Fasano Trancoso, que assim como outros hotéis da grife, tem como principal atrativo sua gastronomia, a especialidade (e uma espécie de pedra fundamental) do fundador Gero Fasano.

Entre os pratos favoritos relembrados pela publicação esteve o carpaccio com azeitonas pretas, que pode ser experimentado no principal restaurante do hotel. Diárias saem a partir de R$ 2.575, reservas pelo site ou pelo Booking.com.

Hotel Rosewood São Paulo

Mesmo recém-inaugurado, o Rosewood São Paulo já figura em outras seleções de melhores do mundo. Para a revista, apesar de o hotel pertencer a uma das maiores cadeias de hotelaria de luxo do mundo, o motivo do sucesso é justamente a autenticidade da identidade paulistana refletida nos seus ambientes, da decoração ao clima badalado.

"Talvez graças às obras de artes encomendadas e exibidas nas paredes de cada espaço imaginável, do terraço ilustrado da piscina até as fronhas dos travesseiros em cada quarto", especula a editora Megan Spurrell.

A alta gastronomia dos restaurantes e bares da casa, assim como no caso do Fasano, inspiraram elogios pela mistura de referências sas, brasileiras e de outros países latino-americanos. Diárias a partir de R$ 2.605, reservas podem ser feitas através do site, ou de plataformas como Booking.com e Expedia.

A Condé Nast Traveller elabora a Hot List há 26 anos, com frequência anual. A relação completa com outros vencedores ao redor do globo já está disponível no site da revista.