diff --git a/recruitment/templatetags/brand_logo.py b/recruitment/templatetags/brand_logo.py
new file mode 100644
index 0000000..5270201
--- /dev/null
+++ b/recruitment/templatetags/brand_logo.py
@@ -0,0 +1,25 @@
+from django import template
+from django.utils.safestring import mark_safe
+import uuid
+
+register=template.Library()
+
+@register.inclusion_tag('logo/ats_logo.html')
+def ats_tenhal_logo(height="140", extra_classes=""):
+ """
+ Renders the Tenhal Logo.
+ The width is automatically calculated based on the 500:140 aspect ratio.
+ """
+ # Calculate width based on original aspect ratio (approx 3.57)
+ try:
+ width = int(float(height) * (500 / 140))
+ except ValueError:
+ width = "auto"
+
+ return {
+ 'height': height,
+ 'width': width,
+ 'classes': extra_classes,
+ # We generate a unique ID so gradients don't break if the logo is used twice on one page
+ 'uid': uuid.uuid4().hex[:6]
+ }
\ No newline at end of file
diff --git a/recruitment/templatetags/logo_tags.py b/recruitment/templatetags/logo_tags.py
new file mode 100644
index 0000000..a9cd5d8
--- /dev/null
+++ b/recruitment/templatetags/logo_tags.py
@@ -0,0 +1,142 @@
+from django import template
+from django.utils.safestring import mark_safe
+
+register = template.Library()
+
+@register.simple_tag
+def logo_tenhal_ats(height="40", width=None):
+ """
+ Renders the Tenhal ATS logo SVG.
+ Usage: {% logo_tenhal_ats height="40" %}
+ """
+ # Calculate width proportionally if not provided
+ if width is None:
+ width = str(int(float(height) * 3.57)) # Aspect ratio of 500/140
+
+ svg = f'''
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TENHAL
+
+
+
+ APPLICANT TRACKING SYSTEM
+
+ '''
+
+ return mark_safe(svg)
+
+@register.simple_tag
+def logo_ats(height="40", width=None):
+ """
+ Renders the Tenhal ATS logo SVG.
+ Usage: {% logo_tenhal_ats height="40" %}
+ """
+ # Calculate width proportionally if not provided
+ if width is None:
+ width = height # Aspect ratio of 500/140
+
+ svg = f'''
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ '''
+
+ return mark_safe(svg)
\ No newline at end of file
diff --git a/recruitment/urls.py b/recruitment/urls.py
index d1f5821..45a9159 100644
--- a/recruitment/urls.py
+++ b/recruitment/urls.py
@@ -25,7 +25,8 @@ urlpatterns = [
# Job-specific Views
path("jobs//applicants/", views.job_applicants_view, name="job_applicants"),
path("jobs//applications/", views.JobApplicationListView.as_view(), name="job_applications_list"),
- path("jobs//calendar/", views.interview_calendar_view, name="interview_calendar"),
+ path
+ ("jobs//calendar/", views.interview_calendar_view, name="interview_calendar"),
# Job Actions & Integrations
path("jobs//post-to-linkedin/", views.post_to_linkedin, name="post_to_linkedin"),
diff --git a/templates/TEMPLATE_TAILWIND_CONVERSION_SUMMARY.md b/templates/TEMPLATE_TAILWIND_CONVERSION_SUMMARY.md
new file mode 100644
index 0000000..d3ecbf8
--- /dev/null
+++ b/templates/TEMPLATE_TAILWIND_CONVERSION_SUMMARY.md
@@ -0,0 +1,310 @@
+# Template Tailwind CSS Conversion Summary
+
+## Objective
+Convert all templates to match the base.html theme and use only Tailwind CSS instead of Bootstrap.
+
+## Base Theme Configuration
+- **Primary Color**: Temple Red (#9d2235) and hover (#7a1a29)
+- **Background Colors**: White (#ffffff), Light Gray (#f9fafb)
+- **Border Colors**: Gray-200 (#e5e7eb)
+- **Text Colors**: Gray-900 (#111827), Gray-700 (#374151), Gray-600 (#4b5563)
+- **Icons**: Lucide Icons
+- **Components**:
+ - Cards: `bg-white rounded-2xl shadow-sm border border-gray-200`
+ - Buttons Primary: `bg-temple-red hover:bg-[#7a1a29] text-white font-semibold px-4 py-2.5 rounded-xl`
+ - Buttons Secondary: `border border-gray-300 text-gray-700 hover:bg-gray-50 font-medium px-4 py-2 rounded-xl`
+ - Inputs: `w-full px-4 py-2.5 border border-gray-300 rounded-lg focus:ring-2 focus:ring-temple-red focus:border-transparent`
+
+## Completed Templates ✓
+
+### Includes Directory (ALL COMPLETED ✓)
+- [x] delete_modal.html
+- [x] edit_comment_form.html
+- [x] delete_comment_form.html
+- [x] comment_form.html
+- [x] comment_list.html
+- [x] meeting_form.html
+- [x] _list_view_switcher.html
+- [x] language_options.html
+- [x] search_form.html
+- [x] easy_logs.html
+- [x] paginator.html
+- [x] application_exam_status_form.html
+- [x] application_modal_body.html
+- [x] applications_update_exam_form.html
+- [x] applications_update_interview_form.html
+- [x] applications_update_offer_form.html
+- [x] candidate_resume_template.html
+- [x] copy_to_clipboard.html
+- [x] schedule_interview_div.html
+
+### Recruitment Directory
+- [x] application_delete.html
+- [x] candidate_delete.html
+- [x] agency_access_link_confirm.html
+- [x] notification_confirm_all_read.html
+- [x] notification_confirm_delete.html
+- [x] agency_access_link_detail.html
+- [x] agency_portal_assignment_detail.html
+- [x] applicant_signup.html
+- [x] agency_portal_persons_list.html
+- [x] interview_calendar.html
+- [x] source_form.html
+
+### Recruitment/Partials Directory
+- [x] stage_update_modal.html
+- [x] note_form.html
+- [x] note_modal.html
+- [x] stage_confirmation_modal.html
+
+## Templates Requiring Conversion
+
+### Recruitment Directory
+- [ ] agency_form.html
+- [ ] agency_detail.html
+- [ ] agency_portal_login.html
+- [ ] agency_portal_dashboard.html
+- [ ] agency_list.html
+- [ ] agency_assignment_list.html
+- [ ] settings_form.html
+- [ ] settings_list.html
+- [ ] settings_detail.html
+- [ ] application_detail.html
+- [ ] applications_list.html
+- [ ] applicant_profile.html
+- [ ] dashboard.html
+
+### Recruitment/Partials Directory
+- [ ] _candidate_table.html
+- [ ] _guage_chart.html
+- [ ] ai_overview_breadcromb.html
+- [ ] error.html
+- [ ] exam-results.html
+- [ ] interview-results.html
+- [ ] offer-results.html
+- [ ] stage_display.html
+- [ ] stage_update_form.html
+- [ ] stage_update_success.html
+- [ ] stats_cards.html
+
+### Jobs Directory
+- [ ] job_list.html
+- [ ] job_detail.html
+- [ ] create_job.html
+- [ ] edit_job.html
+- [ ] job_applicants.html
+- [ ] applicants_of_stage.html
+- [ ] apply_form.html
+- [ ] application_success.html
+- [ ] job_bank.html
+- [ ] job_applications_list.html
+
+### Jobs/Partials Directory
+- [ ] delete_modal.html
+- [ ] applicant_tracking.html
+- [ ] image_upload.html
+- [ ] linkedin_content_form.html
+
+### Account Directory
+- [ ] login.html
+- [ ] logout.html
+- [ ] account_inactive.html
+- [ ] password_reset.html
+- [ ] password_reset_done.html
+- [ ] password_reset_from_key.html
+- [ ] password_reset_from_key_done.html
+- [ ] password_change.html
+- [ ] email_confirm.html
+- [ ] email.html
+- [ ] verification_sent.html
+- [ ] email/email_confirmation_message.html
+- [ ] email/password_reset_key_message.html
+
+### Interviews Directory
+- [ ] interview_list.html
+- [ ] interview_detail.html
+- [ ] interview_create_type_selection.html
+- [ ] interview_create_onsite.html
+- [ ] interview_create_remote.html
+- [ ] interview_participants_form.html
+- [ ] onsite_location_form.html
+- [ ] preview_schedule.html
+- [ ] schedule_interviews.html
+
+### Interviews/Partials Directory
+- [ ] ai_questions_list.html
+- [ ] interview_list.html
+
+### Interviews/Email Directory
+- [ ] interview_invitation.html
+
+### People Directory
+- [ ] person_list.html
+- [ ] person_detail.html
+- [ ] create_person.html
+- [ ] update_person.html
+- [ ] delete_person.html
+- [ ] person_confirm_delete.html
+
+### Messages Directory
+- [ ] message_list.html
+- [ ] message_detail.html
+- [ ] message_form.html
+- [ ] application_message_list.html
+- [ ] application_message_detail.html
+- [ ] application_message_form.html
+
+### Meetings Directory
+- [ ] list_meetings.html
+- [ ] meeting_details.html
+- [ ] create_meeting.html
+- [ ] update_meeting.html
+- [ ] delete_meeting_form.html
+- [ ] create_remote_meeting.html
+- [ ] reschedule_meeting.html
+- [ ] reschedule_onsite_meeting.html
+- [ ] schedule_meeting_form.html
+- [ ] schedule_onsite_meeting_form.html
+
+### User Directory
+- [ ] profile.html
+- [ ] settings.html
+- [ ] admin_settings.html
+- [ ] portal_profile.html
+- [ ] staff_password_create.html
+- [ ] create_staff.html
+
+### Applicant Directory
+- [ ] career.html
+- [ ] job_application_detail.html
+- [ ] application_submit_form.html
+
+### Applicant/Partials Directory
+- [ ] candidate_facing_base.html
+
+### Forms Directory
+- [ ] form_list.html
+- [ ] form_templates_list.html
+- [ ] create_form_template.html
+- [ ] edit_form.html
+- [ ] form_builder.html
+- [ ] form_embed.html
+- [ ] form_preview.html
+- [ ] form_template_submissions_list.html
+- [ ] form_template_all_submissions.html
+- [ ] form_submission_details.html
+- [ ] document_form.html
+
+## Conversion Guidelines
+
+### Key Changes Made:
+1. **Removed Bootstrap classes** (e.g., `btn btn-primary`, `card`, `form-control`)
+2. **Added Tailwind CSS classes** with custom color scheme
+3. **Replaced Bootstrap icons** with Lucide Icons
+4. **Standardized component styling** using:
+ - `bg-temple-red` for primary actions
+ - `rounded-2xl` for cards
+ - `shadow-sm` for subtle depth
+ - Consistent padding and spacing
+
+### Common Patterns:
+
+#### Buttons
+```html
+
+
+ Button Text
+
+
+
+
+ Button Text
+
+```
+
+#### Cards
+```html
+
+```
+
+#### Forms
+```html
+
+
+ Label Text *
+
+
+
+```
+
+#### Alerts/Notifications
+```html
+
+
+ Success Message
+
+
+
+
+ Error Message
+
+
+
+
+ Warning Message
+
+
+
+
+ Info Message
+
+```
+
+#### Modals
+```html
+
+```
+
+#### Badges
+```html
+
+ Badge Text
+
+```
+
+## Status Summary
+
+- **Total Templates**: ~150+
+- **Completed**: ~25
+- **Remaining**: ~125+
+- **Completion**: ~17%
+
+## Next Steps
+
+1. Continue converting remaining templates in recruitment directory
+2. Convert all templates in jobs directory
+3. Convert all templates in account directory
+4. Convert all templates in interviews directory
+5. Convert all templates in other directories
+6. Remove Bootstrap CDN links from base.html once all templates are converted
+7. Test all templates for consistency and functionality
+
+## Notes
+
+- All converted templates use Lucide Icons instead of Font Awesome or Bootstrap icons
+- Custom Tailwind config needed for `bg-temple-red` color (should be added to tailwind.config.js)
+- Modal interactions now use JavaScript instead of Bootstrap's data attributes
+- All forms use consistent styling and validation states
+- Responsive design is maintained through Tailwind's responsive prefixes (sm:, md:, lg:, etc.)
\ No newline at end of file
diff --git a/templates/account/login.html b/templates/account/login.html
index 0469aa7..122f13f 100644
--- a/templates/account/login.html
+++ b/templates/account/login.html
@@ -145,4 +145,4 @@
lucide.createIcons();