.network-links,.network-grid,.network-card,.network-link,.net-card{display:none!important}
Certify Therapy Dog | Understanding Therapy Dogs, Service Dogs & ESAs | TheraPetic
/* ========================================
CSS VARIABLES & THEMES
======================================== */
:root {
–primary: #0B7A75;
–primary-dark: #065955;
–primary-light: #E8F5F4;
–primary-glow: rgba(11, 122, 117, 0.15);
–accent-gold: #C5A54E;
–accent-gold-light: #F5F0E1;
–accent-coral: #E07A5F;
–accent-navy: #1A365D;
–font-display: ‘Fraunces’, Georgia, serif;
–font-body: ‘DM Sans’, -apple-system, BlinkMacSystemFont, sans-serif;
–space-xs: 0.25rem; –space-sm: 0.5rem; –space-md: 1rem; –space-lg: 1.5rem;
–space-xl: 2rem; –space-2xl: 3rem; –space-3xl: 4rem; –space-4xl: 6rem;
–radius-sm: 8px; –radius-md: 16px; –radius-lg: 24px; –radius-xl: 40px; –radius-full: 9999px;
–shadow-sm: 0 2px 8px rgba(0,0,0,0.06);
–shadow-md: 0 8px 24px rgba(0,0,0,0.08);
–shadow-lg: 0 16px 48px rgba(0,0,0,0.12);
–shadow-xl: 0 24px 64px rgba(0,0,0,0.16);
–shadow-glow: 0 0 60px var(–primary-glow);
–transition-fast: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
–transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
–transition-slow: 0.5s cubic-bezier(0.4, 0, 0.2, 1);
–transition-bounce: 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
[data-theme=”light”] {
–bg-primary: #FDFCFA;
–bg-secondary: #F5F3EF;
–bg-tertiary: #FFFFFF;
–text-primary: #1A1A1A;
–text-secondary: #4A4A4A;
–text-muted: #6B6B6B;
–border-color: #E5E3DE;
–card-bg: #FFFFFF;
–header-bg: rgba(253, 252, 250, 0.85);
–gradient-hero: linear-gradient(135deg, #F5F3EF 0%, #E8F5F4 50%, #F5F0E1 100%);
}
[data-theme=”dark”] {
–bg-primary: #0F1419;
–bg-secondary: #1A1F26;
–bg-tertiary: #242B33;
–text-primary: #F5F5F5;
–text-secondary: #B8C0CC;
–text-muted: #8899A6;
–border-color: #2F3842;
–card-bg: #1A1F26;
–header-bg: rgba(15, 20, 25, 0.9);
–primary-light: rgba(11, 122, 117, 0.15);
–accent-gold-light: rgba(197, 165, 78, 0.1);
–gradient-hero: linear-gradient(135deg, #1A1F26 0%, #0F1419 50%, #1A1F26 100%);
}
/* ========================================
ANIMATIONS
======================================== */
@keyframes fadeInUp {
from { opacity: 0; transform: translateY(40px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeInDown {
from { opacity: 0; transform: translateY(-30px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeInLeft {
from { opacity: 0; transform: translateX(-40px); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes fadeInRight {
from { opacity: 0; transform: translateX(40px); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes scaleIn {
from { opacity: 0; transform: scale(0.9); }
to { opacity: 1; transform: scale(1); }
}
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-15px); }
}
@keyframes pulse {
0%, 100% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.05); opacity: 0.8; }
}
@keyframes shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
@keyframes gradientFlow {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
@keyframes bounceIn {
0% { transform: scale(0); opacity: 0; }
50% { transform: scale(1.1); }
100% { transform: scale(1); opacity: 1; }
}
.animate-on-scroll {
opacity: 0;
transform: translateY(40px);
transition: opacity 0.6s ease, transform 0.6s ease;
}
.animate-on-scroll.visible {
opacity: 1;
transform: translateY(0);
}
.animate-on-scroll.delay-1 { transition-delay: 0.1s; }
.animate-on-scroll.delay-2 { transition-delay: 0.2s; }
.animate-on-scroll.delay-3 { transition-delay: 0.3s; }
.animate-on-scroll.delay-4 { transition-delay: 0.4s; }
/* ========================================
BASE RESET & TYPOGRAPHY
======================================== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: var(–font-body);
font-size: 1rem;
line-height: 1.65;
color: var(–text-primary);
background: var(–bg-primary);
-webkit-font-smoothing: antialiased;
overflow-x: hidden;
}
h1, h2, h3, h4 {
font-family: var(–font-display);
font-weight: 500;
line-height: 1.2;
color: var(–text-primary);
}
h1 { font-size: clamp(2.25rem, 6vw, 3.5rem); }
h2 { font-size: clamp(1.75rem, 4vw, 2.5rem); }
h3 { font-size: clamp(1.25rem, 3vw, 1.5rem); }
p { color: var(–text-secondary); max-width: 65ch; }
a { color: var(–primary); text-decoration: none; transition: var(–transition-fast); }
a:hover { color: var(–primary-dark); }
img { max-width: 100%; height: auto; display: block; }
[data-lang=”en”] .lang-es { display: none !important; }
[data-lang=”es”] .lang-en { display: none !important; }
.container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 var(–space-lg); }
.section { padding: var(–space-4xl) 0; position: relative; }
/* ========================================
HEADER
======================================== */
.header {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000;
background: var(–header-bg);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-bottom: 1px solid var(–border-color);
padding: var(–space-md) 0;
animation: fadeInDown 0.6s ease;
}
.header-inner {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(–space-lg);
}
.logo {
display: flex;
align-items: center;
gap: var(–space-sm);
text-decoration: none;
transition: var(–transition-base);
}
.logo:hover { transform: scale(1.02); }
.logo img { width: 48px; height: 48px; object-fit: contain; }
.logo-text {
font-family: var(–font-display);
font-size: 1.1rem;
font-weight: 600;
color: var(–text-primary);
line-height: 1.2;
}
.logo-tagline {
display: block;
font-family: var(–font-body);
font-size: 0.7rem;
color: var(–text-muted);
text-transform: uppercase;
letter-spacing: 0.05em;
}
.nav-desktop {
display: none;
align-items: center;
gap: var(–space-xl);
}
.nav-link {
font-size: 0.9rem;
font-weight: 500;
color: var(–text-secondary);
padding: var(–space-sm) 0;
position: relative;
transition: var(–transition-base);
}
.nav-link::after {
content: ”;
position: absolute;
bottom: 0;
left: 0;
width: 0;
height: 2px;
background: linear-gradient(90deg, var(–primary), var(–accent-gold));
transition: var(–transition-base);
}
.nav-link:hover { color: var(–primary); }
.nav-link:hover::after { width: 100%; }
.header-actions { display: flex; align-items: center; gap: var(–space-sm); }
.toggle-btn {
display: flex;
align-items: center;
justify-content: center;
width: 42px;
height: 42px;
border: 1px solid var(–border-color);
border-radius: var(–radius-md);
background: var(–card-bg);
cursor: pointer;
transition: var(–transition-base);
font-size: 1.1rem;
}
.toggle-btn:hover {
border-color: var(–primary);
background: var(–primary-light);
transform: translateY(-2px);
box-shadow: var(–shadow-md);
}
.lang-toggle {
width: auto;
padding: 0 var(–space-sm);
font-size: 0.8rem;
font-weight: 700;
font-family: var(–font-body);
color: var(–text-primary);
background: var(–card-bg);
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(–space-sm);
padding: var(–space-sm) var(–space-lg);
font-family: var(–font-body);
font-size: 0.9rem;
font-weight: 600;
border-radius: var(–radius-md);
cursor: pointer;
transition: var(–transition-base);
text-decoration: none;
border: none;
position: relative;
overflow: hidden;
}
.btn-primary {
background: linear-gradient(135deg, var(–primary) 0%, var(–primary-dark) 100%);
color: white;
box-shadow: 0 4px 16px rgba(11, 122, 117, 0.3);
}
.btn-primary::before {
content: ”;
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
transition: var(–transition-slow);
}
.btn-primary:hover {
transform: translateY(-3px);
box-shadow: 0 8px 24px rgba(11, 122, 117, 0.4);
color: white;
}
.btn-primary:hover::before { left: 100%; }
.btn-secondary {
background: transparent;
color: var(–primary);
border: 2px solid var(–primary);
}
.btn-secondary:hover {
background: var(–primary);
color: white;
transform: translateY(-3px);
}
.btn-gold {
background: linear-gradient(135deg, var(–accent-gold) 0%, #B8983F 100%);
color: white;
box-shadow: 0 4px 16px rgba(197, 165, 78, 0.3);
}
.btn-gold:hover {
transform: translateY(-3px);
box-shadow: 0 8px 24px rgba(197, 165, 78, 0.4);
color: white;
}
.mobile-menu-btn {
display: flex;
flex-direction: column;
gap: 5px;
width: 42px;
height: 42px;
justify-content: center;
align-items: center;
border: none;
background: transparent;
cursor: pointer;
}
.mobile-menu-btn span {
width: 24px;
height: 2px;
background: var(–text-primary);
transition: var(–transition-fast);
}
.mobile-menu {
display: none;
position: fixed;
top: 81px;
left: 0;
right: 0;
bottom: 0;
background: var(–bg-primary);
padding: var(–space-xl);
z-index: 999;
animation: fadeInDown 0.3s ease;
}
.mobile-menu.active { display: block; }
.mobile-menu a {
display: block;
padding: var(–space-md) 0;
font-size: 1.1rem;
font-weight: 500;
color: var(–text-primary);
border-bottom: 1px solid var(–border-color);
}
@media (min-width: 1024px) {
.nav-desktop { display: flex; }
.mobile-menu-btn { display: none; }
}
/* ========================================
HERO SECTION
======================================== */
.hero {
padding: calc(var(–space-4xl) + 80px) 0 var(–space-4xl);
background: var(–gradient-hero);
position: relative;
overflow: hidden;
min-height: 90vh;
display: flex;
align-items: center;
}
.hero::before {
content: ”;
position: absolute;
top: -50%;
right: -20%;
width: 80%;
height: 150%;
background: radial-gradient(ellipse at center, var(–primary-glow) 0%, transparent 60%);
animation: pulse 8s ease-in-out infinite;
pointer-events: none;
}
.hero::after {
content: ”;
position: absolute;
bottom: -20%;
left: -10%;
width: 50%;
height: 80%;
background: radial-gradient(ellipse at center, rgba(197, 165, 78, 0.1) 0%, transparent 60%);
animation: pulse 10s ease-in-out infinite reverse;
pointer-events: none;
}
.hero-inner {
display: grid;
grid-template-columns: 1fr;
gap: var(–space-3xl);
align-items: center;
position: relative;
z-index: 1;
}
@media (min-width: 768px) {
.hero-inner { grid-template-columns: 1fr 1fr; }
}
.hero-content { max-width: 600px; }
.hero-badge {
display: inline-flex;
align-items: center;
gap: var(–space-sm);
padding: var(–space-xs) var(–space-md);
background: var(–accent-gold-light);
border: 1px solid var(–accent-gold);
border-radius: var(–radius-full);
font-size: 0.8rem;
font-weight: 600;
color: var(–accent-gold);
margin-bottom: var(–space-lg);
animation: fadeInUp 0.6s ease 0.2s both;
}
.hero h1 {
margin-bottom: var(–space-lg);
animation: fadeInUp 0.6s ease 0.3s both;
}
.hero h1 em {
font-style: normal;
background: linear-gradient(135deg, var(–primary) 0%, var(–accent-gold) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-description {
font-size: 1.15rem;
margin-bottom: var(–space-xl);
animation: fadeInUp 0.6s ease 0.4s both;
}
.hero-ctas {
display: flex;
flex-wrap: wrap;
gap: var(–space-md);
margin-bottom: var(–space-xl);
animation: fadeInUp 0.6s ease 0.5s both;
}
.hero-trust {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(–space-lg);
padding-top: var(–space-lg);
border-top: 1px solid var(–border-color);
animation: fadeInUp 0.6s ease 0.6s both;
}
.trust-item {
display: flex;
align-items: center;
gap: var(–space-sm);
font-size: 0.85rem;
color: var(–text-muted);
}
.trust-item svg { color: var(–primary); }
.hero-visual {
position: relative;
animation: fadeInRight 0.8s ease 0.4s both;
}
.hero-image-wrapper {
position: relative;
border-radius: var(–radius-xl);
overflow: hidden;
box-shadow: var(–shadow-xl);
transition: var(–transition-base);
}
.hero-image-wrapper:hover {
transform: translateY(-8px) rotate(1deg);
box-shadow: var(–shadow-glow), var(–shadow-xl);
}
.hero-image-wrapper img {
width: 100%;
height: auto;
aspect-ratio: 4/3;
object-fit: cover;
transition: var(–transition-slow);
}
.hero-image-wrapper:hover img { transform: scale(1.03); }
.hero-float-card {
position: absolute;
bottom: -20px;
left: -20px;
background: var(–card-bg);
padding: var(–space-md) var(–space-lg);
border-radius: var(–radius-lg);
box-shadow: var(–shadow-lg);
display: flex;
align-items: center;
gap: var(–space-md);
animation: float 4s ease-in-out infinite, bounceIn 0.6s ease 0.8s both;
}
.float-icon {
width: 52px;
height: 52px;
background: linear-gradient(135deg, var(–primary) 0%, var(–primary-dark) 100%);
border-radius: var(–radius-md);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
color: white;
}
.float-text strong { display: block; font-size: 1.1rem; color: var(–text-primary); }
.float-text span { font-size: 0.8rem; color: var(–text-muted); }
/* ========================================
ALERT BANNER
======================================== */
.alert-banner {
background: linear-gradient(135deg, var(–accent-coral) 0%, #D76A50 100%);
color: white;
padding: var(–space-xl) 0;
position: relative;
overflow: hidden;
}
.alert-banner::before {
content: ”;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.1) 50%, transparent 100%);
background-size: 200% 100%;
animation: shimmer 3s ease-in-out infinite;
}
.alert-inner {
display: flex;
flex-direction: column;
gap: var(–space-md);
align-items: flex-start;
position: relative;
z-index: 1;
}
.alert-icon { font-size: 2.5rem; animation: pulse 2s ease-in-out infinite; }
.alert-content h3 { color: white; margin-bottom: var(–space-sm); }
.alert-content p { color: rgba(255,255,255,0.95); margin: 0; max-width: none; }
@media (min-width: 768px) {
.alert-inner { flex-direction: row; align-items: center; }
}
/* ========================================
COMPARISON SECTION
======================================== */
.comparison-section { background: var(–bg-secondary); }
.section-header {
text-align: center;
max-width: 700px;
margin: 0 auto var(–space-3xl);
}
.section-header h2 { margin-bottom: var(–space-md); }
.section-header p { margin: 0 auto; font-size: 1.1rem; }
.comparison-grid {
display: grid;
grid-template-columns: 1fr;
gap: var(–space-xl);
}
@media (min-width: 768px) {
.comparison-grid { grid-template-columns: repeat(3, 1fr); }
}
.comparison-card {
background: var(–card-bg);
border-radius: var(–radius-lg);
padding: var(–space-xl);
border: 2px solid var(–border-color);
transition: var(–transition-base);
position: relative;
overflow: hidden;
}
.comparison-card::before {
content: ”;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, var(–border-color), var(–border-color));
transition: var(–transition-base);
}
.comparison-card:hover {
border-color: var(–primary);
transform: translateY(-8px);
box-shadow: var(–shadow-lg);
}
.comparison-card:hover::before {
background: linear-gradient(90deg, var(–primary), var(–accent-gold));
}
.comparison-card.highlighted {
border-color: var(–primary);
background: linear-gradient(180deg, var(–primary-light) 0%, var(–card-bg) 30%);
}
.comparison-card.highlighted::before {
background: linear-gradient(90deg, var(–primary), var(–accent-gold));
}
.card-badge {
display: inline-block;
padding: var(–space-xs) var(–space-sm);
background: linear-gradient(135deg, var(–primary) 0%, var(–primary-dark) 100%);
color: white;
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
border-radius: var(–radius-sm);
margin-bottom: var(–space-md);
}
.card-icon {
font-size: 3rem;
margin-bottom: var(–space-md);
transition: var(–transition-base);
}
.comparison-card:hover .card-icon { transform: scale(1.1); }
.comparison-card h3 { margin-bottom: var(–space-xs); }
.comparison-card .subtitle {
font-size: 0.9rem;
color: var(–primary);
font-weight: 600;
margin-bottom: var(–space-md);
}
.comparison-card p { font-size: 0.95rem; margin-bottom: var(–space-lg); }
.card-list { list-style: none; margin-bottom: var(–space-lg); }
.card-list li {
display: flex;
align-items: flex-start;
gap: var(–space-sm);
padding: var(–space-sm) 0;
font-size: 0.9rem;
color: var(–text-secondary);
border-bottom: 1px solid var(–border-color);
}
.card-list li:last-child { border-bottom: none; }
.card-list .check { color: var(–primary); font-weight: bold; }
.card-list .x { color: var(–accent-coral); font-weight: bold; }
/* ========================================
PROCESS SECTION
======================================== */
.process-section { background: var(–bg-primary); }
.process-grid {
display: grid;
grid-template-columns: 1fr;
gap: var(–space-xl);
position: relative;
}
@media (min-width: 768px) {
.process-grid { grid-template-columns: repeat(3, 1fr); }
.process-grid::before {
content: ”;
position: absolute;
top: 32px;
left: 20%;
width: 60%;
height: 4px;
background: linear-gradient(90deg, var(–primary), var(–accent-gold), var(–primary));
border-radius: 2px;
z-index: 0;
}
}
.process-step {
text-align: center;
position: relative;
z-index: 1;
}
.step-number {
width: 72px;
height: 72px;
background: linear-gradient(135deg, var(–primary) 0%, var(–primary-dark) 100%);
color: white;
font-family: var(–font-display);
font-size: 1.75rem;
font-weight: 700;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto var(–space-lg);
box-shadow: 0 8px 24px rgba(11, 122, 117, 0.3);
transition: var(–transition-base);
}
.process-step:hover .step-number {
transform: scale(1.1) rotate(5deg);
box-shadow: 0 12px 32px rgba(11, 122, 117, 0.4);
}
.process-step h3 { margin-bottom: var(–space-sm); }
.process-step p { margin: 0 auto; font-size: 0.95rem; }
/* ========================================
PRICING SECTION
======================================== */
.pricing-section { background: var(–bg-secondary); }
.pricing-note {
text-align: center;
max-width: 600px;
margin: 0 auto var(–space-3xl);
padding: var(–space-lg);
background: var(–card-bg);
border-radius: var(–radius-lg);
border-left: 4px solid var(–primary);
box-shadow: var(–shadow-sm);
}
.pricing-note p { margin: 0 auto; }
.pricing-grid {
display: grid;
grid-template-columns: 1fr;
gap: var(–space-xl);
}
@media (min-width: 768px) {
.pricing-grid { grid-template-columns: repeat(3, 1fr); align-items: stretch; }
}
.pricing-card {
background: var(–card-bg);
border-radius: var(–radius-lg);
padding: var(–space-xl);
border: 2px solid var(–border-color);
text-align: center;
transition: var(–transition-base);
position: relative;
display: flex;
flex-direction: column;
}
.pricing-card:hover {
transform: translateY(-12px);
box-shadow: var(–shadow-xl);
}
.pricing-card.featured {
border-color: var(–primary);
transform: scale(1.03);
box-shadow: var(–shadow-lg);
}
.pricing-card.featured:hover { transform: scale(1.03) translateY(-12px); }
.pricing-badge {
position: absolute;
top: -14px;
left: 50%;
transform: translateX(-50%);
background: linear-gradient(135deg, var(–primary) 0%, var(–primary-dark) 100%);
color: white;
padding: var(–space-xs) var(–space-lg);
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
border-radius: var(–radius-full);
white-space: nowrap;
}
.pricing-card h3 { margin-bottom: var(–space-xs); }
.pricing-delivery {
font-size: 0.85rem;
color: var(–text-muted);
margin-bottom: var(–space-lg);
}
.pricing-price {
font-family: var(–font-display);
font-size: 3.5rem;
font-weight: 700;
background: linear-gradient(135deg, var(–primary) 0%, var(–accent-gold) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: var(–space-lg);
}
.pricing-price sup { font-size: 1.5rem; vertical-align: super; }
.pricing-features {
list-style: none;
text-align: left;
margin-bottom: var(–space-xl);
flex-grow: 1;
}
.pricing-features li {
padding: var(–space-sm) 0;
font-size: 0.9rem;
color: var(–text-secondary);
border-bottom: 1px solid var(–border-color);
display: flex;
align-items: flex-start;
gap: var(–space-sm);
}
.pricing-features li:last-child { border-bottom: none; }
.pricing-features .icon { color: var(–primary); flex-shrink: 0; }
.pricing-cta { width: 100%; }
.pricing-guarantee {
text-align: center;
margin-top: var(–space-3xl);
padding: var(–space-xl);
background: var(–card-bg);
border-radius: var(–radius-lg);
}
.guarantee-badges {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: var(–space-xl);
margin-top: var(–space-lg);
}
.guarantee-item {
display: flex;
align-items: center;
gap: var(–space-sm);
font-size: 0.9rem;
font-weight: 500;
color: var(–text-secondary);
}
.guarantee-item svg { color: var(–primary); }
/* ========================================
FAQ SECTION
======================================== */
.faq-section { background: var(–bg-primary); }
.faq-grid { max-width: 800px; margin: 0 auto; }
.faq-item {
border-bottom: 1px solid var(–border-color);
overflow: hidden;
}
.faq-question {
display: flex;
justify-content: space-between;
align-items: center;
padding: var(–space-lg) 0;
cursor: pointer;
font-family: var(–font-display);
font-size: 1.1rem;
font-weight: 500;
color: var(–text-primary);
transition: var(–transition-base);
}
.faq-question:hover { color: var(–primary); }
.faq-icon {
font-size: 1.5rem;
color: var(–primary);
transition: var(–transition-base);
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
background: var(–primary-light);
border-radius: 50%;
}
.faq-item.active .faq-icon { transform: rotate(45deg); background: var(–primary); color: white; }
.faq-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease;
}
.faq-item.active .faq-answer { max-height: 500px; }
.faq-answer-inner { padding-bottom: var(–space-lg); }
.faq-answer p { font-size: 0.95rem; }
/* ========================================
CONTACT SECTION
======================================== */
.contact-section { background: var(–bg-secondary); }
.contact-grid {
display: grid;
grid-template-columns: 1fr;
gap: var(–space-xl);
}
@media (min-width: 768px) {
.contact-grid { grid-template-columns: repeat(3, 1fr); }
}
.contact-card {
background: var(–card-bg);
padding: var(–space-xl);
border-radius: var(–radius-lg);
text-align: center;
border: 1px solid var(–border-color);
transition: var(–transition-base);
}
.contact-card:hover {
border-color: var(–primary);
transform: translateY(-8px);
box-shadow: var(–shadow-lg);
}
.contact-icon {
font-size: 2.5rem;
margin-bottom: var(–space-md);
transition: var(–transition-base);
}
.contact-card:hover .contact-icon { transform: scale(1.2); }
.contact-card h3 { margin-bottom: var(–space-sm); }
.contact-card a { font-size: 1.1rem; font-weight: 600; }
/* ========================================
REVIEWS SECTION
======================================== */
.reviews-section { background: var(–bg-primary); }
.reviews-logos {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: var(–space-lg);
}
.review-logo {
display: flex;
flex-direction: column;
align-items: center;
gap: var(–space-sm);
padding: var(–space-lg);
background: var(–card-bg);
border-radius: var(–radius-lg);
border: 1px solid var(–border-color);
transition: var(–transition-base);
text-decoration: none;
min-width: 140px;
}
.review-logo:hover {
border-color: var(–primary);
transform: translateY(-8px) scale(1.03);
box-shadow: var(–shadow-lg);
}
.review-logo img { height: 32px; width: auto; }
.review-stars { color: var(–accent-gold); font-size: 1.1rem; letter-spacing: 2px; }
.review-text { font-size: 0.8rem; color: var(–text-muted); }
/* ========================================
CTA SECTION
======================================== */
.cta-section {
background: linear-gradient(135deg, var(–primary) 0%, var(–primary-dark) 50%, var(–accent-navy) 100%);
background-size: 200% 200%;
animation: gradientFlow 8s ease infinite;
color: white;
padding: var(–space-4xl) 0;
text-align: center;
position: relative;
overflow: hidden;
}
.cta-section::before {
content: ”;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url(“data:image/svg+xml,%3Csvg width=’60’ height=’60’ viewBox=’0 0 60 60′ xmlns=’http://www.w3.org/2000/svg’%3E%3Cg fill=’none’ fill-rule=’evenodd’%3E%3Cg fill=’%23ffffff’ fill-opacity=’0.03’%3E%3Cpath d=’M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z’/%3E%3C/g%3E%3C/g%3E%3C/svg%3E”);
opacity: 0.5;
}
.cta-section .container { position: relative; z-index: 1; }
.cta-section h2 { color: white; margin-bottom: var(–space-md); }
.cta-section p { color: rgba(255,255,255,0.9); max-width: 600px; margin: 0 auto var(–space-xl); font-size: 1.15rem; }
.cta-buttons { display: flex; flex-wrap: wrap; justify-content: center; gap: var(–space-md); }
.cta-section .btn-primary {
background: white;
color: var(–primary);
box-shadow: 0 4px 16px rgba(0,0,0,0.2);
}
.cta-section .btn-primary:hover {
background: var(–accent-gold);
color: white;
}
.cta-section .btn-secondary {
border-color: white;
color: white;
}
.cta-section .btn-secondary:hover {
background: white;
color: var(–primary);
}
/* ========================================
FOOTER
======================================== */
.footer {
background: var(–accent-navy);
color: white;
padding: var(–space-4xl) 0 var(–space-xl);
}
.footer-grid {
display: grid;
grid-template-columns: 1fr;
gap: var(–space-xl);
margin-bottom: var(–space-3xl);
}
@media (min-width: 768px) {
.footer-grid { grid-template-columns: 2fr 1fr 1fr 1fr; }
}
.footer-brand {
display: flex;
align-items: center;
gap: var(–space-sm);
margin-bottom: var(–space-md);
}
.footer-brand img { width: 44px; height: 44px; }
.footer-brand span { font-family: var(–font-display); font-size: 1.1rem; font-weight: 600; }
.footer-about p { color: rgba(255,255,255,0.7); font-size: 0.9rem; max-width: 300px; }
.footer-col h4 {
color: var(–accent-gold);
font-size: 0.85rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
margin-bottom: var(–space-md);
}
.footer-col a {
display: block;
color: rgba(255,255,255,0.7);
font-size: 0.9rem;
padding: var(–space-xs) 0;
transition: var(–transition-fast);
}
.footer-col a:hover { color: white; padding-left: var(–space-sm); }
.footer-network {
border-top: 1px solid rgba(255,255,255,0.1);
padding-top: var(–space-xl);
margin-top: var(–space-xl);
text-align: center;
}
.footer-network p { color: rgba(255,255,255,0.6); font-size: 0.85rem; margin-bottom: var(–space-sm); max-width: none; }
.footer-network strong { color: var(–accent-gold); }
.network-links {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: var(–space-sm);
margin-top: var(–space-md);
}
.network-links a {
font-size: 0.8rem;
color: rgba(255,255,255,0.6);
padding: var(–space-xs) var(–space-md);
background: rgba(255,255,255,0.05);
border-radius: var(–radius-sm);
transition: var(–transition-fast);
}
.network-links a:hover { background: var(–accent-gold); color: var(–accent-navy); }
.network-links a small { opacity: 0.7; }
.footer-bottom {
border-top: 1px solid rgba(255,255,255,0.1);
padding-top: var(–space-lg);
margin-top: var(–space-xl);
text-align: center;
}
.footer-bottom p { color: rgba(255,255,255,0.5); font-size: 0.8rem; max-width: none; }
.footer-bottom a { color: rgba(255,255,255,0.5); }
.footer-bottom a:hover { color: white; }
/* Utilities */
.text-center { text-align: center; }
.mt-lg { margin-top: var(–space-lg); }
@media (min-width: 1024px) { .desktop-only { display: inline-flex !important; } }
@media (max-width: 1023px) { .desktop-only { display: none !important; } }
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
🤔
Wait — Are You Using the Right Term?
Espera — ¿Estás Usando el Término Correcto?
“Therapy Dog” Might Not Be What You Need
“Perro de Terapia” Puede No Ser Lo Que Necesitas
Most people searching for “therapy dog certification” actually need something completely different. Therapy dogs help others at hospitals and schools. If you need a dog to help you with anxiety, depression, or PTSD — you’re looking for an ESA or Psychiatric Service Dog.
La mayoría de las personas que buscan “certificación de perro de terapia” en realidad necesitan algo completamente diferente. Los perros de terapia ayudan a otros en hospitales. Si necesitas un perro para ayudarte a ti con ansiedad o depresión — necesitas un ESA o Perro de Servicio Psiquiátrico.
50,000+ Helped50,000+ Ayudados
Licensed ProvidersProveedores Licenciados
501(c)(3) Nonprofit501(c)(3) Sin Fines de Lucro
?
Confused?¿Confundido?
We’ll help you figure it outTe ayudaremos a entenderlo
💡
Here’s What Most People Don’t KnowEsto Es Lo Que La Mayoría No Sabe
Therapy dogs = Volunteer dogs that comfort other people at hospitals, schools, nursing homes. They have NO special legal rights.
If your dog helps YOU with mental health, housing, or travel — you actually need an ESA letter or PSD documentation. That’s what we provide.Perros de terapia = Perros voluntarios que consuelan a otras personas en hospitales y escuelas. NO tienen derechos legales especiales.
Si tu perro te ayuda a TI con salud mental, vivienda o viajes — necesitas una carta ESA o documentación PSD.
Take our free, confidential screening to see if you qualify for an Emotional Support Animal or Service Dog letter from a Licensed Clinical Doctor.Realiza nuestra evaluación gratuita y confidencial para ver si calificas.
// Theme Toggle
function toggleTheme() {
const html = document.documentElement;
const newTheme = html.dataset.theme === ‘light’ ? ‘dark’ : ‘light’;
html.dataset.theme = newTheme;
localStorage.setItem(‘theme’, newTheme);
document.querySelector(‘.theme-icon’).textContent = newTheme === ‘light’ ? ‘🌙’ : ‘☀️’;
}
// Language Toggle
function toggleLang() {
const html = document.documentElement;
const newLang = html.dataset.lang === ‘en’ ? ‘es’ : ‘en’;
html.dataset.lang = newLang;
localStorage.setItem(‘lang’, newLang);
}
// Mobile Menu
function toggleMobileMenu() {
document.getElementById(‘mobileMenu’).classList.toggle(‘active’);
}
// FAQ Toggle
function toggleFaq(element) {
const faqItem = element.parentElement;
const isActive = faqItem.classList.contains(‘active’);
document.querySelectorAll(‘.faq-item’).forEach(item => item.classList.remove(‘active’));
if (!isActive) faqItem.classList.add(‘active’);
}
// Scroll Animation Observer
const observerOptions = { threshold: 0.1, rootMargin: ‘0px 0px -50px 0px’ };
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add(‘visible’);
observer.unobserve(entry.target);
}
});
}, observerOptions);
document.querySelectorAll(‘.animate-on-scroll’).forEach(el => observer.observe(el));
// Initialize
document.addEventListener(‘DOMContentLoaded’, function() {
const savedTheme = localStorage.getItem(‘theme’);
if (savedTheme) {
document.documentElement.dataset.theme = savedTheme;
document.querySelector(‘.theme-icon’).textContent = savedTheme === ‘light’ ? ‘🌙’ : ‘☀️’;
} else if (window.matchMedia(‘(prefers-color-scheme: dark)’).matches) {
document.documentElement.dataset.theme = ‘dark’;
document.querySelector(‘.theme-icon’).textContent = ‘☀️’;
}
const savedLang = localStorage.getItem(‘lang’);
if (savedLang) document.documentElement.dataset.lang = savedLang;
document.querySelectorAll(‘.mobile-menu a’).forEach(link => {
link.addEventListener(‘click’, () => document.getElementById(‘mobileMenu’).classList.remove(‘active’));
});
});
window.addEventListener(‘resize’, function() {
if (window.innerWidth >= 1024) document.getElementById(‘mobileMenu’).classList.remove(‘active’);
});