Files
alina-website/IMPLEMENTATION.md
2026-02-05 18:09:28 +03:00

44 lines
1.8 KiB
Markdown

# Implementation Summary
## Tech Stack
- **Vite 6** + Vanilla HTML/CSS/JS (no framework)
- **Archivo** (Google Fonts, expanded width, weight 900) for headlines
- **Inter** (Google Fonts, weight 400) for body text
## Project Structure
```
├── index.html # Single page with all 5 screens
├── package.json
├── vite.config.js
├── public/
├── src/
│ ├── main.js # Scroll reveal, smooth scroll, header scroll
│ ├── style.css # Master @import file
│ ├── css/
│ │ ├── reset.css # Modern CSS reset
│ │ ├── tokens.css # Design tokens (colors, type, spacing, grid)
│ │ ├── base.css # Typography classes (.h1, .h2, .h3)
│ │ ├── grid.css # 12-col grid + utilities
│ │ ├── components.css # Buttons, annotations, hairlines
│ │ ├── header.css # Sticky header
│ │ ├── hero.css # Screen 1
│ │ ├── manifest.css # Screen 2
│ │ ├── journal.css # Screen 3
│ │ ├── cases.css # Screen 4
│ │ ├── services.css # Screen 5 (accordion)
│ │ ├── footer.css
│ │ └── animations.css # Scroll-driven + IntersectionObserver fallback
│ └── assets/
```
## Running
- `npm run dev` — development server with HMR
- `npm run build` — production build to `dist/`
- `npm run preview` — preview production build
## Design Decisions
- Native `<details name="accordion">` for one-at-a-time accordion (zero JS)
- CSS `animation-timeline: view()` with IntersectionObserver fallback
- Colored placeholder blocks instead of images (swap with `<img>` later)
- BEM-lite class naming