Skip to content

Instantly share code, notes, and snippets.

@healthhealth
Created February 8, 2025 17:53
Show Gist options
  • Save healthhealth/f04483e3c03a4871608c8e81ee603b18 to your computer and use it in GitHub Desktop.
Save healthhealth/f04483e3c03a4871608c8e81ee603b18 to your computer and use it in GitHub Desktop.
Untitled
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dr. Gustavo Mendes e Silva - Cannabis Medicinal | Psiquiatria | São Paulo</title>
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<meta name="description" content="Agende sua consulta com o Dr. Gustavo Mendes e Silva, psiquiatra especialista em Cannabis Medicinal em São Paulo. Tratamentos para autismo, TDAH, ansiedade, depressão e mais. Atendimento online e presencial na Vila Olímpia." />
<meta name="keywords" content="psiquiatra SP, cannabis medicinal, TDAH, ansiedade, depressão, Dr. Gustavo Mendes, OrCann, tratamento, telemedicina, São Paulo, Vila Olímpia" />
<meta name="author" content="Dr. Gustavo Mendes e Silva" />
<link rel="canonical" href="https://dr.orcann.com" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Montserrat:wght@300;400;500;600&family=Quicksand:wght@300..700&display=swap" rel="stylesheet" />
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js"></script>
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Montserrat', 'sans-serif'],
display: ['Playfair Display', 'serif'],
quicksand: ['Quicksand', 'sans-serif'],
},
colors: {
primary: '#1a365d',
secondary: '#c5a572',
accent: '#2c5282',
'hero-bg': '#293f4e',
},
},
},
};
</script>
<style>
/* ----- Estilos Base ----- */
html,
body {
font-family: 'Montserrat', sans-serif;
margin: 0;
background-color: #f7fafc;
overflow-x: hidden;
/* Prevent horizontal scroll on body */
height: 100vh;
/* Full viewport height */
width: 100vw;
/* Full viewport width */
}
#content-container {
overflow-y: auto;
/* Enable vertical scroll within container */
height: 100vh;
/* Full viewport height */
width: 100vw;
/* Full viewport width */
position: relative;
/* Needed for fixed elements inside to be relative to this container */
-webkit-overflow-scrolling: touch;
/* For smooth scrolling on iOS */
scrollbar-width: none;
/* Firefox */
-ms-overflow-style: none;
/* IE and Edge */
}
#content-container::-webkit-scrollbar {
display: none;
/* Chrome, Safari, Opera */
}
h1,
h2,
h3,
h4 {
font-family: 'Playfair Display', serif;
color: #1a365d;
}
section {
position: relative;
/* Ensure sections are relative for absolute positioning if needed */
padding-top: 20px;
/* Keep original padding */
padding-bottom: 20px;
/* Keep original padding */
}
/* ----- Navbar ----- */
.nav-glass {
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
/* Safari support */
}
/* ----- Hero Section ----- */
.bg-hero-gradient {
background: linear-gradient(135deg, #1a365d 0%, #2c5282 100%);
position: relative;
}
.bg-hero-gradient::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0) 60%);
pointer-events: none;
}
/* ----- Cards Expansíveis ----- */
.card {
transition: all 0.3s ease;
background: #ffffff;
overflow: hidden;
border-radius: 0.75rem;
/* Consistent rounded corners */
}
.card.expanded {
transform: scale(1.02);
background: linear-gradient(145deg, rgba(26, 54, 93, 0.98), rgba(44, 82, 130, 0.98));
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.05);
}
.card.expanded .card-header {
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.card.expanded .card-header h3 {
color: #ffffff;
}
.card.expanded .card-header p {
color: rgba(255, 255, 255, 0.7);
}
.card.expanded .icon-wrapper {
background: rgba(255, 255, 255, 0.1);
}
.card.expanded .icon-wrapper i {
color: #ffffff;
}
.card-content {
transition: max-height 0.5s cubic-bezier(0.4, 0, 0.2, 1);
overflow: hidden;
/* Ensure content is clipped */
}
.card-expanded-content {
padding: 2rem;
color: rgba(255, 255, 255, 0.9);
/* Removed min-height */
}
/* Grid Items dentro dos cards */
.benefit-item,
.tech-item,
.service-item,
.progress-item {
padding: 1.5rem;
background: rgba(255, 255, 255, 0.05);
border-radius: 1rem;
transition: background 0.3s ease, transform 0.3s ease;
/* Simplified transition */
}
.benefit-item:hover,
.tech-item:hover,
.service-item:hover,
.progress-item:hover {
background: rgba(255, 255, 255, 0.1);
transform: translateY(-2px);
}
.benefit-item i,
.tech-item i,
.service-item i,
.progress-item i {
font-size: 1.5rem;
opacity: 0.9;
color: inherit;
/* Inherit text color */
margin-bottom: 0.5rem;
/* Consistent spacing */
}
.card-expanded-content h4 {
font-size: 1.1rem;
color: rgba(255, 255, 255, 0.95);
margin-bottom: 0.5rem;
}
.card-expanded-content p {
font-size: 0.95rem;
color: rgba(255, 255, 255, 0.8);
line-height: 1.5;
}
/* Hover de Cards */
.card:not(.expanded):hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
background: rgba(255, 255, 255, 0.98);
}
.card:not(.expanded):hover .icon-wrapper {
background: rgba(26, 54, 93, 0.1);
}
.card:not(.expanded):hover .icon-wrapper i {
transform: scale(1.1);
}
/* Transições */
.card,
.icon-wrapper,
.icon-wrapper i,
.card-header h3,
.card-header p {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
/* Focus States para Acessibilidade */
.card-header:focus {
outline: none;
box-shadow: 0 0 0 3px rgba(26, 54, 93, 0.3);
border-radius: 0.75rem;
}
/* Efeito de highlight nos ícones */
.card.expanded .icon-wrapper::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: radial-gradient(circle at center, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 70%);
opacity: 0;
transition: opacity 0.3s ease;
border-radius: inherit;
/* Ensure highlight follows rounded corners */
}
.card.expanded .icon-wrapper:hover::after {
opacity: 1;
}
/* ----- Botões Flutuantes ----- */
.floating-btn {
position: fixed;
right: 20px;
padding: 0;
/* Remove padding, use width/height */
border-radius: 50%;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
display: flex;
justify-content: center;
align-items: center;
width: 54px;
height: 54px;
line-height: 54px;
/* Vertically center icon */
text-align: center;
}
.floating-btn:hover {
transform: translateY(-2px);
box-shadow: 0 6px 8px rgba(0, 0, 0, 0.2);
}
/* ----- Carrossel ----- */
.carousel {
perspective: 50vw;
perspective-origin: 50% 50%;
height: 700px;
/* Set carousel height */
max-height: 700px;
position: relative;
}
.carousel__stage {
transform-style: preserve-3d;
transform: translateZ(calc(-350px - 1rem));
/* Half of carousel height + offset */
height: 100%;
}
.carousel__control {
position: absolute;
right: 1rem;
top: 50%;
transform: translateY(-50%);
z-index: 2;
display: flex;
flex-direction: column;
align-items: center;
padding: 0 1rem;
/* Add some horizontal padding */
}
.carousel__control a {
display: block;
width: 12px;
height: 12px;
margin-bottom: 0.5rem;
border-radius: 50%;
background-color: rgba(255, 255, 255, 0.3);
opacity: 0.8;
transition: background-color 0.3s ease, opacity 0.3s ease;
cursor: pointer;
}
.carousel__control a.active,
.carousel__control a:hover {
background-color: rgba(255, 255, 255, 0.7);
opacity: 1;
}
.spinner {
transform-style: preserve-3d;
transition: transform 1s;
transform-origin: 50% 50%;
height: 100%;
/* Ensure full height */
}
.spinner__face {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
transform-origin: 50% 50%;
transform: translateZ(351rem);
/* Initial transform */
display: flex;
align-items: center;
/* Vertically center content */
}
.spinner__face.js-active {
transform: rotateX(0deg) translateZ(calc(350px + 1rem));
}
.spinner__face.js-next {
transform: rotateX(90deg) translateZ(calc(350px + 1rem));
}
.content {
position: relative;
width: 100%;
height: 100%;
display: flex;
overflow: hidden;
flex-direction: row;
/* Ensure horizontal layout */
}
.content__left,
.content__right {
width: 50%;
/* Equal width */
height: 100%;
display: flex;
justify-content: center;
align-items: center;
opacity: 0;
/* Initially hidden for animation */
transform: translateY(20px);
/* Start slightly below */
transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
padding: 2rem;
}
.spinner__face.js-active .content__left,
.spinner__face.js-active .content__right {
opacity: 1;
transform: translateY(0);
}
.content__left {
transition-delay: 0.3s;
text-align: center;
/* Center text horizontally */
}
.content__right {
transition-delay: 0.5s;
text-align: justify;
/* Justify text */
}
.content__left h2 {
font-size: 3rem;
margin-bottom: 0.5rem;
color: white;
}
.content__left p,
.content__right .content__main {
font-size: 1.1rem;
line-height: 1.7;
opacity: 0.9;
color: white;
}
.content__index {
position: absolute;
bottom: 1rem;
right: 1rem;
font-size: 8rem;
opacity: 0.1;
color: white;
}
/* ----- Responsividade ----- */
@media (max-width: 768px) {
.card.expanded {
transform: scale(1);
}
.carousel {
height: auto;
max-height: none;
}
.spinner__face {
position: relative;
transform: none !important;
height: auto;
}
.content__left,
.content__right {
width: 100%;
position: static;
opacity: 1;
padding: 1rem;
/* Reduced padding on smaller screens */
}
.benefits-grid,
.tech-features,
.service-features,
.progress-features {
grid-template-columns: 1fr;
}
.card-expanded-content {
padding: 1rem;
/* Reduced padding */
}
.benefit-item,
.tech-item,
.service-item,
.progress-item {
padding: 1rem;
/* Reduced padding */
}
.card-expanded-content h4 {
font-size: 1rem;
}
.card-expanded-content p {
font-size: 0.9rem;
}
}
</style>
</head>
<body>
<div id="content-container">
<nav class="nav-glass fixed w-full z-50 top-0">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex items-center justify-between h-16">
<div class="flex items-center space-x-8">
<a href="/" class="font-display font-bold text-xl text-primary">
Dr. Gustavo Mendes e Silva
</a>
<a href="https://orcann.com" target="_blank" rel="noopener noreferrer" class="flex items-center text-accent hover:text-primary">
<img src="/favicon-16x16.png" alt="OrCann" class="w-6 h-6 mr-2">
OrCann
</a>
</div>
<div class="hidden md:flex md:space-x-8">
<a href="#sobre" class="text-gray-600 hover:text-primary px-3 py-2 rounded-md">Sobre</a>
<a href="#especialidades" class="text-gray-600 hover:text-primary px-3 py-2 rounded-md">Especialidades</a>
<a href="#metodo" class="text-gray-600 hover:text-primary px-3 py-2 rounded-md">Método</a>
<a href="#contato" class="text-gray-600 hover:text-primary px-3 py-2 rounded-md">Contato</a>
</div>
<div class="md:hidden">
<button id="menu-btn" class="text-gray-600 hover:text-primary">
<i class="fas fa-bars text-2xl"></i>
</button>
</div>
</div>
</div>
<div id="mobile-menu" class="hidden md:hidden bg-white shadow-lg">
<div class="px-4 py-2 space-y-2">
<a href="#sobre" class="block text-gray-600 hover:text-primary py-2 rounded-md">Sobre</a>
<a href="#especialidades" class="block text-gray-600 hover:text-primary py-2 rounded-md">Especialidades</a>
<a href="#metodo" class="block text-gray-600 hover:text-primary py-2 rounded-md">Método</a>
<a href="#contato" class="block text-gray-600 hover:text-primary py-2 rounded-md">Contato</a>
</div>
</div>
</nav>
<section class="bg-hero-gradient min-h-screen flex items-center justify-center px-4 py-20" id="hero">
<div class="max-w-7xl mx-auto text-center text-white">
<h1 class="font-display text-5xl md:text-6xl lg:text-7xl mb-6">
Medicina que<br />transforma vidas
</h1>
<p class="text-xl md:text-2xl mb-12 opacity-90">
Psiquiatria baseada em evidências e centrada no paciente
</p>
<div class="max-w-md mx-auto">
<form class="space-y-4" action="https://formspree.io/f/seu-form-id" method="POST"> {/* Replace with your Formspree endpoint */}
<input type="text" name="nome" placeholder="Seu nome" required class="w-full px-4 py-3 rounded-lg bg-white bg-opacity-20 placeholder-white placeholder-opacity-70 border border-white border-opacity-30 focus:outline-none focus:border-opacity-70" />
<input type="email" name="email" placeholder="Seu e-mail" required class="w-full px-4 py-3 rounded-lg bg-white bg-opacity-20 placeholder-white placeholder-opacity-70 border border-white border-opacity-30 focus:outline-none focus:border-opacity-70" />
<button type="submit" class="w-full px-6 py-3 bg-white text-primary font-semibold rounded-lg hover:bg-opacity-90 transition duration-300">
Agendar Consulta
</button>
</form>
</div>
</div>
</section>
<section id="sobre" class="py-20 px-4 bg-gray-50">
<div class="max-w-7xl mx-auto">
<h2 class="text-4xl font-display text-primary text-center mb-8">Sobre o Dr. Gustavo</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-10 items-center">
<div>
<img src="dr-gustavo.jpg" alt="Dr. Gustavo Mendes e Silva" class="rounded-xl shadow-lg w-full"> {/* Replace with actual image */}
</div>
<div class="text-gray-700">
<p class="mb-6">O Dr. Gustavo Mendes e Silva é um médico psiquiatra apaixonado por transformar vidas através de uma abordagem moderna e humanizada da medicina.</p>
<p class="mb-6">Com vasta experiência em tratamentos com Cannabis Medicinal, ele se destaca no atendimento de pacientes com Autismo, TDAH, Ansiedade, Depressão e traumas decorrentes de violências.</p>
<p class="mb-6">Sua formação inclui especialização em Psiquiatria pela renomada Escola Paulista de Medicina (UNIFESP) e constante atualização em congressos e cursos internacionais, garantindo o uso das mais recentes tecnologias e abordagens terapêuticas.</p>
<p class="mb-6">O Dr. Gustavo é co-fundador da OrCann, clínica referência em Cannabis Medicinal, e atende pacientes de todo o Brasil através da telemedicina, além de oferecer atendimento presencial em seu consultório na Vila Olímpia, em São Paulo.</p>
<p>Seu compromisso é oferecer um cuidado individualizado, baseado em evidências científicas e focado nas necessidades de cada paciente.</p>
</div>
</div>
</div>
</section>
<section id="especialidades" class="relative py-20 bg-gradient-to-b from-hero-bg to-gray-900">
<div class="max-w-7xl mx-auto px-4">
<h2 class="text-4xl font-display text-white text-center mb-8">Especialidades</h2>
<div id="specialty-carousel">
{/* React SpecialtyCarousel component will be rendered here */}
</div>
</div>
</section>
<section id="metodo" class="relative py-20 px-4 bg-white">
<div class="max-w-7xl mx-auto">
<h2 class="text-4xl font-display text-primary text-center mb-8">Método & Abordagem</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="card relative rounded-xl shadow-lg transition-all duration-500 ease-out transform hover:shadow-xl">
<div class="card-header p-6 cursor-pointer">
<div class="flex items-center gap-4">
<div class="icon-wrapper h-12 w-12 rounded-full bg-primary bg-opacity-10 flex items-center justify-center">
<i class="fas fa-clock text-xl text-primary"></i>
</div>
<div>
<h3 class="text-xl font-semibold text-gray-900">Consultas de 2 Horas</h3>
<p class="text-sm text-gray-600">Tempo adequado para uma avaliação completa</p>
</div>
</div>
</div>
<div class="card-content">
<div class="card-expanded-content">
<p class="text-lg mb-6">Dedico tempo adequado para compreender sua história em profundidade, garantindo uma avaliação completa e personalizada.</p>
<div class="benefits-grid grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="benefit-item">
<i class="fas fa-check-circle text-green-500"></i>
<h4 class="font-semibold">Avaliação Detalhada</h4>
<p>Tempo para explorar todos os aspectos relevantes do seu caso</p>
</div>
<div class="benefit-item">
<i class="fas fa-comments text-blue-500"></i>
<h4 class="font-semibold">Dúvidas Esclarecidas</h4>
<p>Espaço para discutir todas suas questões e preocupações</p>
</div>
<div class="benefit-item">
<i class="fas fa-tasks text-purple-500"></i>
<h4 class="font-semibold">Plano Terapêutico</h4>
<p>Construção conjunta do tratamento mais adequado</p>
</div>
<div class="benefit-item">
<i class="fas fa-heart text-red-500"></i>
<h4 class="font-semibold">Atendimento Humanizado</h4>
<p>Foco total em você, sem pressa ou interrupções</p>
</div>
</div>
</div>
</div>
</div>
<div class="card relative rounded-xl shadow-lg transition-all duration-500 ease-out transform hover:shadow-xl">
<div class="card-header p-6 cursor-pointer">
<div class="flex items-center gap-4">
<div class="icon-wrapper h-12 w-12 rounded-full bg-primary bg-opacity-10 flex items-center justify-center">
<i class="fas fa-robot text-xl text-primary"></i>
</div>
<div>
<h3 class="text-xl font-semibold text-gray-900">Tecnologia Avançada</h3>
<p class="text-sm text-gray-600">IA e análise de dados para melhor tratamento</p>
</div>
</div>
</div>
<div class="card-content">
<div class="card-expanded-content">
<p class="text-lg mb-6">Utilização de inteligência artificial e tecnologias modernas para análise aprofundada e acompanhamento personalizado do seu progresso.</p>
<div class="tech-features grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="tech-item">
<i class="fas fa-brain text-indigo-500"></i>
<h4 class="font-semibold">Análise com IA</h4>
<p>Claude e Vertex AI para análise linguística e comportamental</p>
</div>
<div class="tech-item">
<i class="fas fa-chart-line text-blue-500"></i>
<h4 class="font-semibold">Monitoramento</h4>
<p>Acompanhamento contínuo do progresso e ajustes necessários</p>
</div>
<div class="tech-item">
<i class="fas fa-shield-alt text-green-500"></i>
<h4 class="font-semibold">Privacidade</h4>
<p>Dados criptografados e protegidos seguindo LGPD</p>
</div>
<div class="tech-item">
<i class="fas fa-tablet-alt text-purple-500"></i>
<h4 class="font-semibold">Dashboard</h4>
<p>Visualização clara do seu progresso e metas</p>
</div>
</div>
</div>
</div>
</div>
<div class="card relative rounded-xl shadow-lg transition-all duration-500 ease-out transform hover:shadow-xl">
<div class="card-header p-6 cursor-pointer">
<div class="flex items-center gap-4">
<div class="icon-wrapper h-12 w-12 rounded-full bg-primary bg-opacity-10 flex items-center justify-center">
<i class="fas fa-user-plus text-xl text-primary"></i>
</div>
<div>
<h3 class="text-xl font-semibold text-gray-900">Atendimento Personalizado</h3>
<p class="text-sm text-gray-600">Adaptado às suas necessidades específicas</p>
</div>
</div>
</div>
<div class="card-content">
<div class="card-expanded-content">
<p class="text-lg mb-6">Cada pessoa é única e merece um atendimento que respeite suas particularidades e necessidades específicas.</p>
<div class="service-features grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="service-item">
<i class="fas fa-home text-teal-500"></i>
<h4 class="font-semibold">Ambiente Adaptado</h4>
<p>Consultório preparado para diferentes necessidades</p>
</div>
<div class="service-item">
<i class="fas fa-car text-blue-500"></i>
<h4 class="font-semibold">Atendimento Domiciliar</h4>
<p>Disponível para pacientes no raio de 15km</p>
</div>
<div class="service-item">
<i class="fas fa-clock text-orange-500"></i>
<h4 class="font-semibold">Horários Flexíveis</h4>
<p>Agendamento adaptado à sua rotina</p>
</div>
<div class="service-item">
<i class="fas fa-comments text-purple-500"></i>
<h4 class="font-semibold">Suporte Contínuo</h4>
<p>Acompanhamento entre consultas via WhatsApp</p>
</div>
</div>
</div>
</div>
</div>
<div class="card relative rounded-xl shadow-lg transition-all duration-500 ease-out transform hover:shadow-xl">
<div class="card-header p-6 cursor-pointer">
<div class="flex items-center gap-4">
<div class="icon-wrapper h-12 w-12 rounded-full bg-primary bg-opacity-10 flex items-center justify-center">
<i class="fas fa-bullseye text-xl text-primary"></i>
</div>
<div>
<h3 class="text-xl font-semibold text-gray-900">Metas & Evolução</h3>
<p class="text-sm text-gray-600">Acompanhamento claro do seu progresso</p>
</div>
</div>
</div>
<div class="card-content">
<div class="card-expanded-content">
<p class="text-lg mb-6">Estabelecimento de objetivos claros e acompanhamento consistente da sua evolução ao longo do tratamento.</p>
<div class="progress-features grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="progress-item">
<i class="fas fa-flag-checkered text-red-500"></i>
<h4 class="font-semibold">Metas Claras</h4>
<p>Objetivos definidos em conjunto desde o início</p>
</div>
<div class="progress-item">
<i class="fas fa-clipboard-check text-green-500"></i>
<h4 class="font-semibold">Avaliações</h4>
<p>Verificação periódica do progresso</p>
</div>
<div class="progress-item">
<i class="fas fa-sliders-h text-blue-500"></i>
<h4 class="font-semibold">Ajustes</h4>
<p>Adaptação contínua do tratamento conforme necessário</p>
</div>
<div class="progress-item">
<i class="fas fa-door-open text-purple-500"></i>
<h4 class="font-semibold">Alta Planejada</h4>
<p>Preparação gradual para conclusão do tratamento</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="contato" class="py-20 px-4 bg-gray-100">
<div class="max-w-7xl mx-auto">
<h2 class="text-4xl font-display text-primary text-center mb-8">Contato</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
<div class="w-full h-96 rounded-lg overflow-hidden shadow-lg map-container">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3656.123237487306!2d-46.6798223!3d-23.5999128!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x94ce57b6e629e251%3A0x514a30df0fa62955!2sDr.%20Gustavo%20Mendes%20e%20Silva%20-%20Psiquiatria%20e%20Cannabis%20Medicinal!5e0!3m2!1spt-BR!2sbr!4v1738162079431!5m2!1spt-BR!2sbr" width="100%" height="100%" style="border:0;" allowfullscreen="" loading="lazy">
</iframe>
</div>
<div class="bg-white p-8 rounded-lg shadow-lg contact-info">
<h3 class="text-2xl font-display text-primary mb-6">Informações</h3>
<div class="space-y-4">
<p class="flex items-center text-gray-700">
<i class="fas fa-map-marker-alt w-6 text-accent mr-2"></i>
Rua Fidêncio Ramos, 308 - Torre B, Sala 94
<br />Vila Olímpia, São Paulo - SP
</p>
<p class="flex items-center text-gray-700">
<i class="fas fa-phone w-6 text-accent mr-2"></i>
(11) 96546-1146
</p>
<p class="flex items-center text-gray-700">
<i class="fas fa-envelope w-6 text-accent mr-2"></i>
dr@orcann.com
</p>
</div>
</div>
</div>
</div>
</section>
<footer class="bg-primary text-white py-12">
<div class="max-w-7xl mx-auto px-4">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<h3 class="text-xl font-display mb-4">Dr. Gustavo Mendes e Silva</h3>
<p class="text-gray-300">Médico Psiquiatra</p>
<p class="text-gray-300">CRM-SP: 218133</p>
<p class="mt-4 text-gray-400">
Atendimento em consultório particular na Vila Olímpia - São Paulo e por Telemedicina para todo o Brasil.
</p>
</div>
<div>
<h3 class="text-xl font-display mb-4">Horário de Atendimento</h3>
<div class="space-y-2 text-gray-300">
<p>Segunda a Sexta</p>
<p>09:00 - 18:00</p>
<p class="mt-4 text-gray-400">
Atendimentos em horários especiais podem ser agendados conforme necessidade.
</p>
</div>
</div>
</div>
<div class="mt-12 pt-8 border-t border-gray-700 text-center">
<p class="text-gray-400 text-sm">
&copy; 2024 OrCann | Todos os direitos reservados.
</p>
<p class="text-gray-400 text-sm mt-2">
Desenvolvido por
<a href="https://healthhealth.io" class="hover:text-white" target="_blank" rel="noopener noreferrer">
HEALTH / HEALTH - CNPJ: 54.252.646/0001-95
</a>
</p>
</div>
</div>
</footer>
<a href="https://wa.me/5511965461146" class="floating-btn bottom-4 bg-green-500 text-white" target="_blank" rel="noopener noreferrer">
<i class="fab fa-whatsapp text-2xl"></i>
</a>
<a href="https://autismo.orcann.com" class="floating-btn bottom-20 bg-blue-500 text-white" target="_blank" rel="noopener noreferrer">
<img src="autismo.PNG" alt="Portal Autismo" class="w-6 h-6">
</a>
<button id="back-to-top" class="floating-btn bottom-36 bg-gray-800 text-white hidden">
<i class="fas fa-arrow-up"></i>
</button>
</div>
<script type="text/babel">
const { useEffect, useState, useCallback } = React;
const SpecialtyCarousel = () => {
const [activeIndex, setActiveIndex] = useState(0);
const [disabled, setDisabled] = useState(false);
const SPIN_DUR = 1000;
const specialties = [
{
title: "AUTISMO",
subtitle: "TEA",
bg: "#27323c",
content: `"Especializado no atendimento de pessoas com TEA, oferecendo um ambiente adaptado e acolhedor. Consultas de 2 horas permitem uma avaliação completa e personalizada, com foco nas necessidades específicas de cada paciente."`
},
{
title: "TDAH",
subtitle: "DÉFICIT DE ATENÇÃO",
bg: "#19304a",
content: `"Abordagem moderna do TDAH com avaliação tecnológica e monitoramento contínuo. Tratamento personalizado que considera aspectos profissionais, acadêmicos e pessoais."`
},
{
title: "ANSIEDADE",
subtitle: "E DEPRESSÃO",
bg: "#2b2533",
content: `"Tratamento humanizado de transtornos de humor e ansiedade. Integração de terapias convencionais e complementares, com foco na recuperação do bem-estar e qualidade de vida."`
},
{
title: "TRAUMAS",
subtitle: "E VIOLÊNCIAS",
bg: "#312f2d",
content: `"Atendimento especializado para vítimas de violência e trauma, com ambiente seguro e acolhedor. Abordagem sensível e personalizada, respeitando o tempo de cada pessoa."`
}
];
const spin = useCallback((inc = 1) => {
if (disabled || !inc) return;
setDisabled(true);
let newIndex = activeIndex + inc;
if (newIndex >= specialties.length) newIndex = 0;
if (newIndex < 0) newIndex = specialties.length - 1;
setActiveIndex(newIndex);
setTimeout(() => {
setDisabled(false);
}, SPIN_DUR);
}, [activeIndex, disabled, specialties.length]);
const handleKeyUp = useCallback((e) => {
switch (e.keyCode) {
case 38: spin(-1); break; // Up arrow
case 40: spin(1); break; // Down arrow
default: break;
}
}, [spin]);
useEffect(() => {
document.addEventListener('keyup', handleKeyUp);
return () => document.removeEventListener('keyup', handleKeyUp);
}, [handleKeyUp]);
return (
<div className="w-full h-full relative overflow-hidden">
<div className="carousel h-full">
<div className="carousel__control">
{specialties.map((_, i) => (
<a
key={i}
href="#"
className={`
block
w-full
aspect-square
mb-2
rounded-full
bg-white
bg-opacity-20
hover:bg-opacity-30
transition-all
duration-300
${activeIndex === i ? 'active bg-opacity-70' : ''}
`}
onClick={(e) => {
e.preventDefault();
if (!disabled) spin(i - activeIndex);
}}
aria-label={`Ir para o slide ${i + 1}`}
/>
))}
</div>
<div className="carousel__stage absolute inset-0">
<div className={`spinner absolute w-full h-full transition-transform duration-1000 ${disabled ? 'pointer-events-none' : ''}`}>
{specialties.map((specialty, i) => (
<div
key={i}
className={`spinner__face absolute w-full h-full overflow-hidden flex items-center
${i === activeIndex ? 'js-active' : ''}
${(i === (activeIndex + 1) % specialties.length) ? 'js-next' : ''} `}
style={{ backgroundColor: specialty.bg }}
>
<div className="content relative w-full h-full flex">
<div className="content__left w-1/2 p-8">
<h2 className="text-5xl text-white font-bold">
{specialty.title}<br/>
<span className="text-base font-light block mt-2">{specialty.subtitle}</span>
</h2>
</div>
<div className="content__right w-1/2 p-8 flex items-center">
<div className="content__main text-white text-lg">
<p>{specialty.content}</p>
</div>
<h3 className="content__index text-9xl absolute bottom-4 right-4 opacity-5 text-white">{String(i + 1).padStart(2, '0')}</h3>
</div>
</div>
</div>
))}
</div>
</div>
</div>
</div>
);
};
ReactDOM.render(<SpecialtyCarousel />, document.getElementById('specialty-carousel'));
</script>
<script>
// ----- Menu Mobile -----
const menuBtn = document.getElementById('menu-btn');
const mobileMenu = document.getElementById('mobile-menu');
menuBtn.addEventListener('click', () => {
mobileMenu.classList.toggle('hidden');
});
// ----- Scroll to Top -----
const backToTop = document.getElementById('back-to-top');
window.addEventListener('scroll', () => {
if (window.pageYOffset > 300) {
backToTop.classList.remove('hidden');
} else {
backToTop.classList.add('hidden');
}
});
backToTop.addEventListener('click', () => {
const contentContainer = document.getElementById('content-container');
contentContainer.scrollTo({
top: 0,
behavior: 'smooth'
});
});
// ----- Cards Expansíveis -----
class ExpandableCards {
constructor() {
this.activeCard = null;
this.cards = [{
title: 'Consultas de 2 Horas',
icon: 'clock',
description: 'Tempo adequado para uma avaliação completa',
content: `
<div class="card-expanded-content">
<p class="text-lg mb-6">Dedico tempo adequado para compreender sua história em profundidade, garantindo uma avaliação completa e personalizada.</p>
<div class="benefits-grid grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="benefit-item">
<i class="fas fa-check-circle text-green-500"></i>
<h4 class="font-semibold">Avaliação Detalhada</h4>
<p>Tempo para explorar todos os aspectos relevantes do seu caso</p>
</div>
<div class="benefit-item">
<i class="fas fa-comments text-blue-500"></i>
<h4 class="font-semibold">Dúvidas Esclarecidas</h4>
<p>Espaço para discutir todas suas questões e preocupações</p>
</div>
<div class="benefit-item">
<i class="fas fa-tasks text-purple-500"></i>
<h4 class="font-semibold">Plano Terapêutico</h4>
<p>Construção conjunta do tratamento mais adequado</p>
</div>
<div class="benefit-item">
<i class="fas fa-heart text-red-500"></i>
<h4 class="font-semibold">Atendimento Humanizado</h4>
<p>Foco total em você, sem pressa ou interrupções</p>
</div>
</div>
</div>
`
},
{
title: 'Tecnologia Avançada',
icon: 'robot',
description: 'IA e análise de dados para melhor tratamento',
content: `
<div class="card-expanded-content">
<p class="text-lg mb-6">Utilização de inteligência artificial e tecnologias modernas para análise aprofundada e acompanhamento personalizado do seu progresso.</p>
<div class="tech-features grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="tech-item">
<i class="fas fa-brain text-indigo-500"></i>
<h4 class="font-semibold">Análise com IA</h4>
<p>Claude e Vertex AI para análise linguística e comportamental</p>
</div>
<div class="tech-item">
<i class="fas fa-chart-line text-blue-500"></i>
<h4 class="font-semibold">Monitoramento</h4>
<p>Acompanhamento contínuo do progresso e ajustes necessários</p>
</div>
<div class="tech-item">
<i class="fas fa-shield-alt text-green-500"></i>
<h4 class="font-semibold">Privacidade</h4>
<p>Dados criptografados e protegidos seguindo LGPD</p>
</div>
<div class="tech-item">
<i class="fas fa-tablet-alt text-purple-500"></i>
<h4 class="font-semibold">Dashboard</h4>
<p>Visualização clara do seu progresso e metas</p>
</div>
</div>
</div>
`
},
{
title: 'Atendimento Personalizado',
icon: 'user-plus',
description: 'Adaptado às suas necessidades específicas',
content: `
<div class="card-expanded-content">
<p class="text-lg mb-6">Cada pessoa é única e merece um atendimento que respeite suas particularidades e necessidades específicas.</p>
<div class="service-features grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="service-item">
<i class="fas fa-home text-teal-500"></i>
<h4 class="font-semibold">Ambiente Adaptado</h4>
<p>Consultório preparado para diferentes necessidades</p>
</div>
<div class="service-item">
<i class="fas fa-car text-blue-500"></i>
<h4 class="font-semibold">Atendimento Domiciliar</h4>
<p>Disponível para pacientes no raio de 15km</p>
</div>
<div class="service-item">
<i class="fas fa-clock text-orange-500"></i>
<h4 class="font-semibold">Horários Flexíveis</h4>
<p>Agendamento adaptado à sua rotina</p>
</div>
<div class="service-item">
<i class="fas fa-comments text-purple-500"></i>
<h4 class="font-semibold">Suporte Contínuo</h4>
<p>Acompanhamento entre consultas via WhatsApp</p>
</div>
</div>
</div>
`
},
{
title: 'Metas & Evolução',
icon: 'bullseye',
description: 'Acompanhamento claro do seu progresso',
content: `
<div class="card-expanded-content">
<p class="text-lg mb-6">Estabelecimento de objetivos claros e acompanhamento consistente da sua evolução ao longo do tratamento.</p>
<div class="progress-features grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="progress-item">
<i class="fas fa-flag-checkered text-red-500"></i>
<h4 class="font-semibold">Metas Claras</h4>
<p>Objetivos definidos em conjunto desde o início</p>
</div>
<div class="progress-item">
<i class="fas fa-clipboard-check text-green-500"></i>
<h4 class="font-semibold">Avaliações</h4>
<p>Verificação periódica do progresso</p>
</div>
<div class="progress-item">
<i class="fas fa-sliders-h text-blue-500"></i>
<h4 class="font-semibold">Ajustes</h4>
<p>Adaptação contínua do tratamento conforme necessário</p>
</div>
<div class="progress-item">
<i class="fas fa-door-open text-purple-500"></i>
<h4 class="font-semibold">Alta Planejada</h4>
<p>Preparação gradual para conclusão do tratamento</p>
</div>
</div>
</div>
`
}
];
class ExpandableCards {
constructor() {
this.activeCard = null;
this.cards = [{
title: 'Consultas de 2 Horas',
icon: 'clock',
description: 'Tempo adequado para uma avaliação completa',
content: `
<div class="card-expanded-content">
<p class="text-lg mb-6">Dedico tempo adequado para compreender sua história em profundidade, garantindo uma avaliação completa e personalizada.</p>
<div class="benefits-grid grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="benefit-item">
<i class="fas fa-check-circle text-green-500"></i>
<h4 class="font-semibold">Avaliação Detalhada</h4>
<p>Tempo para explorar todos os aspectos relevantes do seu caso</p>
</div>
<div class="benefit-item">
<i class="fas fa-comments text-blue-500"></i>
<h4 class="font-semibold">Dúvidas Esclarecidas</h4>
<p>Espaço para discutir todas suas questões e preocupações</p>
</div>
<div class="benefit-item">
<i class="fas fa-tasks text-purple-500"></i>
<h4 class="font-semibold">Plano Terapêutico</h4>
<p>Construção conjunta do tratamento mais adequado</p>
</div>
<div class="benefit-item">
<i class="fas fa-heart text-red-500"></i>
<h4 class="font-semibold">Atendimento Humanizado</h4>
<p>Foco total em você, sem pressa ou interrupções</p>
</div>
</div>
</div>
`
},
{
title: 'Tecnologia Avançada',
icon: 'robot',
description: 'IA e análise de dados para melhor tratamento',
content: `
<div class="card-expanded-content">
<p class="text-lg mb-6">Utilização de inteligência artificial e tecnologias modernas para análise aprofundada e acompanhamento personalizado do seu progresso.</p>
<div class="tech-features grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="tech-item">
<i class="fas fa-brain text-indigo-500"></i>
<h4 class="font-semibold">Análise com IA</h4>
<p>Claude e Vertex AI para análise linguística e comportamental</p>
</div>
<div class="tech-item">
<i class="fas fa-chart-line text-blue-500"></i>
<h4 class="font-semibold">Monitoramento</h4>
<p>Acompanhamento contínuo do progresso e ajustes necessários</p>
</div>
<div class="tech-item">
<i class="fas fa-shield-alt text-green-500"></i>
<h4 class="font-semibold">Privacidade</h4>
<p>Dados criptografados e protegidos seguindo LGPD</p>
</div>
<div class="tech-item">
<i class="fas fa-tablet-alt text-purple-500"></i>
<h4 class="font-semibold">Dashboard</h4>
<p>Visualização clara do seu progresso e metas</p>
</div>
</div>
</div>
`
},
{
title: 'Atendimento Personalizado',
icon: 'user-plus',
description: 'Adaptado às suas necessidades específicas',
content: `
<div class="card-expanded-content">
<p class="text-lg mb-6">Cada pessoa é única e merece um atendimento que respeite suas particularidades e necessidades específicas.</p>
<div class="service-features grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="service-item">
<i class="fas fa-home text-teal-500"></i>
<h4 class="font-semibold">Ambiente Adaptado</h4>
<p>Consultório preparado para diferentes necessidades</p>
</div>
<div class="service-item">
<i class="fas fa-car text-blue-500"></i>
<h4 class="font-semibold">Atendimento Domiciliar</h4>
<p>Disponível para pacientes no raio de 15km</p>
</div>
<div class="service-item">
<i class="fas fa-clock text-orange-500"></i>
<h4 class="font-semibold">Horários Flexíveis</h4>
<p>Agendamento adaptado à sua rotina</p>
</div>
<div class="service-item">
<i class="fas fa-comments text-purple-500"></i>
<h4 class="font-semibold">Suporte Contínuo</h4>
<p>Acompanhamento entre consultas via WhatsApp</p>
</div>
</div>
</div>
`
},
{
title: 'Metas & Evolução',
icon: 'bullseye',
description: 'Acompanhamento claro do seu progresso',
content: `
<div class="card-expanded-content">
<p class="text-lg mb-6">Estabelecimento de objetivos claros e acompanhamento consistente da sua evolução ao longo do tratamento.</p>
<div class="progress-features grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="progress-item">
<i class="fas fa-flag-checkered text-red-500"></i>
<h4 class="font-semibold">Metas Claras</h4>
<p>Objetivos definidos em conjunto desde o início</p>
</div>
<div class="progress-item">
<i class="fas fa-clipboard-check text-green-500"></i>
<h4 class="font-semibold">Avaliações</h4>
<p>Verificação periódica do progresso</p>
</div>
<div class="progress-item">
<i class="fas fa-sliders-h text-blue-500"></i>
<h4 class="font-semibold">Ajustes</h4>
<p>Adaptação contínua do tratamento conforme necessário</p>
</div>
<div class="progress-item">
<i class="fas fa-door-open text-purple-500"></i>
<h4 class="font-semibold">Alta Planejada</h4>
<p>Preparação gradual para conclusão do tratamento</p>
</div>
</div>
</div>
`
}
];
this.init = function() {
this.createCards();
this.setupListeners();
};
this.createCards = function() {
const container = document.querySelector('#metodo .grid');
if (!container) return;
this.cards.forEach((card) => {
const cardElement = this.createCardElement(card);
container.appendChild(cardElement);
});
};
this.createCardElement = function(card) {
const element = document.createElement('div');
element.className = 'card relative rounded-xl shadow-lg transition-all duration-500 ease-out transform hover:shadow-xl';
element.innerHTML = `
<div class="card-header p-6 cursor-pointer">
<div class="flex items-center gap-4">
<div class="icon-wrapper h-12 w-12 rounded-full bg-primary bg-opacity-10 flex items-center justify-center">
<i class="fas fa-${card.icon} text-xl text-primary"></i>
</div>
<div>
<h3 class="text-xl font-semibold text-gray-900">${card.title}</h3>
<p class="text-sm text-gray-600">${card.description}</p>
</div>
</div>
</div>
<div class="card-content" style="max-height: 0;">
${card.content}
</div>
`;
return element;
};
this.setupListeners = function() {
const cards = document.querySelectorAll('.card');
cards.forEach((card, index) => {
const header = card.querySelector('.card-header');
const content = card.querySelector('.card-content');
header.addEventListener('click', () => {
if (this.activeCard === index) {
// Close the active card
this.closeCard(card, content);
this.activeCard = null;
} else {
// Close previously active card (if any)
if (this.activeCard !== null) {
const previousCard = cards[this.activeCard];
this.closeCard(previousCard, previousCard.querySelector('.card-content'));
}
// Open the new card
this.openCard(card, content);
this.activeCard = index;
}
});
});
};
this.openCard = function(card, content) {
card.classList.add('expanded');
content.style.maxHeight = `${content.scrollHeight}px`;
// Animate entrance of content elements with GSAP
const elements = content.querySelectorAll('.card-expanded-content > *');
elements.forEach((el) => {
gsap.from(el, {
opacity: 0,
y: 20,
duration: 0.5,
ease: "power2.out",
});
});
};
this.closeCard = function(card, content) {
card.classList.remove('expanded');
content.style.maxHeight = '0';
};
this.init();
}
}
// ----- GSAP Animations -----
gsap.registerPlugin(ScrollTrigger);
function initHeroAnimations() {
const heroTimeline = gsap.timeline({
defaults: {
ease: "power2.out"
}
});
heroTimeline
.from("#hero h1", {
duration: 1,
y: 50,
opacity: 0,
delay: 0.5
})
.from("#hero p", {
duration: 0.8,
y: 30,
opacity: 0
}, "-=0.6")
.from("#hero form", {
duration: 0.8,
y: 30,
opacity: 0
}, "-=0.6");
gsap.to(".bg-hero-gradient::before", {
yPercent: 30,
ease: "none",
scrollTrigger: {
trigger: "#hero",
start: "top top",
end: "bottom top",
scrub: true,
container: "#content-container" // Specify the scroll container
}
});
}
function initCardAnimations() {
const cards = document.querySelectorAll('.card');
cards.forEach((card, index) => {
gsap.from(card, {
duration: 0.8,
y: 50,
opacity: 0,
delay: index * 0.2,
scrollTrigger: {
trigger: card,
start: "top bottom-=100",
toggleActions: "play none none reverse",
container: "#content-container" // Specify the scroll container
}
});
});
}
function initCarouselAnimations() {
gsap.from("#specialty-carousel", {
duration: 1,
y: 100,
opacity: 0,
scrollTrigger: {
trigger: "#especialidades",
start: "top center",
toggleActions: "play none none reverse",
container: "#content-container" // Specify the scroll container
}
});
}
function initContactAnimations() {
const contactTimeline = gsap.timeline({
scrollTrigger: {
trigger: "#contato",
start: "top center",
toggleActions: "play none none reverse",
container: "#content-container" // Specify the scroll container
}
});
contactTimeline
.from(".map-container", {
duration: 1,
x: -50,
opacity: 0
})
.from(".contact-info", {
duration: 1,
x: 50,
opacity: 0
}, "-=0.8");
}
function initFloatingButtonsAnimations() {
const buttons = document.querySelectorAll('.floating-btn');
buttons.forEach((btn, index) => {
gsap.from(btn, {
duration: 0.5,
x: 100,
opacity: 0,
delay: 0.2 + (index * 0.1),
ease: "power2.out",
scrollTrigger: {
trigger: "body",
start: "top top",
end: "+=50",
toggleActions: "play none none reverse",
container: "#content-container" // Specify the scroll container
}
});
});
}
function initMobileMenuAnimations() {
const menuBtn = document.getElementById('menu-btn');
const mobileMenu = document.getElementById('mobile-menu');
let menuTimeline = gsap.timeline({
paused: true
});
menuTimeline
.to(mobileMenu, {
duration: 0.3,
height: "auto",
opacity: 1,
ease: "power2.inOut"
})
.from(mobileMenu.querySelectorAll('a'), {
duration: 0.4,
y: 20,
opacity: 0,
stagger: 0.1,
ease: "power2.out"
}, "-=0.2");
menuBtn.addEventListener('click', () => {
if (mobileMenu.classList.contains('hidden')) {
mobileMenu.classList.remove('hidden');
menuTimeline.play();
} else {
menuTimeline.reverse().then(() => {
mobileMenu.classList.add('hidden');
});
}
});
}
// ----- Initialization -----
function initAllAnimations() {
initHeroAnimations();
initCardAnimations();
initCarouselAnimations();
initContactAnimations();
initFloatingButtonsAnimations();
initMobileMenuAnimations();
}
document.addEventListener('DOMContentLoaded', () => {
initAllAnimations();
new ExpandableCards();
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment