🏠 Property auctions in Brazil
HastaAuctionsRio Grande do SulPorto Alegre › APARTAMENTO EM PORTO ALEGRE/RS
APARTAMENTO EM PORTO ALEGRE/RS
Apartment #1108930

APARTAMENTO EM PORTO ALEGRE/RS

📍 Porto Alegre, RS
This lot's description, auction notice and documents are in Portuguese, as published by the auctioneer. Bids are placed on the official auctioneer's website, in Portuguese.

Auction details

1st auctionApr 06, 2026
2nd auctionSep 16, 2026
Auction typeJudicial auction
AuctioneerSÉRGIO AUGUSTO DOS SANTOS

Description

Auctioneer's text, in Portuguese.

(51) 99381-2827 | (51) 30331-400 | $(document).ready(function(){ // Toggle password functionality $('[data-toggle-password-topo]').off('click.topoToggle').on('click.topoToggle', function() { var container = $(this).closest('.password-toggle-topo-container'); var passwordInput = container.find('input[type="password"], input[type="text"]'); var showIcon = $(this).find('.show-password'); var hideIcon = $(this).find('.hide-password'); if (passwordInput.length) { if (passwordInput.attr('type') === 'password') { passwordInput.attr('type', 'text'); showIcon.hide(); hideIcon.show(); } else { passwordInput.attr('type', 'password'); showIcon.show(); hideIcon.hide(); } } }); // Prevenir que o dropdown feche ao clicar no formulário $('.dropdown-menu.dropdown-login').on('click', function(e) { e.stopPropagation(); }); }); account_circle LOGIN account_circle lock Permanecer conectado Esqueceu a senha? ENTRAR ou Entrar com Chave de Segurança (function () { var passkeyBtn = document.getElementById('btnPasskeyLoginTopo'); var status = document.getElementById('passkey-status-topo'); if (!passkeyBtn) return; if (!window.PublicKeyCredential) { passkeyBtn.disabled = true; status.textContent = 'Passkey não suportada neste navegador.'; return; } passkeyBtn.addEventListener('click', async function () { passkeyBtn.disabled = true; status.className = 'text-center text-muted mt-2 mb-0'; status.textContent = 'Aguardando autenticador…'; try { var optRes = await fetch('/arrematante/passkey/login/options', { method: 'POST', headers: { 'X-Requested-With': 'XMLHttpRequest' } }); if (!optRes.ok) throw new Error('Falha ao obter opções.'); var args = await optRes.json(); var pubKey = args.publicKey; pubKey.challenge = _b64ToBuffer(pubKey.challenge); if (pubKey.allowCredentials) { pubKey.allowCredentials = pubKey.allowCredentials.map(function (c) { return Object.assign({}, c, { id: _b64ToBuffer(c.id) }); }); } var assertion = await navigator.credentials.get({ publicKey: pubKey }); var body = { id: assertion.id, rawId: _bufToB64(assertion.rawId), type: assertion.type, response: { clientDataJSON: _bufToB64(assertion.response.clientDataJSON), authenticatorData: _bufToB64(assertion.response.authenticatorData), signature: _bufToB64(assertion.response.signature), userHandle: assertion.response.userHandle ? _bufToB64(assertion.response.userHandle) : null } }; var verRes = await fetch('/arrematante/passkey/login/verify', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' }, body: JSON.stringify(body), redirect: 'follow' }); if (verRes.redirected) { window.location.href = verRes.url; return; } if (verRes.ok) { window.location.href = '/arrematante/painel-controle'; return; } var err = await verRes.json().catch(function () { return {}; }); throw new Error(err.error || 'Falha na autenticação.'); } catch (e) { status.className = 'text-center text-danger mt-2 mb-0'; status.textContent = e.name === 'NotAllowedError' ? 'Operação cancelada.' : (e.message || 'Erro.'); passkeyBtn.disabled = false; } }); function _b64ToBuffer(b64url) { var b64 = b64url.replace(/-/g, '+').replace(/_/g, '/'); while (b64.length % 4) b64 += '='; var bin = atob(b64); var buf = new Uint8Array(bin.length); for (var i = 0; i < bin.length; i++) buf[i] = bin.charCodeAt(i); return buf.buffer; } function _bufToB64(buf) { var bytes = new Uint8Array(buf); var bin = ''; bytes.forEach(function (b) { bin += String.fromCharCode(b); }); return btoa(bin).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, ''); } })(); CADASTRE-SE NS Leilões - Presenciais e Online Toggle navigation HOME LEILÕES VENDA DIRETA QUEM SOMOS QUERO VENDER CONTATO search IMÓVEIS 37 itens VEÍCULOS 29 itens EQUIPAMENTOS 3 itens DIVERSOS 1 item ANIMAIS 0 itens ELETRÔNICOS 0 itens MÁQUINAS 0 itens SUCATAS 0 itens /* Garantir que os botões do carrossel sejam sempre visíveis */ .carousel-btn { display: flex !important; position: absolute; z-index: 1000; background: rgba(255, 255, 255, 0.95) !important; border: none !important; border-radius: 50% !important; width: 50px; height: 50px; align-items: center; justify-content: center; font-size: 20px; color: #007bff !important; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 15px rgba(0,0,0,0.15) !important; } .carousel-btn:hover { background: white !important; transform: scale(1.1); box-shadow: 0 6px 20px rgba(0,0,0,0.2) !important; } .carousel-btn-prev { left: 10px !important; top: 50%; transform: translateY(-50%); } .carousel-btn-next { right: 10px !important; top: 50%; transform: translateY(-50%); } /* Garantir o posicionamento correto do wrapper */ .categoria-carousel-wrapper { position: relative !important; min-height: 120px; } let currentPosition = 0; let cardWidth = 0; let visibleCards = 0; let totalCards = 0; function initCarousel() { const container = document.getElementById('categoria-carousel'); const track = document.getElementById('carousel-track'); const cards = track ? track.querySelectorAll('.categoria-card') : []; const prevBtn = document.querySelector('.carousel-btn-prev'); const nextBtn = document.querySelector('.carousel-btn-next'); if (!container || !track || cards.length === 0) { console.log('Carrossel de categorias: Elementos não encontrados ou sem cards'); return; } // Resetar posição para o início currentPosition = 0; track.style.transform = 'translateX(0)'; totalCards = cards.length; // Calcular dimensões considerando larguras variáveis dos cards const containerWidth = container.offsetWidth; // Calcular largura total necessária para todos os cards let totalCardsWidth = 0; let maxCardWidth = 0; cards.forEach((card, index) => { const cardStyle = getComputedStyle(card); const cardWidth = card.offsetWidth + parseFloat(cardStyle.marginLeft) + parseFloat(cardStyle.marginRight); totalCardsWidth += cardWidth; maxCardWidth = Math.max(maxCardWidth, cardWidth); // Para o gap entre os cards (15px conforme CSS) if (index < cards.length - 1) { totalCardsWidth += 15; } }); // Usar a maior largura de card como referência para navegação cardWidth = maxCardWidth || 150; // fallback // Calcular quantos cards cabem visualmente (mais conservador) visibleCards = Math.floor(containerWidth / cardWidth); // Verificar se o conteúdo transborda o container const needsCarousel = totalCardsWidth > containerWidth; // Sempre mostrar os botões inicialmente if (prevBtn && nextBtn) { prevBtn.style.display = 'flex'; nextBtn.style.display = 'flex'; // Verificar se realmente precisa dos botões baseado no overflow if (!needsCarousel) { // Se não transbordar, centralizar cards e desabilitar botões track.style.justifyContent = 'center'; prevBtn.style.opacity = '0.3'; nextBtn.style.opacity = '0.3'; prevBtn.style.cursor = 'not-allowed'; nextBtn.style.cursor = 'not-allowed'; prevBtn.disabled = true; nextBtn.disabled = true; } else { // Habilitar navegação track.style.justifyContent = 'flex-start'; prevBtn.disabled = false; nextBtn.disabled = false; // Ajustar visibleCards baseado na necessidade real visibleCards = Math.max(1, Math.floor(totalCards * containerWidth / totalCardsWidth)); } } updateButtonsState(); } function scrollCarousel(direction) { const track = document.getElementById('carousel-track'); const prevBtn = document.querySelector('.carousel-btn-prev'); const nextBtn = document.querySelector('.carousel-btn-next'); // Não fazer nada se os botões estão desabilitados if ((direction === 'prev' && prevBtn && prevBtn.disabled) || (direction === 'next' && nextBtn && nextBtn.disabled)) { return; } const maxPosition = Math.max(0, totalCards - visibleCards); if (direction === 'next' && currentPosition < maxPosition) { currentPosition++; } else if (direction === 'prev' && currentPosition > 0) { currentPosition--; } const translateX = -(currentPosition * cardWidth); track.style.transform = `translateX(${translateX}px)`; updateButtonsState(); } function updateButtonsState() { const prevBtn = document.querySelector('.carousel-btn-prev'); const nextBtn = document.querySelector('.carousel-btn-next'); const maxPosition = Math.max(0, totalCards - visibleCards); if (prevBtn && nextBtn) { // Se os botões estão desabilitados (sem necessidade de carrossel), não alterar estado if (prevBtn.disabled) { return; } // Atualizar estado dos botões baseado na posição atual if (currentPosition === 0) { prevBtn.style.opacity = '0.5'; prevBtn.style.cursor = 'not-allowed'; } else { prevBtn.style.opacity = '1'; prevBtn.style.cursor = 'pointer'; } if (currentPosition >= maxPosition) { nextBtn.style.opacity = '0.5'; nextBtn.style.cursor = 'not-allowed'; } else { nextBtn.style.opacity = '1'; nextBtn.style.cursor = 'pointer'; } } } // Inicializar quando a página carregar document.addEventListener('DOMContentLoaded', function() { // Delay pequeno para garantir que os estilos CSS foram aplicados setTimeout(initCarousel, 100); }); // Garantir inicialização após carregamento completo window.addEventListener('load', function() { setTimeout(initCarousel, 200); }); // Reinicializar no resize window.addEventListener('resize', function() { // Resetar para o início currentPosition = 0; const track = document.getElementById('carousel-track'); if (track) { track.style.transform = 'translateX(0)'; track.style.justifyContent = 'flex-start'; } // Resetar estado dos botões const prevBtn = document.querySelector('.carousel-btn-prev'); const nextBtn = document.querySelector('.carousel-btn-next'); if (prevBtn && nextBtn) { prevBtn.disabled = false; nextBtn.disabled = false; prevBtn.style.opacity = '1'; nextBtn.style.opacity = '1'; prevBtn.style.cursor = 'pointer'; nextBtn.style.cursor = 'pointer'; } // Delay para garantir que as dimensões sejam recalculadas setTimeout(initCarousel, 150); }); // Suporte para

Documents (2)

Official documents, in Portuguese.

📄 documentoDocument📄 documentoDocument

How to buy this property from outside Brazil

You need a Brazilian tax ID (CPF, obtained at a consulate), a representative in Brazil, and the bid is placed on the auctioneer's website. The guides below explain each step, the costs and the risks.

Similar properties in Porto Alegre

Properties in other cities of Rio Grande do Sul