f5276431ea
Visitors can ask questions about the CV via a floating chat panel. The agent uses Gemini to answer questions about experience, projects, skills, and education by querying the cached CV JSON data. - internal/chat/agent.go: LLM agent with query_cv tool that searches CV data by section (experience, projects, skills, etc.) with keyword filtering - internal/chat/handler.go: POST /api/chat endpoint with session management, graceful degradation when GOOGLE_API_KEY is not set - chat-widget.html: HTMX-powered floating chat panel with Hyperscript toggle - _chat.css: Responsive chat UI with dark theme support - Wired into existing architecture via dependency injection (CVHandler, routes, main.go) — zero breaking changes, all existing tests pass
48 lines
1.6 KiB
CSS
48 lines
1.6 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';
|
|
@import './04-interactive/_sprites.css';
|
|
@import './04-interactive/_chat.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" */
|