58c1237326
- Add contact form dialog with HTMX integration (hx-post) - Implement browser-only access middleware (blocks curl/Postman/wget) - Add rate limiting (5 requests/hour per IP) for contact endpoint - Implement honeypot and timing-based bot detection - Add input validation (email format, message length 10-5000 chars) - Create contact button in desktop and mobile navigation (last position) Security features: - Browser-only middleware validates User-Agent, Referer/Origin, HX-Request headers - Honeypot field returns fake success to fool bots while logging spam - Timing validation rejects forms submitted < 2 seconds - All security events logged for monitoring Documentation: - docs/SECURITY.md - Comprehensive security documentation - docs/HACK-CHALLENGE.md - "Try to Hack Me!" challenge for security researchers - docs/SECURITY-AUDIT-REPORT.md - Full security audit report - docs/CONTACT-FORM-QUICKSTART.md - Integration guide Form fields: email (required), name, company, subject, message (required)
46 lines
1.5 KiB
CSS
46 lines
1.5 KiB
CSS
/* ============================================================================
|
|
MAIN.CSS - Entry Point (New Modular Structure)
|
|
============================================================================ */
|
|
|
|
/* 01 - Foundation */
|
|
@import './01-foundation/_reset.css';
|
|
@import './01-foundation/_variables.css';
|
|
@import './01-foundation/_typography.css';
|
|
@import './01-foundation/_themes.css';
|
|
|
|
/* 02 - Layout */
|
|
@import './02-layout/_container.css';
|
|
@import './02-layout/_page.css';
|
|
@import './02-layout/_grid.css';
|
|
@import './02-layout/_paper.css';
|
|
|
|
/* 03 - Components */
|
|
@import './03-components/_action-bar.css';
|
|
@import './03-components/_sidebar.css';
|
|
@import './03-components/_cv-header.css';
|
|
@import './03-components/_cv-section.css';
|
|
@import './03-components/_experience.css';
|
|
@import './03-components/_projects.css';
|
|
@import './03-components/_courses.css';
|
|
@import './03-components/_education.css';
|
|
@import './03-components/_languages.css';
|
|
|
|
/* 04 - Interactive */
|
|
@import './04-interactive/_toggles.css';
|
|
@import './04-interactive/_tooltips.css';
|
|
@import './04-interactive/_navigation.css';
|
|
@import './04-interactive/_scroll-behavior.css';
|
|
@import './04-interactive/_buttons.css';
|
|
@import './04-interactive/_modals.css';
|
|
@import './04-interactive/_toasts.css';
|
|
@import './04-interactive/_zoom-control.css';
|
|
@import './04-interactive/_contact-form.css';
|
|
|
|
/* 05 - Responsive */
|
|
@import './05-responsive/_breakpoints.css';
|
|
|
|
/* 06 - Effects */
|
|
@import './06-effects/_skeleton.css';
|
|
|
|
/* NOTE: print.css is loaded separately in HTML with media="print" */
|