diff options
author | Robby Zambito <contact@robbyzambito.me> | 2025-08-06 19:35:38 -0400 |
---|---|---|
committer | Robby Zambito <contact@robbyzambito.me> | 2025-08-06 19:38:52 -0400 |
commit | d35903bf5b56cc40e3b61d34f57c192d6a8b3430 (patch) | |
tree | 93e234b499b497f070aab282aa4841b9588d44ee /static/contact-styles.css | |
parent | 60716f3ebb54f8a8f8426611c2727737678c66fb (diff) |
Added contact page
Prompt:
Create a contact page
Diffstat (limited to 'static/contact-styles.css')
-rw-r--r-- | static/contact-styles.css | 773 |
1 files changed, 773 insertions, 0 deletions
diff --git a/static/contact-styles.css b/static/contact-styles.css new file mode 100644 index 0000000..612f14c --- /dev/null +++ b/static/contact-styles.css @@ -0,0 +1,773 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --primary-color: #6366f1; + --primary-dark: #4f46e5; + --secondary-color: #f1f5f9; + --text-primary: #1e293b; + --text-secondary: #64748b; + --background: #ffffff; + --surface: #f8fafc; + --border: #e2e8f0; + --success: #10b981; + --warning: #f59e0b; + --error: #ef4444; + --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + --shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1); + --gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); +} + +body { + font-family: 'Inter', sans-serif; + line-height: 1.6; + color: var(--text-primary); + background: var(--background); +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; +} + +/* Navigation */ +.navbar { + position: fixed; + top: 0; + width: 100%; + background: rgba(255, 255, 255, 0.95); + backdrop-filter: blur(10px); + z-index: 1000; + border-bottom: 1px solid var(--border); +} + +.nav-container { + max-width: 1200px; + margin: 0 auto; + padding: 1rem 2rem; + display: flex; + justify-content: space-between; + align-items: center; +} + +.nav-logo { + font-size: 1.5rem; + font-weight: 700; + background: var(--gradient); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-decoration: none; +} + +.nav-menu { + display: flex; + list-style: none; + gap: 2rem; +} + +.nav-link { + text-decoration: none; + color: var(--text-primary); + font-weight: 500; + transition: color 0.3s ease; +} + +.nav-link:hover, +.nav-link.active { + color: var(--primary-color); +} + +.nav-actions { + display: flex; + align-items: center; + gap: 1rem; +} + +/* Buttons */ +.btn { + padding: 0.75rem 1.5rem; + border: none; + border-radius: 0.5rem; + font-weight: 600; + cursor: pointer; + transition: all 0.3s ease; + text-decoration: none; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + font-size: 0.875rem; + position: relative; +} + +.btn-large { + padding: 1rem 2rem; + font-size: 1rem; +} + +.btn-primary { + background: var(--gradient); + color: white; + box-shadow: var(--shadow); +} + +.btn-primary:hover:not(:disabled) { + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +.btn-primary:disabled { + opacity: 0.7; + cursor: not-allowed; + transform: none; +} + +.btn-secondary { + background: white; + color: var(--text-primary); + border: 2px solid var(--border); +} + +.btn-secondary:hover { + border-color: var(--primary-color); + color: var(--primary-color); +} + +.btn-ghost { + background: transparent; + color: var(--text-primary); + border: none; +} + +.btn-ghost:hover { + background: var(--surface); +} + +.loading-spinner { + display: none; + width: 20px; + height: 20px; + border: 2px solid transparent; + border-top: 2px solid currentColor; + border-radius: 50%; + animation: spin 1s linear infinite; +} + +.btn.loading .button-text { + opacity: 0; +} + +.btn.loading .loading-spinner { + display: block; + position: absolute; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +/* Hero Section */ +.hero { + padding: 8rem 0 4rem; + background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); + text-align: center; +} + +.hero-title { + font-size: 3.5rem; + font-weight: 700; + line-height: 1.1; + margin-bottom: 1.5rem; +} + +.gradient-text { + background: var(--gradient); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.hero-subtitle { + font-size: 1.25rem; + color: var(--text-secondary); + max-width: 600px; + margin: 0 auto; + line-height: 1.6; +} + +/* Contact Options */ +.contact-options { + padding: 4rem 0; + background: var(--background); +} + +.contact-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 2rem; +} + +.contact-card { + background: white; + padding: 2rem; + border-radius: 1rem; + box-shadow: var(--shadow); + text-align: center; + transition: transform 0.3s ease; +} + +.contact-card:hover { + transform: translateY(-5px); +} + +.contact-icon { + font-size: 3rem; + margin-bottom: 1rem; +} + +.contact-card h3 { + font-size: 1.25rem; + font-weight: 600; + margin-bottom: 1rem; +} + +.contact-card p { + color: var(--text-secondary); + margin-bottom: 1.5rem; + line-height: 1.6; +} + +/* Contact Form Section */ +.contact-form-section { + padding: 4rem 0; + background: var(--surface); +} + +.contact-layout { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 4rem; + align-items: start; +} + +.contact-info h2 { + font-size: 2rem; + font-weight: 700; + margin-bottom: 1rem; +} + +.contact-info > p { + color: var(--text-secondary); + margin-bottom: 2rem; + font-size: 1.125rem; +} + +.contact-details { + margin-bottom: 2rem; +} + +.contact-detail { + display: flex; + align-items: flex-start; + gap: 1rem; + margin-bottom: 2rem; +} + +.detail-icon { + font-size: 1.5rem; + margin-top: 0.25rem; +} + +.detail-content h4 { + font-weight: 600; + margin-bottom: 0.5rem; +} + +.detail-content p { + color: var(--text-secondary); + line-height: 1.6; +} + +.social-links h4 { + font-weight: 600; + margin-bottom: 1rem; +} + +.social-icons { + display: flex; + gap: 1rem; +} + +.social-icon { + width: 48px; + height: 48px; + background: white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: var(--text-secondary); + text-decoration: none; + transition: all 0.3s ease; + box-shadow: var(--shadow); +} + +.social-icon:hover { + color: var(--primary-color); + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +/* Form Styles */ +.contact-form-container { + background: white; + padding: 2rem; + border-radius: 1rem; + box-shadow: var(--shadow); +} + +.contact-form { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.form-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1rem; +} + +.form-group { + display: flex; + flex-direction: column; +} + +.form-group label { + font-weight: 500; + margin-bottom: 0.5rem; + color: var(--text-primary); +} + +.form-group input, +.form-group select, +.form-group textarea { + padding: 0.75rem 1rem; + border: 2px solid var(--border); + border-radius: 0.5rem; + font-size: 1rem; + transition: all 0.3s ease; + font-family: inherit; +} + +.form-group input:focus, +.form-group select:focus, +.form-group textarea:focus { + outline: none; + border-color: var(--primary-color); + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); +} + +.form-group input.error, +.form-group select.error, +.form-group textarea.error { + border-color: var(--error); +} + +.form-group textarea { + resize: vertical; + min-height: 120px; +} + +.character-count { + font-size: 0.875rem; + color: var(--text-secondary); + text-align: right; + margin-top: 0.25rem; +} + +.error-message { + color: var(--error); + font-size: 0.875rem; + margin-top: 0.5rem; + min-height: 1.25rem; +} + +/* Radio Group */ +.radio-group { + display: flex; + gap: 1.5rem; + flex-wrap: wrap; +} + +.radio-label { + display: flex; + align-items: center; + cursor: pointer; + font-weight: 500; +} + +.radio-label input[type="radio"] { + display: none; +} + +.radio-custom { + width: 20px; + height: 20px; + border: 2px solid var(--border); + border-radius: 50%; + margin-right: 0.5rem; + position: relative; + transition: all 0.3s ease; +} + +.radio-label input[type="radio"]:checked + .radio-custom { + border-color: var(--primary-color); +} + +.radio-label input[type="radio"]:checked + .radio-custom::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 8px; + height: 8px; + background: var(--primary-color); + border-radius: 50%; +} + +/* Checkbox */ +.checkbox-container { + display: flex; + align-items: flex-start; + cursor: pointer; + font-size: 0.875rem; + color: var(--text-secondary); + line-height: 1.5; +} + +.checkbox-container input { + display: none; +} + +.checkmark { + width: 18px; + height: 18px; + border: 2px solid var(--border); + border-radius: 0.25rem; + margin-right: 0.75rem; + margin-top: 0.125rem; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease; + flex-shrink: 0; +} + +.checkbox-container input:checked + .checkmark { + background: var(--primary-color); + border-color: var(--primary-color); +} + +.checkbox-container input:checked + .checkmark::after { + content: '✓'; + color: white; + font-size: 0.75rem; + font-weight: bold; +} + +.checkbox-container a { + color: var(--primary-color); + text-decoration: none; +} + +.checkbox-container a:hover { + text-decoration: underline; +} + +/* Form States */ +.form-success, +.form-error { + display: none; + text-align: center; + padding: 2rem; + border-radius: 0.75rem; + margin-top: 1rem; +} + +.form-success { + background: #f0fdf4; + border: 1px solid #bbf7d0; + color: #166534; +} + +.form-error { + background: #fef2f2; + border: 1px solid #fecaca; + color: #dc2626; +} + +.success-icon, +.error-icon { + font-size: 3rem; + margin-bottom: 1rem; +} + +.form-success h3, +.form-error h3 { + font-size: 1.25rem; + font-weight: 600; + margin-bottom: 0.5rem; +} + +.form-success.show, +.form-error.show { + display: block; +} + +/* FAQ Section */ +.faq-section { + padding: 4rem 0; + background: var(--background); +} + +.section-header { + text-align: center; + margin-bottom: 3rem; +} + +.section-title { + font-size: 2.5rem; + font-weight: 700; + margin-bottom: 1rem; +} + +.section-subtitle { + font-size: 1.125rem; + color: var(--text-secondary); +} + +.faq-grid { + max-width: 800px; + margin: 0 auto; +} + +.faq-item { + border-bottom: 1px solid var(--border); +} + +.faq-question { + width: 100%; + padding: 1.5rem 0; + background: none; + border: none; + text-align: left; + font-size: 1.125rem; + font-weight: 600; + color: var(--text-primary); + cursor: pointer; + display: flex; + justify-content: space-between; + align-items: center; + transition: color 0.3s ease; +} + +.faq-question:hover { + color: var(--primary-color); +} + +.faq-icon { + font-size: 1.5rem; + font-weight: 300; + transition: transform 0.3s ease; +} + +.faq-question.active .faq-icon { + transform: rotate(45deg); +} + +.faq-answer { + max-height: 0; + overflow: hidden; + transition: max-height 0.3s ease; +} + +.faq-answer.active { + max-height: 200px; +} + +.faq-answer p { + padding: 0 0 1.5rem 0; + color: var(--text-secondary); + line-height: 1.6; +} + +/* Footer */ +.footer { + background: var(--text-primary); + color: white; + padding: 4rem 0 2rem; +} + +.footer-content { + display: grid; + grid-template-columns: 2fr 1fr 1fr 1fr; + gap: 3rem; + margin-bottom: 3rem; +} + +.footer-logo { + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 1rem; +} + +.footer-section h4 { + font-weight: 600; + margin-bottom: 1rem; +} + +.footer-section ul { + list-style: none; +} + +.footer-section ul li { + margin-bottom: 0.5rem; +} + +.footer-section ul li a { + color: rgba(255, 255, 255, 0.8); + text-decoration: none; + transition: color 0.3s ease; +} + +.footer-section ul li a:hover { + color: white; +} + +.footer-bottom { + display: flex; + justify-content: space-between; + align-items: center; + padding-top: 2rem; + border-top: 1px solid rgba(255, 255, 255, 0.1); +} + +.footer-links { + display: flex; + gap: 2rem; +} + +.footer-links a { + color: rgba(255, 255, 255, 0.8); + text-decoration: none; + transition: color 0.3s ease; +} + +.footer-links a:hover { + color: white; +} + +/* Toast */ +.toast { + position: fixed; + top: 2rem; + right: 2rem; + background: var(--success); + color: white; + padding: 1rem 1.5rem; + border-radius: 0.5rem; + box-shadow: var(--shadow-lg); + transform: translateX(100%); + transition: transform 0.3s ease; + z-index: 1000; +} + +.toast.show { + transform: translateX(0); +} + +.toast-content { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.toast-icon { + font-size: 1.25rem; +} + +/* Responsive Design */ +@media (max-width: 768px) { + .nav-menu { + display: none; + } + + .hero-title { + font-size: 2.5rem; + } + + .contact-grid { + grid-template-columns: 1fr; + } + + .contact-layout { + grid-template-columns: 1fr; + gap: 2rem; + } + + .form-row { + grid-template-columns: 1fr; + } + + .radio-group { + flex-direction: column; + gap: 1rem; + } + + .footer-content { + grid-template-columns: 1fr; + text-align: center; + } + + .footer-bottom { + flex-direction: column; + gap: 1rem; + text-align: center; + } +} + +@media (max-width: 480px) { + .container { + padding: 0 1rem; + } + + .hero { + padding: 6rem 0 3rem; + } + + .hero-title { + font-size: 2rem; + } + + .contact-form-container { + padding: 1.5rem; + } + + .section-title { + font-size: 2rem; + } + + .toast { + top: 1rem; + right: 1rem; + left: 1rem; + } +} |