/** pt (pt-BR) — batch 2: mapUi, mapPage, spotUi, diyUi, labelsUi, feesUi, cardUi, routeUi, sasquatchUi, sasquatchChat. */ const ptBatch2 = { mapUi: { mapFooter: { links: "Links", hide: "Ocultar barra de links do mapa", }, findingSpots: "Buscando spots", loadingSpots: "Carregando spots", loadingMap: "Carregando mapa...", mapViewAria: "Visualização de mapa", listViewAria: "Visualização de lista", layers: "Camadas", mapLayers: "Camadas do mapa", showOnMap: "Mostrar no mapa", showResults: "Mostrar resultados", quickActions: "Ações rápidas", spots: "Spots", shops: "Lojas", gear: "Equipamentos", tours: "Tours", events: "Eventos", crews: "Crews", spotType: "Tipo de Spot", sortBy: "Ordenar por", trustLevel: "Nível de confiança", weather: "Clima", buySellGear: "Comprar/Vender Equipamentos", stash: "Stash", more: "Mais", newHere: "Novo por aqui?", welcomeDesc: "Descubra spots de skate, eventos e a comunidade.", getOnZapstore: "Baixe na Zapstore", dismiss: "Dispensar", addedBy: "Adicionado por", directions: "Rota", viewDetails: "Ver detalhes", viewDetailsArrow: "Ver detalhes →", spotDetails: "Detalhes do spot", skateShop: "Skate Shop", skateSpot: "Skate Spot", youAreHere: "Você está aqui", conditions: "Condições", weatherScoreSuffix: "{{score}}/100 clima", wind: "Vento", humidity: "Umidade", airQuality: "Qualidade do ar", threeDayForecast: "Previsão de 3 dias", gearForSale: "Equipamentos à venda ({{count}})", viewItems: "Ver itens →", viewAllItems: "Ver todos os {{count}} itens →", viewGear: "Ver equipamentos →", localTour: "Tour local", meetAt: "Encontro em: {{place}}", hours: "{{count}} horas", level: "nível {{level}}", viewTour: "Ver tour →", upcomingEvent: "Próximo evento", viewEvent: "Ver evento →", skateCrew: "Skate Crew", members: "{{count}} membros", since: "Desde {{year}}", viewCrew: "Ver crew →", acceptsBitcoin: "Aceita Bitcoin", boosted: "Impulsionado", website: "Site", offlineSavedSpots: "Offline · mostrando spots salvos", cantReachRelays: "Não foi possível alcançar os relays", relayOnlineNoAnswer: "Você está online, mas o relay da comunidade não está respondendo agora.", youreOffline: "Você está offline.", savedOnDevice: "Os spots que você já viu estão salvos neste dispositivo e aparecerão aqui.", noSpotsMatchTitle: "Nenhum spot corresponde", noSpotsMatchDesc: "Tente uma busca diferente ou limpe os filtros.", noSpotsMappedYet: "Nenhum spot mapeado ainda", noSpotsMappedDesc: "Seja o primeiro a mapear seu park — leva um minuto, é seu, e o próximo skatista que passar vai agradecer.", addFirstSpot: "Adicionar o primeiro spot", findSpotsNearMe: "Encontrar spots perto de mim", locating: "Localizando…", refiningLocation: "Refinando sua localização…", refiningLocationDesc: "Centralizado no seu último spot — ajustando um sinal de GPS novo.", locatingYou: "Localizando você…", locatingDesc: "Obtendo sinal de GPS. Isso pode levar até um minuto na primeira vez.", foundYou: "Encontramos você", foundYouDesc: "Mapa centralizado na sua localização.", locationPermissionNeeded: "Permissão de localização necessária", permissionNeededDesc: "Permita a localização para o SkateSpots em Configurações → Apps → SkateSpots → Permissões do seu dispositivo, depois toque em Perto de mim novamente.", locationTimedOut: "Tempo de localização esgotado", timeoutNativeDesc: "Não foi possível obter a localização a tempo. Se você está em local fechado, o GPS não vê satélites — ative a Localização por rede (Configurações → Localização) ou vá para um local aberto e tente de novo.", timeoutWebDesc: "Não foi possível obter sua localização a tempo. Verifique seu sinal e tente novamente.", noLocationProvider: "Nenhum provedor de localização", noProviderNativeDesc: "Seu celular não está fornecendo localização. Em ROMs focadas em privacidade (ex.: GrapheneOS), ative a Localização por rede em Configurações → Localização, ou garanta que o GPS esteja ligado e tente ao ar livre.", noProviderWebDesc: "Nenhum provedor de localização disponível. Ative os serviços de localização e tente novamente.", locationUnavailable: "Localização indisponível", unavailableNativeDesc: "Ative Localização/GPS nas configurações do seu celular, permita a localização para o SkateSpots (Configurações → Apps → SkateSpots → Permissões) e tente novamente.", unavailableWebDesc: "Não foi possível determinar sua localização. Certifique-se de que os serviços de localização estejam ativados.", locationBlocked: "Localização bloqueada", locationBlockedDesc: "Seu navegador bloqueou o acesso à localização para este site. Veja como reativar:", locationPlatformAndroid: "Chrome no Android", locationPlatformIos: "Safari no iOS", locationPlatformDesktop: "Chrome no desktop", locationPlatformFirefox: "Firefox", locationStepsAndroid: "Toque no ícone de cadeado na barra de endereço → Configurações do site → Localização → Permitir", locationStepsIos: "App Ajustes → Safari → Localização → Permitir (ou toque no botão \"AA\" na barra de endereço do Safari)", locationStepsDesktop: "Clique no ícone de cadeado → Configurações do site → Localização → Permitir", locationStepsFirefox: "Clique no ícone de cadeado → Conexão segura → Mais informações → Permissões → Acessar sua localização → Permitir", gotIt: "Entendi", addSpot: "Adicionar Spot", addShop: "Adicionar Loja", addEvent: "Adicionar Evento", addSpotHereTitle: "Adicionar um spot aqui?", addSpotHereDesc: "Solte um pino onde você tocou", sellGear: "Vender Equipamentos", offerTour: "Oferecer Tour", closeAddMenu: "Fechar menu de adição", addMenuAria: "Adicionar spot, loja, evento, equipamento ou tour", localChat: "Chat local", localChatDesc: "Chat ao vivo para onde o mapa estiver centralizado. Escolha o alcance do canal.", btcMapShowing: "Mostrando {{count}} lugares onde você pode Spedn seus sats por perto", btcMapShow: "Mostrar lugares onde você pode Spedn seus sats (via BTC Map)", yourPrivateStash: "Seu Stash Privado", stashIntro: "Acompanhe seus equipamentos, defina preços e encontre trocas com outros skatistas.", encryptionRequired: "Criptografia necessária", encryptionRequiredDesc: "Use um signer com suporte a NIP-44 (Alby, nos2x, Amber).", myStash: "Meu Stash", encrypted: "Criptografado", itemsCount: "{{count}} itens", items: "Itens", wishlist: "Lista de desejos", types: "Tipos", stashEmpty: "Seu stash está vazio", addFirstItem: "Adicionar primeiro item", wishlistCount: "Lista de desejos ({{count}})", myGearCount: "Meus equipamentos ({{count}})", openFullStash: "Abrir Stash completo", addItem: "Adicionar item", searchSpotsPlaceholder: "Buscar spots...", selected: "Selecionado", noSpotsFound: "Nenhum spot encontrado. Tente uma busca diferente.", addingSpotsHint: "Adicionar spots ajuda os usuários a te encontrar ao navegar por locais específicos", report: "Denunciar", spotSingular: "1 spot", spotPlural: "{{count}} spots", view: "Ver", myCollections: "Minhas coleções", collectionsSubtitle: "Organize seus spots favoritos em listas personalizadas", newCollection: "Nova coleção", loginToCreate: "Entre para criar coleções", loginToCreateDesc: "Salve seus spots favoritos em listas personalizadas como \"Viagem a Barcelona 2024\" ou \"Melhores rails de SP\"", noCollections: "Nenhuma coleção ainda", noCollectionsDesc: "Crie sua primeira coleção para começar a organizar spots", createFirstCollection: "Crie sua primeira coleção", createNewCollection: "Criar nova coleção", createCollectionDesc: "Dê um nome e uma descrição opcional à sua coleção", collectionName: "Nome da coleção", collectionNamePlaceholder: "Viagem a Barcelona 2024", descriptionOptional: "Descrição (opcional)", descriptionPlaceholder: "Meus spots favoritos da minha viagem a Barcelona...", creating: "Criando...", createCollection: "Criar coleção", editCollection: "Editar coleção", saving: "Salvando...", saveChanges: "Salvar alterações", deleteCollectionTitle: "Excluir coleção?", deleteCollectionDesc: "Isso excluirá permanentemente \"{{title}}\". Os spots em si não serão afetados.", deleting: "Excluindo...", collectionCreated: "Coleção criada!", collectionCreatedDesc: "\"{{title}}\" está pronta para spots", collectionCreateFailed: "Falha ao criar a coleção", collectionUpdated: "Coleção atualizada!", changesSaved: "Suas alterações foram salvas", collectionUpdateFailed: "Falha ao atualizar a coleção", collectionDeleted: "Coleção excluída", collectionDeletedDesc: "\"{{title}}\" foi removida", collectionDeleteFailed: "Falha ao excluir a coleção", somethingWentWrong: "Algo deu errado", }, mapPage: { title: "Lojas e Spots", spots: "Spots", shops: "Lojas", filters: "Filtros", listView: "Lista", mapView: "Mapa", nearMe: "Perto de mim", searchPlaceholder: "Buscar spots...", noSpotsInArea: "Nenhum spot nesta área", zoomIn: "Aproximar", zoomOut: "Afastar", myLocation: "Minha localização", locationsFound: "{{count}} locais encontrados", spotsOnly: "Somente spots", shopsOnly: "Somente lojas", spotsAndShops: "Spots e Lojas", noSpotsMatch: "Nenhum spot corresponde aos seus filtros.", noSpotsYet: "Nenhum spot foi adicionado ainda.", addFirstSpot: "Adicionar primeiro spot", }, spotUi: { claim: { areYouOwner: "Este spot é seu?", privateDesc: "Este spot está marcado como privado. Se você é dono ou cuida dele, reivindique-o — um moderador do SkateSpots confirma a propriedade e então você assume o anúncio.", claimSpot: "Reivindicar este spot", nip05Required: "Você precisa de um NIP-05 verificado para reivindicar um spot privado (prova de que você controla uma identidade Nostr). Adicione um no seu perfil e volte aqui.", addNip05: "Adicionar NIP-05 nas Configurações", pendingTitle: "Reivindicação aguardando revisão", pendingDesc: "Sua reivindicação foi enviada. Um moderador do SkateSpots vai revisá-la — você poderá concluir a reivindicação assim que for aprovada.", approvedTitle: "Reivindicação aprovada", approvedDesc: "Um moderador aprovou sua reivindicação. Conclua para se tornar o dono deste spot.", complete: "Concluir reivindicação", submitted: "Reivindicação enviada", submittedDesc: "Um moderador vai revisar sua reivindicação. Você assumirá o spot assim que for aprovada.", submitFailed: "Não foi possível enviar a reivindicação", submit: "Enviar reivindicação", submitting: "Enviando…", confirmTitle: "Reivindicar \"{{title}}\"?", confirmIntro: "Você está pedindo para se tornar o dono deste spot privado.", confirmBullet1: "Um moderador do SkateSpots revisa o pedido (não podemos verificar propriedade, apenas chaves Nostr)", confirmBullet2: "Se aprovado, você conclui a reivindicação para se tornar o dono e pode editar o spot", confirmBullet3: "O spot original permanece no Nostr — a rede é descentralizada", adminTitle: "Reivindicações de propriedade pendentes", adminApprove: "Aprovar", adminApproved: "Aprovado", adminApprovedDesc: "Agora eles podem concluir a reivindicação do spot.", adminApproveFailed: "Não foi possível aprovar a reivindicação", loginRequired: "Entre para reivindicar este spot privado, ou para pedir a propriedade.", }, abandonedDesc: "Última atualização {{time}}. Se o dono original estiver inativo, você pode reivindicar este spot para mantê-lo e melhorá-lo.", claimedNotice: "Anúncio reivindicado", claimedNoticeDesc: "Este spot foi republicado por um novo dono após uma reivindicação. O anúncio original ainda pode existir separadamente.", abandonedLoginDesc: "Última atualização {{time}}. Entre para reivindicar e manter este spot.", accessDeniedDesc: "Você só pode editar spots que você criou.", accessDeniedTitle: "Acesso negado", addAtLeastOneTag: "Adicione pelo menos uma tag.", additionalDetails: "Detalhes adicionais (opcional)", additionalDetailsPlaceholder: "Forneça qualquer contexto adicional que possa ajudar...", addNewTags: "Adicionar novas tags:", addNip05InSettings: "Adicionar NIP-05 nas Configurações", addPhoto: "Adicionar foto", addPhotoDesc: "Contribua com uma foto para ajudar outros a descobrir este spot.", addPhotoOrDescription: "Adicione uma foto ou uma descrição", addPhotoOrDescriptionDesc: "Dê aos skatistas algo para se orientar — uma imagem, ou uma linha sobre o lugar.", addPhotos: "Adicionar fotos", addPhotoToSpot: "Adicionar foto ao spot", adminDeleteDialogDesc: "Como admin do SkateSpots, você está removendo \"{{title}}\". Ele ficará oculto em todo o app para todos e um pedido de exclusão será enviado aos relays.", adminDeleteReason: "Admin do SkateSpots removeu o spot \"{{title}}\"", airQuality: "Qualidade do ar", altSkateSpot: "Skate spot: {{title}}", areYouShopOwner: "Você é o dono da loja?", askBeforeSkating: "Pergunte antes de andar", backToSpot: "Voltar ao spot", beFirstToListGear: "Seja o primeiro a anunciar equipamentos neste spot!", beFirstToSay: "Seja o primeiro a dizer algo.", byAuthor: "por {{name}}", captionPlaceholder: "Adicione uma legenda (opcional) - descreva o que há na foto, quando foi tirada, etc.", chatPublicNote: "Qualquer pessoa pode ler isto — as mensagens são públicas e efêmeras. Para conversas privadas, use as Mensagens Diretas.", checkPinBelow: "Confira o pino abaixo antes de adicionar uma duplicata.", claimBullet1: "Você se torna o dono e pode editar o spot", claimBullet2: "O spot original permanece (o Nostr é descentralizado)", claimBullet3: "Sua versão pode aparecer ao lado do original", claimFailed: "Falha na reivindicação", claiming: "Reivindicando...", claimIntro: "Você está prestes a reivindicar a propriedade deste spot. Isso criará sua própria versão do spot que você pode editar e manter.", claimSpot: "Reivindicar spot", claimThisSpot: "Reivindicar este spot", claimTitle: "Reivindicar \"{{title}}\"?", claimWhatHappens: "O que acontece quando você reivindica:", coachesAndFilmersAvailable: "Coaches e filmers disponíveis neste spot", coachesCount: "Coaches ({{count}})", coachHere: "Coach aqui", community: "Comunidade", communityVerified: "Verificado pela comunidade", communityVerifiedTitle: "Outro skatista contribuiu aqui (foto ou relato de status).", conditions: "Condições", contactForPermission: "Contato para permissão", contactInfo: "Informações de contato", contributePhoto: "Contribuir com foto", contributing: "Contribuindo...", couldNotSendMessage: "Não foi possível enviar a mensagem.", couldNotSubmit: "Não foi possível enviar", couldNotUploadPhoto: "Não foi possível enviar a foto. Você pode adicionar uma abaixo.", crewsThatSkateHere: "Crews que andam aqui", current: "Atuais:", currentTags: "Tags atuais neste spot:", daysAgo: "há {{count}} dia", daysAgoPlural: "há {{count}} dias", deleteDialogDesc: "Isso excluirá permanentemente \"{{title}}\" de todos os relays. Esta ação não pode ser desfeita.", deletedSpotReason: "Spot excluído", deleteFailed: "Falha ao excluir", deleteSpot: "Excluir spot", deleteSpotTitle: "Excluir spot?", differentSpotPublishAnyway: "É um spot diferente — publicar mesmo assim", dragDropOrClick: "Arraste e solte ou clique", dropPhotos: "Solte as fotos", duplicateOne: "Há um spot a menos de 60 m do seu pino. Se for o mesmo lugar, adicione sua foto ou um relato de status lá em vez de criar uma duplicata.", duplicateOther: "Há spots a menos de 60 m do seu pino. Se for o mesmo lugar, adicione sua foto ou um relato de status lá em vez de criar uma duplicata.", editSpotSeoDesc: "Edite seu spot de skate.", failedToContribute: "Falha ao contribuir", failedToPublish: "Falha ao publicar", failedToPublishDesc: "Algo deu errado. Verifique o console para detalhes.", failedToSubmitReport: "Falha ao enviar a denúncia", failedToSuggestTags: "Falha ao sugerir tags", failedToUpdate: "Falha ao atualizar", failedToUploadImage: "Falha ao enviar a imagem", failedToUploadPhoto: "Falha ao enviar a foto", feelsLikeTemp: "Sensação de {{temp}}°C", filmersCount: "Filmers ({{count}})", filmHere: "Filmar aqui", gearSwap: "Troca de equipamentos", geolocationNotSupported: "Geolocalização não suportada", geolocationNotSupportedDesc: "Seu navegador não suporta geolocalização.", getDirections: "Obter rota", hangTight: "Aguarde", hangTightDesc: "Sua foto ainda está sendo enviada. Ela será anexada em um segundo.", helpImproveSpot: "Ajude a melhorar este spot adicionando fotos ou sugerindo tags", hiddenByModerator: "Ocultado por um moderador", hiddenByModeratorDesc: "Este spot não aparece no mapa nem na busca. Você ainda pode vê-lo porque é seu. Editá-lo não vai desocultá-lo — ele permanece oculto até um moderador retirar o veredito.", humidity: "Umidade", imageUploaded: "Imagem enviada", imageUploadedDesc: "Sua imagem foi enviada com sucesso.", imHere: "Estou aqui", invalidCoordinates: "Coordenadas inválidas", invalidCoordinatesDesc: "Insira uma latitude válida (-90 a 90) e longitude válida (-180 a 180).", invalidNpub: "npub inválido", invalidNpubDesc: "Insira um endereço npub válido.", lastReported: "último {{time}}", listGear: "Anunciar equipamentos", listYourGearHere: "Anuncie seus equipamentos aqui", loadingChat: "Carregando chat…", locationError: "Erro de localização", locationFound: "Localização encontrada", locationFoundDesc: "Sua localização atual foi definida.", locationRequired: "Localização necessária", locationRequiredDesc: "Insira coordenadas ou use sua localização atual.", loginRequiredTitle: "Login necessário", logInToChat: "Entre para participar do chat local.", logInToContributePhotos: "Entre para contribuir com fotos", loginToEditSpot: "Você precisa entrar para editar este spot.", logInToReport: "Você precisa estar logado para denunciar conteúdo.", logInToReportStatus: "Entre para relatar o status deste spot.", logInToSuggestTags: "Entre para sugerir tags", manageNip05ToClaim: "Gerenciar NIP-05 para reivindicar", meetAtSpotForPickup: "💡 Encontro neste spot para retirada segura", memberOne: "{{count}} membro", memberOther: "{{count}} membros", messageFailed: "Falha na mensagem", messageMapper: "Mensagem ao mapeador", messagePlaceholder: "Envie uma mensagem para este spot… (tente /me ou /who)", messagesHiddenOne: "{{count}} mensagem ocultada pelo seu filtro de confiança. Reduza o filtro para ver mais.", messagesHiddenOther: "{{count}} mensagens ocultadas pelo seu filtro de confiança. Reduza o filtro para ver mais.", messagesHiddenShortOne: "{{count}} mensagem ocultada pelo seu filtro de confiança", messagesHiddenShortOther: "{{count}} mensagens ocultadas pelo seu filtro de confiança", metresAway: "a {{distance}} m de distância", moderatorVouchedDesc: "Um moderador revisou este spot e atestou sua qualidade. Mandou bem.", monthsAgo: "há {{count}} mês", monthsAgoPlural: "há {{count}} meses", newOwnerNpub: "npub do novo dono", newOwnerNpubHint: "Insira o npub do usuário para quem você quer transferir este spot.", nip05RequiredToClaim: "⚠️ Verificação NIP-05 necessária para reivindicar lojas", noCommunitySignalTitle: "Ainda sem foto da comunidade ou relato de status — ninguém confirmou este lugar.", breakdownPhotos: "{{count}} foto(s)", breakdownStatus: "{{count}} relato(s) de status", breakdownComments: "{{count}} comentário(s)", breakdownReactions: "{{count}} reação(ões)", breakdownCollections: "{{count}} salvamento(s)", breakdownZaps: "{{count}} zap(s)", breakdownTags: "{{count}} sugestão(ões) de tag", breakdownCrews: "{{count}} crew(s)", breakdownLab: "{{count}} link(s) pro", verifyNudgeTitle: "Seja o primeiro a confirmar este spot", verifyNudgeBody: "Uma foto ou um “já andei aqui” é como um spot é verificado — ajude o próximo skatista.", verifyNudgeStatus: "Já andei aqui", communityChip: "Comunidade", seenChip: "Visto", noGearListedYet: "Nenhum equipamento anunciado ainda", noMessagesYet: "Ainda não há mensagens neste canal local. Diga oi — \"alguém anda hoje à noite?\"", noPhoto: "Sem foto", noReportsYet: "Nenhuma denúncia ainda", noTags: "Sem tags", notASkateSpot: "Não é um skate spot", offerServicesHere: "💡 Ofereça seus serviços neste spot", photoCaptured: "Foto capturada!", photoCapturedDesc: "Sua foto foi enviada com sucesso.", photoContributed: "Foto contribuída!", photoContributedDesc: "Sua foto foi adicionada a este spot.", photosAdded: "Suas fotos foram adicionadas.", photosRecommended: "fortemente recomendado — spots sem foto ficam marcados como Não verificado", photosUploaded: "{{count}} fotos enviadas", photoUploaded: "Foto enviada", photoUploadedDesc: "Adicione uma legenda e envie para contribuir!", photoUploadFailed: "Falha no envio da foto", pleaseTryAgain: "Tente novamente", public: "Público", publicChatTitle: "Qualquer pessoa pode ler as mensagens deste canal — ele é público e não criptografado.", recentReports: "Denúncias recentes", recipientRequired: "Destinatário obrigatório", recipientRequiredDesc: "Insira o npub do novo dono.", removeAdmin: "Remover (admin)", removeSpot: "Remover spot", removeSpotAdminTitle: "Remover este spot? (admin)", reportOne: "denúncia", reportContent: "Denunciar conteúdo", reportContentDesc: "Ajude a manter a comunidade segura denunciando conteúdo inadequado.", reportedBySkaters: " por {{count}} skatistas — em análise. Se este é um spot real, adicione uma foto ou um relato de status para confirmá-lo.", reportedNotASpot: "Denunciado como não sendo um skate spot", reportingType: "Denunciando {{type}}", reports: "denúncias", reportShop: "Denunciar loja", reportSpot: "Denunciar spot", reportStatus: "Relatar status", reportSubmitted: "Denúncia enviada", reportSubmittedDesc: "Obrigado por ajudar a manter o SkateSpots seguro.", reportSubmittedLong: "Obrigado por ajudar a manter o SkateSpots seguro e preciso. Sua denúncia será revisada por membros confiáveis da comunidade.", reportSubmittedTitle: "Denúncia enviada", report: { notASkateSpot: { label: "Não é um skate spot", description: "Um registro de teste, ou um lugar que não é para skate de jeito nenhum", }, fakeSpot: { label: "Spot falso/inexistente", description: "Este spot não existe ou a localização está errada", }, stolenPhotos: { label: "Fotos roubadas/falsas", description: "As fotos são de banco de imagens ou roubadas de outro lugar", }, spamAd: { label: "Spam ou propaganda", description: "Conteúdo promocional ou anúncios duplicados", }, dangerousLocation: { label: "Local perigoso", description: "Propriedade privada, inseguro ou ilegal de acessar", }, inappropriateContent: { label: "Conteúdo inadequado", description: "Contém conteúdo ofensivo ou adulto", }, impersonation: { label: "Impersonação", description: "Alguém se passando por outra pessoa", }, other: { label: "Outro", description: "Algo mais não listado acima", }, }, targetType: { spot: "Spot", event: "Evento", tour: "Tour", shop: "Loja", user: "Usuário", listing: "Anúncio", coach: "Coach", filmer: "Filmer", }, sameOwner: "Mesmo dono", sameOwnerDesc: "Não é possível transferir para o dono atual.", saveChanges: "Salvar alterações", saving: "Salvando...", services: "Serviços", shareSpotText: "Confira este skate spot: {{title}}", shelter: "Abrigo", shelterHint: "Este spot é exposto ao tempo? Ajuda os skatistas a encontrar lugares secos quando chove.", shopClaimDesc: "Se você é dono ou cuida desta loja, pode reivindicá-la para verificar a propriedade e gerenciar o anúncio.", shopClaimNip05Hint: "Para reivindicar esta loja, adicione um identificador NIP-05 que corresponda ao domínio do site da loja.", skatersActiveDesc: "Pessoas que postaram neste canal nas últimas 24h.", skatersActiveOne: "{{count}} skatista ativo aqui", skatersActiveOther: "{{count}} skatistas ativos aqui", skatersSellingGear: "Skatistas deste spot estão vendendo equipamentos", skateSpot: "Skate Spot", somethingWentWrong: "Algo deu errado", spot: "Spot", spotAdded: "Spot adicionado!", spotAddedDesc: "Seu skate spot foi publicado na rede.", spotAddedNoPhoto: "Publicado — e marcado como Não verificado até alguém adicionar uma foto. Uma imagem do spot ajuda muito.", spotChat: "Chat do spot", spotClaimed: "Spot reivindicado!", spotClaimedDesc: "Agora você é o dono deste spot. Você pode editá-lo a partir do seu perfil.", spotDeleted: "Spot excluído", spotDeletedDesc: "Pedido de exclusão enviado aos relays. A maioria dos relays removerá este conteúdo.", spotMayAlreadyBeOnMap: "Esse spot já pode estar no mapa", spotMayAlreadyExist: "Este spot já pode existir", spotMayBeAbandoned: "O spot pode estar abandonado", spotPhotoAlt: "Spot", spotRemoved: "Spot removido", spotRemovedDesc: "Este spot foi removido e ficará oculto em todo o SkateSpots.", spotSeoDesc: "Veja este spot de skate no SkateSpots.", spotStatus: "Status do spot", spotStatusDesc: "\"{{title}}\" ainda dá pra andar? Avise a comunidade sobre o estado atual.", spotTypeRequired: "Tipo de spot obrigatório", spotTypeRequiredDesc: "Escolha um tipo de spot para os skatistas saberem com o que vão se deparar.", spotUpdated: "Spot atualizado!", spotUpdatedDesc: "Suas alterações foram publicadas na rede.", staffVerifiedTitle: "Um admin do SkateSpots revisou e atestou este spot.", statusNotePlaceholder: "Opcional: adicione detalhes (ex.: \"quinas novas no ledge\", \"segurança expulsa depois das 18h\")", statusReported: "Status relatado", statusReportedDesc: "Obrigado por manter o mapa atualizado. Seu relato está no ar.", submitReport: "Enviar denúncia", submitting: "Enviando...", suggestedByUser: "Sugerido por {{count}} usuário", suggestedByUsers: "Sugerido por {{count}} usuários", suggestedTagsContent: "Tags sugeridas para {{title}}: {{tags}}", suggestNTags: "Sugerir {{count}} tags", suggestOneTag: "Sugerir 1 tag", suggestTags: "Sugerir tags", suggestTagsDesc: "Ajude a categorizar este spot sugerindo tags relevantes.", tags: "Tags", tagsHint: "Adicione tags para recursos, superfícies, vibes (máx. {{max}})", tagsSuggested: "Tags sugeridas!", tagsSuggestedDesc: "Suas sugestões de tags foram enviadas.", takePhoto: "Tirar foto", threeDayForecast: "Previsão de 3 dias", tipTheMapper: "Dar gorjeta ao mapeador", tipTheMapperDesc: "Achou este spot útil? Envie um zap para agradecer ao mapeador!", titleRequired: "Nome obrigatório", titleRequiredDesc: "Insira um nome para este spot.", today: "Hoje", tomorrow: "Amanhã", transferDesc: "Transferir \"{{title}}\" para outro usuário. Esta ação não pode ser desfeita.", transferFailed: "Falha na transferência", transferOwnership: "Transferir propriedade", transferRequestContent: "Pedido de transferência de propriedade do spot \"{{title}}\"", transferRequested: "Transferência solicitada", transferRequestedDesc: "O novo dono precisará reivindicar o spot para concluir a transferência.", transferring: "Transferindo...", transferSpotOwnership: "Transferir propriedade do spot", transferWarningDesc: "Após a transferência, você não poderá mais editar ou excluir este spot.", typeToSearchTags: "Digite para buscar ou adicionar tags...", underReview: " — em análise. Se este é um spot real, adicione uma foto ou um relato de status para confirmá-lo.", untitledSpot: "Spot sem título", unverified: "Não verificado", updateDetailsFor: "Atualize os detalhes de {{title}}", updateSpotDesc: "Atualize as informações deste spot. Todos os campos marcados com * são obrigatórios.", uploadAPhoto: "Envie uma foto", uploadAPhotoHint: "Arraste e solte ou clique · JPG, PNG, WebP", uploadedAlt: "Enviado", uploadFailed: "Falha no envio", uploadingPhoto: "Enviando foto…", uploadPhotoFirst: "Envie uma foto primeiro.", uvIndex: "Índice UV", verifiedBySkateSpots: "Verificado pelo SkateSpots", viewPhotoFullScreen: "Ver foto em tela cheia", viewPhotoOf: "Ver foto {{n}} de {{total}}", warning: "Aviso", weatherConditions: "Condições do tempo", weatherOnly: "apenas tempo", weatherOnlyUnconfirmed: "Apenas tempo. Ninguém confirmou que este é um skate spot ainda, então não há pontuação de condições — adicione uma foto ou um relato de status para confirmá-lo.", whyReporting: "Por que você está denunciando isto?", wind: "Vento", yearsAgo: "há {{count}} ano", yearsAgoPlural: "há {{count}} anos", }, diyUi: { title: "DIY — Faça você mesmo", tagline: "Guias, ferramentas abertas e projetos para construir seus próprios decks, rampas e pistas de concreto — e depois encontrar as pessoas, os lugares e o mercado para acompanhar.", doItWithPeople: "Faça com gente", backToDiy: "Voltar ao DIY", calc: { title: "Calculadora de custo de deck", intro: "Quanto custa fazer um deck — mão de obra, equipamento, materiais, tempo de processo, embalagem e margem — e um preço de venda justo. Salvo neste dispositivo.", }, designer: { title: "Designer de deck", intro: "Modele o contorno de um skate ou longboard e exporte um molde imprimível em 1:1, um SVG ou um DXF para CNC. Salvo neste dispositivo.", presets: "Predefinições", dimensions: "Dimensões", shape: "Formato", kicks: "Kicks", hardware: "Furos dos trucks", width: "Largura máx.", wheelbase: "Distância entre eixos", nose: "Comprimento do nose", tail: "Comprimento do tail", length: "Comprimento total", waist: "Cintura", endRound: "Arredondamento das pontas", concave: "Concave", thickness: "Espessura", tailKick: "Kick do tail", noseKick: "Kick do nose", holeNew: "New school (2.125″)", holeOld: "Old school (2.5″)", holeSpacing: "New school é 2.125″ × 1.625″ (54 × 41 mm); old school é 2.5″ × 1.625″. Furos de montagem de 3/16″.", topView: "Vista superior", sideView: "Perfil lateral", concaveSection: "Seção de concave", export: "Exportar", pdfA4: "PDF 1:1 · A4", pdfLetter: "PDF 1:1 · Letter", printNote: "Imprima o PDF em 100% (sem “ajustar à página”) e depois junte as folhas usando as cruzes nos cantos. O SVG também é em tamanho real.", note: "Este é o contorno 2D que você traça e corta. Para formas 3D completas e design de molde, uma ferramenta CAD de verdade ainda é a escolha certa.", }, source: "Fonte", comingSoon: "Em breve", footer: "Guias passo a passo estão a caminho. Por enquanto: encontre quem constrói no The Lab, mapeie seu spot e compre ou venda no Marketplace. Ande com segurança — proteções, luvas e óculos.", categories: { boards: "Decks", ramps: "Rampas e obstáculos de madeira", concrete: "Pistas de concreto e DIY", repairs: "Consertos e afinação", tools: "Ferramentas e projetos", }, cards: { ossBuild: { title: "Construa um skate", blurb: "Fabricação de deck passo a passo — lâminas, moldes, prensas e acabamento.", }, sk8cad: { title: "SK8CAD", blurb: "CAD open-source para formatos de deck, concave e design de molde.", }, deckCost: { title: "Custo e preço do deck", blurb: "Calcule materiais, mão de obra e um preço de venda justo antes de construir.", }, deckDesigner: { title: "Designer de deck", blurb: "Modele um contorno e imprima um molde 1:1 — ou exporte SVG/DXF para CNC.", }, ledgeBox: { title: "Construa um ledge ou box", blurb: "Um obstáculo de madeira para iniciantes que você monta em um fim de semana.", }, quarterpipe: { title: "Construa um quarterpipe", blurb: "Projetos de rampa, transição e coping para um mini no quintal.", }, flatbar: { title: "Construa um flatbar", blurb: "Barato, portátil e a melhor forma de aprender rails.", }, concreteBasics: { title: "Noções básicas de concreto", blurb: "Misturar, montar a forma e dar acabamento a um ledge ou bank que dura.", }, coping: { title: "Coping e bordas", blurb: "Como instalar o coping e dar acabamento a uma transição para um grind liso.", }, buyParts: { title: "Compre peças e equipamentos", blurb: "Pegue decks, ferragens e ferramentas com vendedores no Marketplace.", }, mapSpot: { title: "Mapeie seu spot DIY", blurb: "Construiu algo? Adicione ao mapa para que outros encontrem e andem nele.", }, regrip: { title: "Troque o griptape de um shape", blurb: "Remova o grip velho e aplique o novo direitinho.", }, tune: { title: "Ajuste bearings e trucks", blurb: "Limpe os bearings, troque os bushings e ajuste a geometria dos seus trucks.", }, printMolds: { title: "Moldes impressos em 3D", blurb: "Arquivos de moldes e bases de alinhamento imprimíveis da comunidade.", }, sk8cadTools: { title: "Ferramentas de molde e alinhamento", blurb: "Projete moldes com bases de alinhamento integradas.", }, }, actions: { findBuilder: { title: "Encontre um Builder", blurb: "Builders de rampa e DIY no The Lab que podem projetar ou construir para você.", }, findCrew: { title: "Encontre uma crew de DIY", blurb: "Crews focadas em construir — junte-se às que transformam spots em realidade.", }, mapSpot: { title: "Mapeie um spot DIY", blurb: "Adicione o spot que você construiu para que ele fique no mapa.", }, sellBuilds: { title: "Venda suas construções", blurb: "Anuncie decks, rampas ou peças que você faz no Marketplace.", }, findCoach: { title: "Encontre um coach", blurb: "Coaches que ensinam módulos de skate DIY e construção de spots.", }, }, }, labelsUi: { spotCategory: { street: { label: "Street", description: "Spots aleatórios encontrados, terreno urbano", }, transition: { label: "Transition", description: "Superfícies curvas/com rampa", }, park: { label: "Park", description: "Skateparks construídos", }, plaza: { label: "Plaza", description: "Praças urbanas (como MACBA, Love Park)", }, }, spotFeature: { wallrides: "Wallrides", stairs: "Escadas e corrimãos", rails: "Rails", ledges: "Ledges e guias", gaps: "Gaps", flatground: "Flatground", "manual-pads": "Manual Pads", "half-pipes": "Half Pipes", "quarter-pipes": "Quarter Pipes", "mini-ramps": "Mini Rampas", bowls: "Bowls", vert: "Vert Ramps", "mega-ramps": "Mega Rampas", hubbas: "Hubbas", "euro-gaps": "Euro Gaps", banks: "Banks", "spine-ramps": "Spine Ramps", "roll-ins": "Roll-ins", hips: "Hips", volcano: "Volcano", pyramids: "Pirâmides / Funboxes", "snake-runs": "Snake Runs", "pump-track": "Pump Track Rollers", "flat-bars": "Flat Bars", }, spotType: { street: "Street", transition: "Transition", park: "Park", plaza: "Plaza", wallrides: "Wallrides", stairs: "Escadas e corrimãos", rails: "Rails", ledges: "Ledges e guias", gaps: "Gaps", flatground: "Flatground", "manual-pads": "Manual Pads", "half-pipes": "Half Pipes", "quarter-pipes": "Quarter Pipes", "mini-ramps": "Mini Rampas", bowls: "Bowls", vert: "Vert Ramps", "mega-ramps": "Mega Rampas", hubbas: "Hubbas", "euro-gaps": "Euro Gaps", banks: "Banks", "spine-ramps": "Spine Ramps", "roll-ins": "Roll-ins", hips: "Hips", volcano: "Volcano", pyramids: "Pirâmides / Funboxes", "snake-runs": "Snake Runs", "pump-track": "Pump Track Rollers", "flat-bars": "Flat Bars", diy: "DIY", rail: "Rail", ledge: "Ledge", gap: "Gap", bowl: "Bowl", stall: "Stall", slappy: "Slappy", }, access: { public: { label: "Público - Aberto para todos", }, private: { label: "Propriedade privada - Necessário permissão", }, locals: { label: "Pergunte aos locais primeiro", }, }, shelter: { outdoor: { label: "Ao ar livre", short: "Ao ar livre", description: "Totalmente exposto — a chuva interrompe o rolê", }, partial: { label: "Parcialmente coberto", short: "Parcialmente coberto", description: "Alguns obstáculos ficam secos", }, covered: { label: "Coberto / com teto", short: "Coberto", description: "Ao ar livre, mas sob um teto", }, indoor: { label: "Indoor", short: "Indoor", description: "Totalmente fechado — ande com chuva ou sol", }, }, eventType: { contest: "Contest", demo: "Demo", session: "Sessão", workshop: "Workshop", premiere: "Premiere", tradeshow: "Feira", gameskate: "Game of Skate", concert: "🎸 Show", jam: "🎵 Jam", festival: "🎪 Festival", popup: "🎯 Pop-Up", }, gearCategory: { deck: "Deck", trucks: "Trucks", wheels: "Wheels", bearings: "Bearings", shoes: "Tênis de Skate", clothing: "Roupas", protective: "Equipamento de proteção", stickers: "Adesivos", wax: "Cera", tools: "Ferramentas", griptape: "Griptape", rubbrick: "Rub Brick", }, gearCondition: { new: { label: "Novo", description: "Nunca usado, ainda na embalagem", }, like_new: { label: "Seminovo", description: "Quase sem uso, excelente estado", }, good: { label: "Bom", description: "Desgaste normal, funciona perfeitamente", }, well_used: { label: "Bastante usado", description: "Mostra desgaste mas ainda funciona", }, }, priceType: { fixed: { label: "Preço fixo", description: "Preço definido em USD ou sats", }, free: { label: "Grátis", description: "Doando", }, trade: { label: "Troca", description: "Procurando trocar", }, offer: { label: "Aceito ofertas", description: "Preço negociável", }, }, listingType: { selling: { label: "Vendendo", description: "Anunciando equipamento para venda", }, wtb: { label: "Quero comprar", description: "Procurando equipamento específico", }, }, tour: { spotType: { street: "Street", park: "Park", diy: "DIY", transition: "Transition", hidden: "Joias escondidas", }, category: { local: { label: "Tour local", description: "Mostre spots escondidos na sua cidade", }, national: { label: "Tour nacional", description: "Viagens de carro por várias cidades do país", }, international: { label: "Tour internacional", description: "Aventuras transfronteiriças por vários países", }, destruction: { label: "World Destruction", description: "Competição global de equipes estilo KOTR", }, }, }, crew: { vibe: { street: "Street", transition: "Transition / Vert", park: "Park", diy: "DIY", cruising: "Cruising / Filmagem", oldschool: "Old School", allterrain: "All Terrain", girls: "Garota / Mulher", youth: "Juventude / Groms", adaptive: "Adaptado", punk: "Punk", hiphop: "Rap / Hip-Hop", }, focus: { mixed: "Misto / Geral", builder: "DIY e Builders", photo: "Foto e Filmagem", coaching: "Coaching", art: "Arte e Design", music: "Banda e Música", wellness: "Treino e Fisio", }, focusDescription: { mixed: "Uma crew de skate comum — aparece apenas na página de Crews.", builder: "Uma crew de DIY / construção de park — também aparece no The Lab em Builders.", photo: "Uma crew de filmagem, fotografia ou edição — também aparece no The Lab em Foto e Filmagem.", coaching: "Uma crew de coaching / aulas — também aparece no The Lab em Coaching.", art: "Um coletivo de arte, design, graffiti ou tatuagem — também aparece no The Lab em Arte e Design.", music: "Uma banda ou coletivo musical — também aparece no The Lab em Música.", wellness: "Uma crew de treino, fitness ou fisio — também aparece no The Lab em Treino.", }, lookingFor: { filmer: "Filmer", photographer: "Fotógrafo", editor: "Editor de vídeo", coach: "Coach", builder: "Builder de rampa", artist: "Artista / Designer", musician: "Músico / Banda", members: "Novos membros", }, role: { filmer: "Filmer", photographer: "Fotógrafo", editor: "Editor", coach: "Coach", builder: "Builder", artist: "Artista", graffiti: "Graffiti", tattoo: "Tatuagem", trainer: "Preparador", musician: "Músico", judge: "Jurado", manager: "Gerente de equipe", og: "OG", }, }, memberVisibility: { public: { label: "Público", description: "Qualquer pessoa pode te ver nesta crew — na página pública da crew e na descoberta de colegas de crew.", }, crew: { label: "Somente crew", description: "Apenas colegas de crew confirmados e o fundador te veem aqui. Para todos os outros, você aparece como um “membro oculto” anônimo. Observação: isto é privacidade no nível do app — sua tag de membro ainda existe publicamente nos relays, só nunca é mostrada a quem está fora.", }, }, tagCategory: { features: { name: "Recursos", description: "Obstáculos e terreno", }, surfaces: { name: "Superfícies", description: "Materiais e texturas", }, sizes: { name: "Tamanhos", description: "Dimensões e escala", }, stairs: { name: "Número de escadas", description: "Quantidade de degraus", }, vibes: { name: "Vibes", description: "Atmosfera e condição", }, location: { name: "Localização", description: "Contexto do local", }, tricks: { name: "Tricks", description: "Bom para tricks específicas", }, }, spotTagCategory: { street: { label: "Street", description: "Spots de rua - escadas, rails, ledges", }, park: { label: "Park", description: "Skateparks - públicos ou privados", }, diy: { label: "DIY", description: "Spots DIY/feitos em casa", }, plaza: { label: "Plaza", description: "Praças públicas com arquitetura amigável ao skate", }, }, status: { active: { label: "Ativo", description: "Tudo certo — vai lá andar.", }, bust: { label: "Bust", description: "Alto risco de expulsão — segurança ou polícia.", }, skate_stopped: { label: "Skate-stopped", description: "Com pinos / tampado, mas parcialmente andável.", }, closed: { label: "Fechado", description: "Fechado temporariamente — obra ou evento.", }, gone: { label: "Acabou", description: "Demolido, pavimentado ou cercado de vez.", }, }, price: { free: "GRÁTIS", trade: "Troca", makeOffer: "Aceito ofertas", offer: "Oferta", }, }, feesUi: { feeFeaturedEventLabel: "Evento em destaque", feeFeaturedEventDesc: "Destaque seu evento no SkateSpots", feeFeaturedEventBenefit: "Seu evento aparece no topo da página de eventos", feeLabProfileLabel: "Perfil Lab Pro", feeLabProfileDesc: "Destaque seus serviços no The Lab", feeLabProfileBenefit: "Selo Pro + posição em destaque quando os skatistas navegam pelo The Lab", feeFeaturedShopLabel: "Loja em destaque", feeFeaturedShopDesc: "Destaque sua skate shop no mapa e no diretório", feeFeaturedShopBenefit: "Selo verificado + pino em destaque no mapa", feeFeaturedTourLabel: "Tour em destaque", feeFeaturedTourDesc: "Destaque seu tour no SkateSpots", feeFeaturedTourBenefit: "Selo Pro + posição no topo quando os skatistas navegam pelos tours", duration7d: "7 dias", duration30d: "1 mês", duration90d: "3 meses", duration365d: "12 meses", metaActive: "{{label}} — Ativo", daysRemainingOne: "{{count}} dia restante", daysRemainingMany: "{{count}} dias restantes", zapRequestContent: "SkateSpots {{label}} ({{tier}})", errGenerate: "Falha ao gerar a fatura", paymentReceived: "⚡ Pagamento recebido!", paymentReceivedDesc: "{{amount}} sats — {{label}} está ativo agora.", autoPayFailed: "Falha no pagamento automático", autoPayFailedDesc: "Pague manualmente usando o QR ou a fatura abaixo.", payStatusUnknown: "Status do pagamento desconhecido — o pagamento pode ter passado. Verifique sua carteira antes de pagar de novo.", invoiceCopied: "Fatura copiada!", activeBang: "{{label}} Ativo!", chooseDuration: "Escolha a duração", bestValue: "Melhor custo-benefício", perDay: "{{price}}/dia", validFor: "Válido por", amountLine: "~${{usd}} USD · para {{name}} · {{tier}}", payToContinue: "Pague {{amount}} sats para continuar", generating: "Gerando fatura…", processing: "Processando pagamento…", invoiceQrAlt: "QR da fatura Lightning", copyInvoice: "Copiar fatura", openWallet: "Abrir carteira", payConnected: "Pagar com carteira conectada", scanAny: "Escaneie com qualquer carteira Lightning", tryAgain: "Tentar novamente", proReceiptTitle: "🦧⚡ Sasquatch Pro — você entrou!", proReceiptPass: "Passe: {{pass}} ({{sats}} sats)", proReceiptActiveUntil: "Ativo até: {{until}}", proReceiptUnlocked: "O que você desbloqueou:", proReceiptBullet1: "• Assistente pessoal — eu leio seu Stash, crews, spots e anúncios", proReceiptBullet2: "• Rascunhos de ações — anunciar equipamentos, postar status de spot, planejar viagens (você confirma)", proReceiptBullet3: "• Respostas que usam seu contexto pessoal, não apenas dados públicos", proReceiptBullet4: "• ⚡ Você apoia diretamente o SkateSpots e o mantém gratuito e sem anúncios", proReceiptThanks: "Obrigado por manter o SkateSpots gratuito e sem anúncios. Agora vai andar. 🛹", proReceiptSubject: "Recibo do Sasquatch Pro", receiptContent: "Sasquatch Pro — passe de apoiador {{tier}} 🦧⚡", receiptAlt: "Passe de apoiador Sasquatch Pro ({{tier}}), válido até {{until}}", purchaseComment: "Sasquatch Pro — {{tier}} 🦧", errLogin: "Entre para fazer upgrade para o Pro.", errStart: "Não foi possível iniciar a compra.", errRecord: "Não foi possível registrar seu passe.", }, cardUi: { save: "Salvar cartão no Nostr", saved: "Cartão salvo", savedDesc: "Seu cartão agora está assinado e verificável.", saveFailed: "Não foi possível salvar o cartão", notPublished: "Não publicado", titleNeon: "Rider", titleRest: "Card", saveFrontPng: "Salvar frente (PNG)", expired: "EXPIRADO", logoUploaded: "Logo enviado", logoUploadFailed: "Não foi possível enviar o logo", venue: "Local vinculado (opcional)", venueNone: "Sem local", venueHint: "Escolha um dos seus próprios spots para vincular este passe a um local. Um verificador confirmará que você é o dono.", venuePick: "Escolha seu local", parkNoVenue: "Um passe de Park só pode ser emitido pelo dono do local — mapeie um spot que você possui primeiro.", parkAddVenue: "Adicionar um spot", parkNeedsVenue: "Escolha um local que você possui", parkIssued: "Passes emitidos", parkRevoke: "Revogar", parkRevoked: "Revogado", parkRevokeFailed: "Não foi possível revogar", v: { valid: "Válido", validDesc: "Assinatura válida e emitida pelo local.", expired: "Expirado", expiredDesc: "Passou da data de validade.", revoked: "Revogado", revokedDesc: "O emissor cancelou este passe — não aceite.", invalid: "Inválido", invalidDesc: "A assinatura não é verificada. Não confie nela.", notFound: "Não encontrado", notFoundDesc: "Nenhum registro correspondente nos relays.", unverifiedIssuer: "Emissor não verificado", unverifiedIssuerDesc: "Este passe nomeia um local que não pertence à chave do emissor.", notBound: "Não vinculado", notBoundDesc: "Não vinculado a um local — não prova nada sobre acesso.", noRsvp: "Sem RSVP", noRsvpDesc: "O titular não tem RSVP registrado para este evento.", admitted: "Admitido", admittedDesc: "Evento do organizador + o titular confirmou presença.", noHolder: "Sem titular no link", noHolderDesc: "Este QR não tem titular de ingresso (`?h=`), então o titular não pode ser verificado.", }, passes: { tab: "Meus passes", pass: "Passe de acesso", none: "Nenhum passe ainda. Quando um local ou organizador emitir um para você, ele aparece aqui.", }, facets: { title: "Mostrar facetas de identidade", crews: "Crews", local: "Local", roles: "Funções no Lab", }, roles: { coach: "Coach", filmer: "Filmer", editor: "Editor", photographer: "Fotógrafo", builder: "Builder", artist: "Artista", graffiti: "Graffiti", tattoo: "Tatuagem", trainer: "Preparador", musician: "Músico", judge: "Jurado", organizer: "Organizador", barber: "Barbeiro", }, crew: { crewCard: "CARTÃO DA CREW", crewSub: "Sua crew, em um cartão", pick: "Escolha uma crew", none: "Você ainda não está em uma crew — entre ou crie uma primeiro.", hint: "O cartão é construído a partir dos dados assinados da própria crew. Edite a crew na página dela para alterá-lo.", members: "MEMBROS", spots: "SPOTS", est: "Desde {{year}}", openCall: "Vagas abertas", verifiedCrew: "Crew verificada", viewCrew: "Ver a crew", }, event: { pass: "PASSE DO EVENTO", passSub: "Um passe para um evento ao qual você vai", pick: "Escolha um evento", none: "Nenhum evento ainda — crie um, ou confirme presença em um, primeiro.", hint: "O passe é construído a partir dos dados assinados do próprio evento. Apenas o organizador pode alterá-lo.", admits: "ADMITE", going: "{{count}} vão", verifiedEvent: "Evento verificado", viewEvent: "Ver o evento", issuePass: "Emitir um passe de check-in", issuePassBtn: "Emitir passe", issuePassHint: "Um passe assinado para um participante específico — ele mostra na porta.", notOrganiser: "Apenas o organizador pode emitir passes", passIssued: "Passe emitido", issueFailed: "Não foi possível emitir o passe", issuedPasses: "Passes de check-in emitidos", }, studio: { unsaved: "Alterações não salvas", saved: "Salvo", saveChanges: "Salvar alterações", allSaved: "Salvo — tudo em dia", showOnCard: "Mostrar no cartão", derived: "Do seu perfil de Skater", noSkaterProfile: "Ainda sem perfil de Skater —", editSkaterProfile: "adicione seus estilos e nível", noPhoto: "Ainda sem foto de perfil —", addPhoto: "adicione uma no seu perfil", finishTitle: "Termine seu cartão", finishDesc: "Uma foto e um perfil de Skater fazem ele parecer real.", checkPhoto: "Foto de perfil", checkName: "Nome de exibição", checkProfile: "Estilos e nível", checkCrew: "Entre em uma crew", moreTypes: "Mais tipos de cartão são desbloqueados conforme você mapeia spots que possui, entra em crews ou confirma presença em eventos.", accent: "Cor de destaque", accentHint: "Substitui a cor de destaque do tema", accentClear: "Usar a cor do tema", logo: "Logo / brasão personalizado", logoAdd: "Enviar", logoChange: "Alterar", logoClear: "Remover", }, back: { title: "Verso imprimível", desc: "Crews, funções, patrocinadores e links no verso", showBack: "Mostrar verso", showFront: "Mostrar frente", empty: "Nada aqui ainda — adicione crews, funções ou patrocinadores.", }, verify: { checking: "Verificando o cartão…", notFound: "Cartão não encontrado", notFoundDesc: "Nenhum evento correspondente foi encontrado nos relays. Ele pode ter sido excluído, ou o link está errado.", invalid: "Assinatura inválida", invalidDesc: "Este evento existe, mas sua assinatura não é verificada. Não confie nele.", authentic: "Autêntico", authenticDesc: "A assinatura do emissor é válida.", kind: "Tipo", kindPark: "Cartão de acesso ao Park", kindRider: "Cartão do Rider", kindCrew: "Cartão da Crew", kindEvent: "Passe de evento", organiser: "Organizador", expired: "Expirado", valid: "Válido", holder: "Titular", ticketHolder: "Titular do ingresso", rsvp: "RSVP", rsvpGoing: "Vou", rsvpInterested: "Interessado", rsvpNone: "Nenhum RSVP encontrado", revoked: "Passe revogado", revokedDesc: "O emissor cancelou este passe — não aceite.", issuedBy: "Emitido por", accessLevel: "Nível de acesso", validThru: "Válido até", selfIssued: "Status", selfIssuedDesc: "Cartão de identidade autoemitido", venue: "Local", venueVerified: "Verificado — a chave do dono do local corresponde ao emissor.", venueMismatch: "Este passe nomeia um local que não pertence à chave do emissor.", venueNone: "Não vinculado a um local.", viewCard: "Ver o cartão", disclaimer: "Uma assinatura válida prova quem assinou este cartão — não é prova de habilidade nem de direitos de acesso além do que o local emitiu.", details: "Detalhes", invalidLink: "Link inválido", invalidLinkDesc: "Isso não parece ser um link de cartão válido.", }, public: { invalid: "Isso não parece ser um link de cartão válido.", createYourOwn: "Crie seu próprio cartão", editYourCard: "Edite seu cartão", backToEditor: "Voltar ao editor", backHome: "Voltar ao início", notCustomised: "Este skatista ainda não personalizou o cartão — esta é a aparência padrão.", verifyNote: "Escaneie o QR no cartão para verificá-lo.", }, }, routeUi: { destination: "Destino", routeTo: "Rota até {{label}}", routeToLabel: "Rota até", search: "Buscar", description: "Opções de rota e direções no app.", routeMapAria: "Mapa da rota", findingLocation: "Encontrando sua localização…", plottingRoute: "Traçando sua rota…", refiningLocation: "Refinando localização…", offlineSavedRoute: "Offline · rota salva {{age}}", tapMapStart: "Toque no mapa para definir seu ponto de partida", fitRouteAria: "Ajustar a rota inteira no mapa", wholeRoute: "Rota inteira", next: "Próximo", nextStep: "Próximo · passo {{n}}", followTheLine: "Siga a linha", toTheTurn: "até a curva", toGo: "a percorrer", tryAgain: "Tentar novamente", mode: { foot: "Skate / A pé", bike: "Bicicleta", moto: "Moto", car: "Carro", transit: "Transporte público", }, from: "De", myLocation: "Minha localização", tapTheMap: "Toque no mapa…", chooseOnMap: "Escolher no mapa", direct: "direto", transferOne: "1 baldeação", transfers: "{{count}} baldeações", options: "{{count}} opções", ride: "andar", arrive: "chegar", speedAvg: "{{speed}} km/h média", stepsCount: "{{count}} passos", onABoard: "de skate", usesDrivingRoads: "usa vias para carros", drivingEstimate: "estimativa para carro", updating: "atualizando…", pickMode: "Escolha um modo para ver sua rota.", waitingLocation: "Aguardando sua localização…", routeSteps: "Passos da rota", walkingRoute: "rota a pé — mais rápida de skate", planningView: "Modo de planejamento — toque em Iniciar para seguir com curvas ao vivo, voz e chegada.", leaveNow: "Sair agora", departAt: "Partir às", arriveBy: "Chegar até", departureTime: "Horário de partida", arrivalTime: "Horário de chegada", only: "Somente", clear: "limpar", itinerary: "Itinerário", group: { bus: "Ônibus", tram: "Bonde", metro: "Metrô", train: "Trem", ferry: "Balsa", }, walk: "A pé", rideVerb: "Andar", walkLower: "a pé", rideLower: "andar", toStop: "até", track: "plataforma {{track}}", stopOne: "1 parada", stopsCount: "{{count}} paradas", tickets: "ingressos ↗", done: "Concluir", stop: "Parar", start: "Iniciar", arrived: "Você chegou. 🛹", voiceOnNote: "A tela fica ligada · voz ativada — as curvas e a chegada são faladas.", voiceOffNote: "A tela fica ligada · voz desativada.", followNote: "Curvas, voz e chegada enquanto você anda. Mantém a tela ligada.", voiceOffAria: "Desativar a orientação por voz", voiceOnAria: "Ativar a orientação por voz", voiceStart: "Iniciando a navegação", voiceArrived: "Você chegou", voiceIn: "Em {{metres}} metros, {{instruction}}", voiceContinue: "continue", voiceContinueCaps: "Continue", errPermissionDenied: "Permissão de localização negada.", errWaitingGps: "Aguardando um sinal de GPS…", errPermissionDeniedLong: "Permissão de localização negada. Ative a localização para traçar a rota de onde você está.", errNoLocation: "Não foi possível obter sua localização. Tente novamente.", errNoLocationShort: "Não foi possível obter sua localização.", errTransitNoRouteFiltered: "Nenhuma rota para esse horário ou modo de transporte — tente outro horário, ou inclua mais modos.", errTransitNoRoute: "Nenhuma rota de transporte público encontrada aqui — esta área pode não publicar horários abertos.", errTransitUnreachable: "Não foi possível alcançar o serviço de transporte público. Verifique sua conexão e tente novamente.", errRoutingBusy: "O serviço de rotas está sobrecarregado agora — tente novamente em um instante.", errNoRouteMode: "Nenhuma rota para este modo — o destino pode estar fora da malha viária. Tente outro modo.", errRoutingUnreachable: "Não foi possível alcançar o serviço de rotas. Verifique sua conexão e tente novamente.", departures: "Partidas", upcomingFrom: "Próximas partidas de {{stop}}", loadingDepartures: "Carregando partidas…", noDepartures: "Nenhuma partida próxima encontrada nesta parada.", live: "ao vivo", cancelled: "cancelado", refresh: "Atualizar", tripLoginTitle: "Entre para salvar", tripLoginDesc: "Faça login para guardar esta viagem como uma Coleção.", tripCollectionTitle: "Viagem de skate a {{destination}} 🛹", tripCollectionDesc: "Plano de viagem do The Sasquatch — {{count}} dias em {{destination}}.", tripCollectionDescOne: "Plano de viagem do The Sasquatch — {{count}} dia em {{destination}}.", tripSavedTitle: "Salvo nas Coleções 🦧", tripSavedDesc: "Sua viagem a {{destination}} está salva.", tripSaveFailed: "Não foi possível salvar", tripSaveFailedDesc: "Tente novamente em um segundo.", daysInDestinationOne: "{{count}} dia em {{destination}}", daysInDestination: "{{count}} dias em {{destination}}", wetForecast: "Previsão de chuva — procure uma crew local para opções cobertas/indoor.", dayLabel: "Dia {{n}}", freeSkate: "Skate livre — explore e filme. 🎥", tapToBook: "toque para agendar / zap ⚡", localCrews: "Crews locais", saving: "Salvando…", savedToCollections: "Salvo nas Coleções", saveSpotOne: "Salvar {{count}} spot em uma Coleção", saveSpots: "Salvar {{count}} spots em uma Coleção", flights: "Voos", stays: "Hospedagem", gettingAround: "Como se locomover", noMiddleman: "Eu planejo o skate — voos e hospedagem abrem nos sites reais (sem KYC, sem intermediário).", ageJustNow: "agora mesmo", ageMinAgo: "há {{count}} min", ageHourAgo: "há {{count}} h", ageDayAgo: "há {{count}} d", skateRightHere: "bem aqui", skateMin: "~{{count}} min de rolê", skateHours: "~{{hours}} h de rolê", maneuver: { headOut: "Saia", arrive: "Chegue ao spot", continueStraight: "Continue", bearLeft: "Incline à esquerda", bearRight: "Incline à direita", turnLeft: "Vire à esquerda", turnRight: "Vire à direita", sharpLeft: "Curva acentuada à esquerda", sharpRight: "Curva acentuada à direita", turn: "Vire", keepLeft: "Mantenha-se à esquerda", keepRight: "Mantenha-se à direita", takeFork: "Pegue a bifurcação", merge: "Entre na via", roundabout: "Pegue a rotatória", takeRamp: "Pegue o acesso", takeExit: "Pegue a saída", }, maneuverOnto: "{{instruction}} na {{road}}", }, sasquatchUi: { live: "ao vivo", offline: "offline", genericTitle: "Assistente SkateSpots 🦧", genericGreeting: "E aí! Sou o The Sasquatch. Pergunte qualquer coisa sobre spots, eventos, coaches, equipamentos, ou como o app funciona. Tenho dados ao vivo do relay do SkateSpots!", q1: "Planeje 3 dias em Lisboa", q2: "Encontre spots perto de mim", q3: "Algum evento chegando?", q4: "O que são crews?", q5: "Como funcionam os zaps?", q6: "O que é Nostr?", q7: "O que é Meu Stash?", q8: "Isso é gratuito?", bubbleTitle: "Pressione e arraste para mover · Toque para abrir", openGuideAria: "Abrir o guia do Sasquatch", hideAria: "Ocultar o assistente Sasquatch", hide: "Ocultar assistente", showAria: "Mostrar o assistente Sasquatch", activeUntil: "Ativo até {{date}}", platformOwner: "Dono da plataforma", upgradeTitle: "Faça upgrade para o Sasquatch Pro", goPro: "Seja Pro", goProBlurb: "IA pessoal · a partir de 2k sats", aiBalanceTitle: "Saldo de créditos do Sasquatch AI (somente dono) — recarregue em {{provider}}", aiChip: "⚡ IA {{balance}}", minimizeToBubbleAria: "Minimizar para o balão", minimize: "Minimizar", closePanelAria: "Fechar painel", close: "Fechar", askLab: "Pergunte sobre Coaching e Filmagem", askMap: "Pergunte sobre Spots, Lojas e Equipamentos", askAnything: "Pergunte qualquer coisa 🛹", quickQuestions: "Perguntas rápidas:", you: "🧑 Você", thinking: "pensando...", inputPlaceholder: "Pergunte sobre spots, eventos, coaches...", liveDataFrom: "Dados ao vivo de", nostrRelays: "relays Nostr", clear: "limpar", gettingLocation: "📍 Obtendo sua localização…", findingClosest: "🔍 Encontrando os spots mais próximos…", checkingLive: "🔍 Verificando dados ao vivo…", planningTrip: "🗺️ Planejando sua viagem a {{destination}}...", searchingRelays: "🔍 Buscando nos relays por {{tool}}...", perk1: "Assistente pessoal — o Sasquatch lê seu próprio Stash, crews, spots e anúncios", perk2: "Rascunhos de ações: anunciar equipamentos, postar um status de skate, planejar uma viagem — você confirma antes de publicar qualquer coisa", perk3: "As respostas usam seu contexto pessoal, não apenas dados públicos", perk4: "⚡ Apoie diretamente o SkateSpots e o mantenha gratuito e sem anúncios", welcomeTitle: "Obrigado por apoiar o Sasquatch Pro! 🦧⚡", welcomeDesc: "Pagamento enviado — seu passe ativa quando o provedor confirmar (normalmente em um minuto). Obrigado por manter as ruas livres.", invoiceCopied: "Fatura copiada", dialogDesc: "Potencialize seu guia de skate com IA. 100% financia um app comunitário gratuito e sem anúncios.", proSupporter: "Você é um apoiador Pro ⚡", extendPrompt: "Quer estender? Escolha um plano abaixo para adicionar mais tempo.", scanToPayPre: "Escaneie para pagar", scanToPayAmount: "{{sats}} sats", scanToPayPost: "por {{label}} de Pro", invoiceQrAlt: "QR da fatura Lightning", copyInvoice: "Copiar fatura", ivePaid: "Já paguei", ivePaidHint: "Toque em \"Já paguei\" depois que sua carteira confirmar — isso registra seu passe na sua identidade Nostr.", freeStaysPre: "O Sasquatch grátis continua grátis — busca pública de spots/eventos/coaches, planejamento de viagens + o glossário completo de tricks. O Pro adiciona a camada ", freeStaysEmphasis: "pessoal + de ações", freeStaysPost: ".", loginFirst: "Faça login primeiro para fazer upgrade.", paysTo: "Paga para", overLightning: "via Lightning. Vinculado ao seu npub.", popular: "Popular", sats: "sats", extend: "Estender", done: "Pronto!", cancelledNothing: "Cancelado — nada foi publicado.", draftReview: "Rascunho — revise e confirme", statusTextPlaceholder: "Texto do status", titlePlaceholder: "Título", priceSatsPlaceholder: "Preço (sats)", conditionPlaceholder: "Condição", cancel: "Cancelar", aiTitle: "Sasquatch AI", owner: "Dono", notConfigured: "não configurado", unavailable: "indisponível", satsValue: "{{balance}} sats", theNode: "o nó", lowBalance: "Acabando — recarregue em {{provider}} ou a IA vai usar o provedor sem chave.", aiDesc: "IA paga por requisição, financiada em sats via Routstr. Recarrega quando está baixo.", tier7d: "7 dias", tier1m: "1 mês", tier3m: "3 meses", tier1y: "1 ano", badgeTry: "Experimente", badgeOff20: "20% off", badgeBest: "Melhor custo-benefício · 40% off", draftPostStatusTitle: "Postar um status de skate", draftAutoExpires: "Expira automaticamente em {{count}} min", draftPostStatusCta: "Postar status", draftCategory: "Categoria: {{value}}", draftSize: "Tamanho: {{value}}", draftCondition: "Condição: {{value}}", draftMaxPrice: "Preço máx.: {{price}} {{currency}}", draftPriceOpen: "Preço: em aberto", draftLookingForTitle: "Procurando \"{{title}}\"", draftWantedCta: "Postar anúncio de procura", draftPrice: "Preço: {{price}} {{currency}}", draftPriceOffer: "Preço: aceito ofertas", draftListTitle: "Anunciar \"{{title}}\" para venda", draftPublishCta: "Publicar anúncio", statusPosted: "Status postado 🛹", wantedPublished: "Anúncio de procura publicado 🔎", listingPublished: "Anúncio publicado 💸", mustBeLoggedIn: "Você precisa estar logado.", }, sasquatchChat: { faq: { hi: "E aí! Sou o The Sasquatch 🦧 Seu guia de skate com IA. Pergunte sobre spots, eventos, coaches, equipamentos — ou qualquer coisa sobre o app. Do que você precisa?", hello: "E aí! 🛹 Sou o The Sasquatch. Pergunte sobre spots de skate, eventos, coaches, ou como o app funciona. Qual é a boa?", hey: "E aí, skatista! 🤙 Pergunte sobre spots perto de você, eventos chegando, coaches, ou qualquer coisa do SkateSpots.", whoAreYou: "Sou o The Sasquatch 🦧 — o guia de IA do SkateSpots. Consigo encontrar spots de skate no mundo todo, procurar eventos, coaches, filmers e anúncios de equipamentos. Tudo com dados ao vivo do Nostr. Manda ver!", whatCanYouDo: "Consigo encontrar spots de skate por cidade ou país, procurar eventos chegando, encontrar coaches e filmers no The Lab, buscar anúncios de equipamentos e responder perguntas sobre como o app funciona. Tente: 'spots em Bangkok' ou 'encontre um coach'! 🛹", whatIsNostr: "Nostr é um protocolo simples e aberto para redes sociais descentralizadas. Pense no Twitter, mas sem uma única empresa controlando — você usa chaves criptográficas em vez de nomes de usuário, escolhe quais relays guardam seus dados (ou roda os seus), e uma conta funciona em todo app Nostr! 🔑", isThisPrivate: "Aqui vai a real 🛡️\n\n• Sua **localização de GPS fica no seu dispositivo** — o 'Perto de mim' só centraliza o mapa. Nunca é enviada para nós nem publicada.\n• **Spots que você adiciona são públicos** (esse é o ponto de um mapa compartilhado) — então não coloque um pino na porta da sua casa.\n• **DMs e chats de crew são criptografados de ponta a ponta** — só os membros conseguem ler.\n• Como qualquer site, os servidores que você acessa (tiles do mapa, relays) podem ver seu **IP**. Quer esconder isso também? Use uma VPN ou Tor.\n\nDetalhes completos na [Privacy page](/privacy). 🛹", privacy: "Versão rápida 🛡️: seu GPS nunca sai do seu dispositivo, os spots que você publica são públicos por design, e DMs/chats de crew são criptografados de ponta a ponta. Os servidores ainda podem ver seu IP (normal em qualquer site) — uma VPN ou Tor esconde isso se você quiser. Análise completa na [Privacy page](/privacy).", amITracked: "O SkateSpots não te rastreia — sem anúncios, sem perfilamento por analytics, sem venda de dados, e não há um servidor SkateSpots coletando sua localização. Seu GPS fica no seu dispositivo. A única coisa que os servidores veem (tiles do mapa, relays) é seu **IP** — igual a qualquer site. Use uma VPN ou Tor para esconder isso. Mais na [Privacy page](/privacy). 🛡️", doYouTrack: "Não — sem rastreamento, sem anúncios, sem coleta de dados. Seu GPS fica no seu dispositivo e não há servidor central te registrando. Os servidores que você acessa podem ver seu IP (como qualquer site); uma VPN/Tor esconde isso. Veja a [Privacy page](/privacy). 🛹", vpn: "Totalmente opcional, mas ótimo se você quer privacidade extra 🛡️. Uma VPN esconde seu **IP** (localização aproximada) dos servidores com quem o SkateSpots fala — tiles do mapa, relays, etc. Escolha um provedor sem logs em que você confie (ex.: Mullvad); evite os grátis duvidosos.\n\nAviso: uma VPN **não** esconde os spots que você publica (eles são públicos), e não ligue o GPS do navegador se está tentando ficar anônimo. Detalhes completos na [Privacy page](/privacy).", tor: "O Tor Browser te dá a privacidade de IP mais forte — ele te roteia por vários relays para que os servidores não vejam seu IP real 🧅. Custo: é mais lento, e mapas + alguns relays Nostr podem travar ou bloquear saídas Tor. Ótimo para os mais cautelosos.\n\nLembre-se: o Tor esconde seu IP, não os spots que você publica, e não ative o GPS do navegador se o objetivo é anonimato. Mais na [Privacy page](/privacy).", hideMyIp: "Duas opções gratuitas 🛡️: uma **VPN confiável** (fácil, rápida — esconde seu IP atrás dos servidores dela) ou o **Tor Browser** (privacidade máxima, mais lento). Qualquer uma impede que os servidores que o SkateSpots acessa vejam seu IP real. Obs.: elas não escondem os spots que você publica. Veja a [Privacy page](/privacy).", isMyLocation: "Sua localização está segura 📍 — o 'Perto de mim' lê seu GPS só no seu dispositivo, para centralizar o mapa e ordenar spots próximos. Nunca é publicada no Nostr, nunca é enviada para nós, nunca é compartilhada. Só os spots que você adiciona de propósito são públicos. Detalhes na [Privacy page](/privacy).", whatAreZaps: "Zaps são gorjetas instantâneas de Bitcoin via Lightning enviadas pelo Nostr! Clique no ⚡ em qualquer conteúdo e envie sats direto para a carteira do criador. Como dar 'like' mas com dinheiro de verdade. Instantâneo, ponto a ponto, sem intermediários. ⚡", howToLogin: "Dois jeitos:\n1. **Extensão de navegador** (Desktop): instale Alby ou nos2x, depois clique em 'Entrar'\n2. **Novo usuário**: clique em 'Cadastre-se' para gerar chaves. Baixe seu nsec (chave secreta) e SALVE — esta é sua conta para sempre!", whatIsCashu: "Carteira Bitcoin integrada! Tokens de ecash Cashu respaldados por Lightning — funciona offline nos spots, focada em privacidade (as mints não conseguem rastrear pagamentos). Vá em Carteira nas Configurações para usar. 🥜", whatIsNwc: "Nostr Wallet Connect — tipo um USB-C para carteiras Lightning. Conecte Alby, Minibits, Zeus ou Coinos uma vez e dê zap com um clique para sempre. Criptografado, você controla os limites de gasto. 🔌⚡", isItFree: "100% gratuito. Sem anúncios, sem assinaturas, sem enrolação corporativa. Feito por skatistas para skatistas. Financiado pela comunidade via Angor — confira a página de Apoiadores. Você também pode ganhar Bitcoin com zaps da comunidade por contribuir com spots de qualidade. 🛹", whatCanIDo: "Descubra spots no mundo todo no mapa, contrate profissionais no The Lab (coaches, filmers, fotógrafos, editores, builders de rampa), ande com uma crew, participe de eventos, faça tours, compre/venda equipamentos, acompanhe seu Stash privado, dê zap em criadores, confira o clima dos spots e construa a comunidade de skate descentralizada!", whatIsTheLab: "O The Lab é onde você contrata profissionais da cena do skate: Coaches, Filmers, Fotógrafos, Editores de Vídeo e Builders de rampa/park/DIY. Cada um pode ser uma pessoa solo ou um coletivo (crew/estúdio) — os membros confirmam com suas próprias chaves, então é legítimo. Tudo no Nostr, sem contas falsas. 🎓", whatIsACrew: "Crews são sua família do skate ancorada no mapa — com quem você anda, não quem você contrata. Cada crew tem território no mapa (pinos verdes), spots da casa, membros, vibes e um manifesto. Os membros confirmam com a própria chave. Crie uma em Crews → 'Criar crew'. 🤘", whatAreCrews: "Crews são sua família do skate ancorada no mapa — com quem você anda, não quem você contrata. Cada crew tem território no mapa (pinos verdes), spots da casa, membros e um manifesto. Os membros confirmam com a própria chave. Vá até a aba Crews para começar ou entrar em uma! 🤘", howToStartACrew: "Vá até a aba Crews → 'Criar crew'. Dê um nome, coloque seu território no mapa, adicione vibes (ou sua própria #hashtag), vincule seus spots da casa e adicione membros por npub. Cada membro confirma com a própria chave, então o elenco é legítimo. 🤘", whatIsMyStash: "Meu Stash é seu armário de equipamentos PRIVADO e criptografado (criptografia NIP-44). Acompanhe seus decks, trucks, wheels, tênis — com local de armazenamento, condição, raridade e preço. Só VOCÊ consegue ler, a menos que marque itens como públicos. Ótimo para seguro ou para planejar uma troca. 🎒", whatIsStash: "Meu Stash é seu inventário de equipamentos PRIVADO e criptografado. Registre tudo o que você tem — condição, onde está guardado, valor — tudo criptografado para que só você veja. Marque itens como públicos se quiser vender ou mostrar. 🎒", whatIsABuilder: "Builders são crews de rampa/park/DIY no The Lab que você pode contratar para construir transições, bowls, rails ou um park inteiro. Eles listam o que constroem, materiais, escala do projeto, e podem ter licença/seguro. Muitas vezes coletivos — e podem vincular os spots que construíram ao mapa. 🏗️", whatIsANutzap: "Nutzaps (NIP-61) são gorjetas de ecash enviadas pelo Nostr — tokens Cashu privados enviados direto para alguém. Você pode configurar o RECEBIMENTO de nutzaps na Carteira. (Enviar nutzaps completos está chegando — por enquanto, use zaps Lightning.) 🥜⚡", whatIsClink: "CLINK é um código de pagamento nativo do Nostr (um 'noffer'). Lojas, crews e profissionais do Lab podem adicionar um para que você possa pagá-los sem precisar de um endereço Lightning — você verá um botão 'Pagar via CLINK' com um QR. Escaneie com uma carteira CLINK como a ShockWallet. 🔗⚡ [specs](https://clinkme.dev/specs.html) [apps](https://clinkme.dev/apps.html)", whatIsNoffer: "Um noffer é um código de pagamento CLINK — uma forma reutilizável e nativa do Nostr de receber pagamentos sem servidor web nem endereço Lightning. Adicione o seu no perfil da sua loja/crew/Lab e as pessoas podem te pagar direto. 🔗", whatAreTours: "Tours são viagens de skate guiadas — sessões locais, road trips nacionais ou tours de destruição mundial. Encontre no mapa ou na seção Tours, encontre a galera e ande em terreno novo com os locais. 🗺️🛹", whatIsAShop: "Skate Shops são lojas locais listadas no mapa. Descubra e apoie skate shops de verdade (físicas ou online) na sua área — algumas até aceitam Bitcoin. 🏪", howToSellGear: "Vá em Troca de Equipamentos / Marketplace e crie um anúncio (NIP-99). Adicione fotos, preço em sats, condição, e opcionalmente vincule a um spot para aparecer no mapa. Os compradores te dão zap ou mandam mensagem direto. 🛹💸", supporters: "O SkateSpots é financiado pela comunidade via Angor (financiamento coletivo descentralizado em Bitcoin) — sem anúncios, sem investidores, sem venda de dados. Confira a página de Apoiadores para apoiar o projeto e manter as ruas livres. ❤️⚡", trustScore: "Pontuações de confiança (0-100) fornecidas pelo Relatr. Analisa sua rede Nostr: seguidores, atividade, engajamento, zaps. Mais alto = mais confiável. Ajuda a filtrar bots e spam. Confira qualquer perfil para ver a pontuação. 🛡️", whatRelay: "O SkateSpots usa: 🛹 relay.skate-spots.org (principal, na lista de permitidos pela qualidade) + relay.ditto.pub (global) + purplepag.es (agregador de perfis). Seus dados são replicados em todos eles para redundância.", tripPlanner: "Me diga uma cidade e eu monto uma viagem de skate dia a dia 🗺️ — spots, eventos, coaches e crews locais, atenta ao clima (dia de chuva = dica de crew para spots cobertos). Tente 'planeje 3 dias em Lisboa'. Consigo salvar tudo numa Coleção e te encaminhar para voos/hospedagem nos sites reais (sem KYC, sem intermediário). 🛹", planATrip: "Só diga 'planeje 3 dias em Barcelona' (ou qualquer cidade) e eu monto spots, sessões, coaches e crews locais para cada dia. Salve como uma Coleção e vai andar. 🗺️🛹", sasquatchPro: "**Sasquatch Pro** 🦧⚡ é um passe de apoiador via Lightning que desbloqueia meu lado pessoal:\n\n• 🧠 **Assistente pessoal** — eu leio seu próprio Stash, crews, spots e anúncios\n• ✨ **Rascunhos de ações** — anunciar equipamentos, postar seu status de skate, planejar viagens (você sempre confirma antes de publicar)\n• 💬 **Contexto pessoal** — minhas respostas usam seus próprios dados, não só resultados públicos\n• ⚡ **Apoie o projeto** — você mantém o SkateSpots gratuito e sem anúncios\n\nO Sasquatch grátis continua grátis: busca pública de spots/eventos/coaches/crews, o glossário e o planejamento de viagens funcionam sem o Pro. O Pro só adiciona o lado *pessoal*. Toque em **⚡ Seja Pro** lá em cima. Planos: 7 dias ~2k sats, 1 mês ~5k, 3 meses ~12k, 1 ano ~36k.", proPerks: "Vantagens do Pro 🦧⚡: assistente pessoal (lê seu Stash/crews/spots/anúncios), rascunhos de ações (anunciar equipamentos, postar status, planejar viagens — você confirma) e respostas que usam seu próprio contexto pessoal. Além disso, você apoia diretamente o SkateSpots e o mantém gratuito + sem anúncios. O grátis continua grátis — o Pro adiciona a camada pessoal. Toque em **⚡ Seja Pro** lá em cima.", proVersion: "A versão Pro de mim 🦧⚡ adiciona um **assistente pessoal**: consigo ler seu próprio Stash, crews, spots e anúncios, rascunhar ações para você (anunciar equipamentos, postar um status, planejar uma viagem — você sempre confirma primeiro) e usar seu contexto pessoal nas respostas. Também apoia diretamente o projeto. O Sasquatch grátis (busca de spots/eventos/coaches/crews, glossário, planejador de viagens) continua grátis. Toque em **⚡ Seja Pro** lá em cima.", perks: "Vantagens do Pro 🦧⚡: assistente pessoal (seu Stash/crews/spots/anúncios), rascunhos de ações que você confirma e respostas que usam seu próprio contexto — além de manter o app gratuito e sem anúncios. Toque em **⚡ Seja Pro** lá em cima.", goPro: "Toque no botão **⚡ Seja Pro** lá em cima para abrir a tela de upgrade. O Pro desbloqueia meu assistente pessoal (Stash/crews/spots/anúncios) e rascunhos de ações, e apoia diretamente o projeto. Pague com Lightning — 7 dias ~2k sats até 1 ano ~36k sats. Os recursos grátis continuam grátis. 🦧", proPricing: "Planos Pro (pague com Lightning ⚡): **7 dias** ~2.000 sats (~$1,20), **1 mês** ~5.000 sats (~$3), **3 meses** ~12.000 sats (~$7, 20% off), **1 ano** ~36.000 sats (~$21, melhor custo-benefício). Toque em **⚡ Seja Pro** lá em cima.", howMuchIsPro: "Planos Pro: 7 dias ~2.000 sats, 1 mês ~5.000 sats, 3 meses ~12.000 sats (20% off), 1 ano ~36.000 sats (melhor custo-benefício). Pague com Lightning ⚡. Toque em **⚡ Seja Pro** lá em cima.", upgrade: "Para fazer upgrade para o Sasquatch Pro, toque no botão **⚡ Seja Pro** lá em cima. Pague com Lightning (7 dias ~2k sats até 1 ano ~36k). O Pro desbloqueia meu assistente pessoal e rascunhos de ações, e apoia diretamente o projeto. 🦧⚡", }, statsTitle: "📊 **SkateSpots em números**", weatherTemp: "• {{temp}}°C (sensação {{feels}}°C)", weatherSkateability: "• Skateabilidade: **{{label}}** ({{score}}/100)", weatherError: "Não consegui ler o clima agora. Tente de novo em um segundo. 🌧️", labelSpots: "spots", labelEvents: "eventos", labelLabPros: "pros do Lab", labelCrews: "crews", labelShops: "skate shops", labelTours: "tours", labelGear: "anúncios de equipamentos", unnamed: "Sem nome", emptyWhere: " em **{{place}}**", emptyResult: "Não encontrei nenhum {{label}}{{where}} agora 🦧\n\nIsso pode significar que ainda não há nenhum listado — ou que os relays demoraram a responder. Tente novamente em um instante, confira a grafia, ou [add the first one on the map](https://skate-spots.org/map). 🛹", foundTitle: "{{emoji}} Encontrei **{{count}}** {{label}}:\n{{lines}}{{more}}", moreResults: "\n\n…e mais **{{count}}** — [see them all on the map](https://skate-spots.org/map) 🗺️", locationDenied: "Não consigo ver sua localização — nada sai do seu dispositivo; eu só leio localmente quando você pede, e o navegador acabou de recusar. Toque em 🎯 **Perto de mim** no mapa, ou me diga uma cidade: \"spots em Bangkok\". 🛹", noNearbySpots: "Nenhum spot mapeado perto de você ainda 🦧 — [be the first to drop one](https://skate-spots.org/create-spot). 🛹", closestTitle: "Mais perto de você agora:", closestFooter: "_Calculado no seu dispositivo — sua localização nunca saiu dele._", proNudge: "Isso é coisa do **Sasquatch Pro** 🦧⚡ — com o Pro consigo ler seu Stash, crews, spots e anúncios, rascunhar anúncios de equipamentos, anúncios de procura e status de skate, e planejar suas viagens. É um passe de apoiador via Lightning que mantém o SkateSpots gratuito e sem anúncios. Toque no botão **⚡ Seja Pro** lá em cima para desbloquear. 🛹", draftingProPerk: "Rascunhar ações (postar um status, anunciar equipamentos) é uma vantagem do **Sasquatch Pro** 🦧⚡ — toque em **⚡ Seja Pro** lá em cima para desbloquear.", draftIntro: "Aqui está um rascunho — revise e toque para publicar. Nada vai ao ar até você confirmar. 🛹", draftFailed: "Não consegui montar esse rascunho — tente me contar os detalhes de novo (ex.: \"anuncie minhas wheels Spitfire por 8000 sats\").", tripAskCity: "Para onde? Me diga uma cidade (ex.: \"planeje 3 dias em Lisboa\") e eu monto uma viagem. 🗺️", tripEmptyMap: "Nada no mapa para **{{destination}}** ainda 🦧 — seja o primeiro a colocar spots em [skate-spots.org](https://skate-spots.org). Quando os locais adicionarem spots, crews e eventos, eu monto uma viagem completa para você.", tripLocked: "Fechei uma missão em **{{destination}}** para você 🛹 — spots, sessões e locais abaixo. Ajuste ou salve.", tripFailed: "Não consegui acessar os dados ao vivo para planejar isso agora. Tente novamente em um instante! 🛹", tripEmptyMapLocal: "Nada no mapa para **{{destination}}** ainda 🦧 — seja o primeiro em [skate-spots.org](https://skate-spots.org).", tripMissionLocal: "Aqui está uma missão em **{{destination}}** 🛹 — spots, sessões e locais abaixo.", relayFailed: "Os relays não responderam a tempo agora 🛰️ — isso geralmente é uma conexão lenta, não um spot faltando. Tente de novo em um instante. 🛹", couldNotProcess: "Hum, não consegui processar isso. Tente reformular!", freeTierFallback: "Essa aí precisa de raciocínio de IA — um recurso do **Sasquatch Pro** ⚡🦧\n\nAinda consigo encontrar **spots, eventos, coaches, crews, lojas, tours e equipamentos** direto dos relays — me pergunte, por ex., \"spots em Barcelona\" — e o [Glossary](/glossary) cobre mais de 150 tricks e termos. Toque em **⚡ Seja Pro** lá em cima para desbloquear respostas de IA.", aiDownFallback: "Meu cérebro de IA está pegando um ar agora 🦧 — mas ainda te ajudo:\n\n• 🗺️ [Map](/) — spots, lojas e eventos perto de você\n• 🧪 [The Lab](/lab) — coaches, filmers, editores\n• 📖 [Glossary](/glossary) — mais de 150 tricks e termos\n• 👥 [Crews](/crews) — encontre sua galera\n\nOu só me diga uma **cidade** (\"spots em Barcelona\") ou uma **trick** (\"o que é um nollie\") que eu respondo direto. 🛹", wentWrong: "Algo deu errado do meu lado. Tente de novo em um segundo! 🦧", publishError: "Não foi possível publicar isso: {{error}}. Tente novamente em um instante.", unknownError: "erro desconhecido", }, }; export default ptBatch2;