Skip to content

Commit 32f2b6a

Browse files
jmacotclaude
andcommitted
feat: rediseño landing page — Bento Grid layout con mesh gradient animado
Reemplaza la grid plana de cards iguales por un layout Bento con jerarquía visual: hero card (Plantillas COT), medium card (Planning), 4 small cards y 2 compact cards. Header compacto con stats inline. Fondo con 5 orbs de color animados (mesh gradient CSS) y dot grid sutil. Eliminados filtros, búsqueda y placeholder card. JS simplificado a solo theme toggle. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 53f52c5 commit 32f2b6a

2 files changed

Lines changed: 681 additions & 605 deletions

File tree

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
# Landing Page Redesign — Bento Grid
2+
3+
## Context
4+
5+
The current landing page at `jmacot.github.io` uses a flat grid of equal-sized cards for 8 clinical tools. All cards have identical visual weight, which doesn't reflect actual usage patterns — Plantillas COT is opened daily while CPAK Planner is used rarely. The header is decorative but not functional. Filters and search exist but are overkill for 8 apps. The user (an orthopedic surgeon) opens this page on their phone between surgeries and needs speed over visual showiness.
6+
7+
**Goal:** Replace the flat grid with a Bento Grid layout that creates visual hierarchy, removes unnecessary UI (filters, search, placeholder card), and surfaces key stats in a compact header. The page should feel premium but practical, and scale cleanly to 12+ apps in the future.
8+
9+
**Mockup reference:** `.superpowers/brainstorm/10010-1775253131/content/bento-refined.html`
10+
11+
---
12+
13+
## Design Decisions (validated with user)
14+
15+
| Decision | Choice |
16+
|----------|--------|
17+
| Layout | Bento Grid (option A) |
18+
| Filters + search | Remove both — not needed for 8 apps |
19+
| Placeholder card ("Proximamente") | Remove |
20+
| Category tag pills on cards | Remove — no tags on any card |
21+
| Hero card | Plantillas COT (with arrow CTA) |
22+
| Medium card (beside hero) | Analizador de Planning |
23+
| Arrow indicator | Only on hero card |
24+
| Sky toggle | Keep, positioned top-right of header |
25+
| Dark mode | Keep, same variable overrides as current |
26+
27+
---
28+
29+
## Layout Structure
30+
31+
```
32+
HEADER (compact)
33+
├── Brand: "Suite COT" (gradient) + badge + sky toggle
34+
└── Stats row: 60+ Plantillas | 170+ Consentimientos | 64 Protocolos | 8 Apps
35+
36+
BENTO GRID (3 tiers)
37+
├── Row 1: [Hero: Plantillas COT] [Medium: Analizador de Planning]
38+
├── Row 2: [Small: Rehabilitacion] [Small: Knee Align] [Small: CPAK] [Small: Calc. Guardias]
39+
└── Row 3: [Compact: Material Externo] [Compact: Consentimientos Informados]
40+
41+
FOOTER
42+
└── github.com/jmacot · Herramientas de uso clinico · 2024-2026
43+
```
44+
45+
### Card tier details
46+
47+
| Tier | Cards | Size | Content |
48+
|------|-------|------|---------|
49+
| Hero | Plantillas COT | 1 col, tall | Gradient bg, title, description, stat badge, arrow CTA |
50+
| Medium | Analizador de Planning | 1 col, same row as hero | White/surface bg, title, description, stat badge |
51+
| Small | Rehabilitacion, Knee Align, CPAK Planner, Calc. Guardias | 4-col row | Icon + title + short description, centered |
52+
| Compact | Material Externo, Consentimientos Informados | 2-col row | Icon left + title/description right, horizontal |
53+
54+
### Adding new apps (scalability)
55+
56+
- New app with low usage → add as small card (row 2 becomes 5-col, or overflow to new row)
57+
- New app with high usage → promote to compact or medium tier
58+
- When reaching 12+ apps → consider re-adding search (not filters)
59+
- The grid auto-adjusts: `small-row` uses `repeat(auto-fill, minmax(X, 1fr))` for flexibility
60+
61+
---
62+
63+
## Header
64+
65+
- **Background:** `#0f172a` (same as current), dot grid overlay, 2 glow orbs (sky blue + violet)
66+
- **Brand:** `h1` with "Suite" in white + "COT" in gradient (`linear-gradient(135deg, #38bdf8, #818cf8)`)
67+
- **Badge:** `jmacot.github.io` with green dot, DM Mono 9px, pill shape
68+
- **Sky toggle:** absolute positioned top-right, same implementation as current
69+
- **Stats row:** 4 stats (60+ / 170+ / 64 / 8), DM Serif Display values, DM Mono labels, separated by 1px dividers
70+
- **Dark mode header:** `linear-gradient(135deg, #152238 0%, #1c2f4a 50%, #213656 100%)` per CLAUDE.md
71+
72+
---
73+
74+
## Card Styles
75+
76+
### Shared base (`.cell`)
77+
- `background: var(--surface)`, `border: 1px solid var(--border)`, `border-radius: 16px`
78+
- Hover: `translateY(-3px)` + `var(--shadow-hover)`
79+
- Top accent bar: 3px height with `var(--accent)` color (hero excluded)
80+
- Links (`<a>`) with `text-decoration: none; color: inherit`
81+
82+
### Hero card (`.cell-hero`)
83+
- `background: linear-gradient(135deg, #0c4a6e 0%, #0369a1 50%, #0284c7 100%)`
84+
- White text, radial glow `::after`
85+
- Arrow: 36px circle, `rgba(255,255,255,0.12)`, top-right absolute
86+
- On hover: arrow shifts right 2px, bg brightens
87+
- Dark mode: darker gradient `#0c3553 → #0c4a6e → #075985`
88+
- No top accent bar, no category tag
89+
90+
### Medium card (`.cell-medium`)
91+
- Standard surface bg, larger h2 (1.2rem)
92+
- Flex column, content justified to bottom
93+
- Stat badge in accent color
94+
95+
### Small card (`.cell-small`)
96+
- Centered layout, 38x38px icon with category bg
97+
- h2 at 0.8rem, p at 9px
98+
- No top accent bar
99+
- On mobile: 2-col grid (from 4-col)
100+
101+
### Compact card (`.cell-compact`)
102+
- Horizontal: icon left (36x36), text right
103+
- h2 at 0.82rem, p at 9px
104+
- No top accent bar
105+
- On mobile: 1-col stack
106+
107+
---
108+
109+
## Card Order and URLs
110+
111+
| Position | Tool | URL | Icon color |
112+
|----------|------|-----|-----------|
113+
| Hero | Plantillas COT | `jmacot.github.io/plantillas-qx` | white (on gradient) |
114+
| Medium | Analizador de Planning | `jmacot.github.io/planning-cot` | `--c-administracion` |
115+
| Small 1 | Protocolos y Ejercicios | `jmacot.github.io/rehabilitacion-cot` | `--c-pacientes` |
116+
| Small 2 | Knee Align | `jmacot.github.io/knee-align` | `--c-planificacion` |
117+
| Small 3 | CPAK Planner | `jmacot.github.io/CPAK` | `--c-planificacion` |
118+
| Small 4 | Calculadora de Guardias | `jmacot.github.io/calculadora-guardias` | `--c-administracion` |
119+
| Compact 1 | Material Externo | `jmacot.github.io/Material-Externo` | `--c-documentacion` |
120+
| Compact 2 | Consentimientos Informados | `jmacot.github.io/consentimientos` | `--c-documentacion` |
121+
122+
---
123+
124+
## What Gets Removed
125+
126+
- Filter buttons (`.filters` nav + `filtrar()` JS + `initCounts()`)
127+
- Search input (`.search-wrap` + search event listener + `normalizar()`)
128+
- Placeholder card ("Proximamente")
129+
- Category tag pills (`.card-tag`) from all cards
130+
- Header badge inside header (replaced by inline badge next to brand)
131+
- `header-inner` wrapper (replaced by `header-top` + `header-stats`)
132+
- Old card structure (`.card-meta`, `.card-content`, `.card-icon`, `.card-arrow` on all cards)
133+
134+
## What Gets Kept
135+
136+
- CSS variables (both light and dark)
137+
- Category color system (`--c-quirofano`, etc.)
138+
- Sky toggle (HTML + CSS + JS)
139+
- Dark mode JS (`applyTheme`, `getAutoTheme`, `initTheme`, localStorage)
140+
- Skip link + `#main` target
141+
- `@media (prefers-reduced-motion: reduce)`
142+
- `:focus-visible` styles
143+
- `fadeInUp` animation (staggered per card tier)
144+
- Footer (simplified text)
145+
- Open Graph + meta tags
146+
- Fonts (DM Sans / DM Serif Display / DM Mono)
147+
- Localhost link disable pattern
148+
149+
---
150+
151+
## Responsive (mobile < 600px)
152+
153+
- Header: reduce padding, hide glows, smaller stat text
154+
- Hero card: `grid-column: 1 / -1` (full width), reduced min-height
155+
- Medium card: `grid-column: 1 / -1` (full width)
156+
- Small row: 2 columns (from 4)
157+
- Compact row: 1 column (from 2)
158+
- Sky toggle: `--toggle-size: 18px`
159+
160+
---
161+
162+
## Animations
163+
164+
- Header: `fadeInUp 0.5s ease-out`
165+
- Hero: `fadeInUp 0.5s ease-out 0.05s both`
166+
- Medium: `fadeInUp 0.5s ease-out 0.1s both`
167+
- Small cards: staggered 0.15s → 0.3s
168+
- Compact cards: staggered 0.35s → 0.4s
169+
- All disabled by `prefers-reduced-motion`
170+
171+
---
172+
173+
## Accessibility
174+
175+
- Skip link preserved (`<a href="#main" class="skip-link">`)
176+
- All cards are `<a>` tags (keyboard navigable)
177+
- `:focus-visible` outline on all cells
178+
- Sky toggle: `aria-label="Cambiar modo claro/oscuro"`
179+
- `role` attributes not needed (native `<a>` semantics sufficient)
180+
- Color contrast: all text meets WCAG AA on both themes
181+
182+
---
183+
184+
## Footer
185+
186+
Single line, DM Mono 10px:
187+
```
188+
github.com/jmacot · Herramientas de uso clinico · 2024-2026
189+
```
190+
191+
---
192+
193+
## File Modified
194+
195+
- `/Users/jma/Documents/Proyectos/COT/jmacot.github.io/index.html` — single file, complete rewrite of HTML structure and CSS, JS simplified (remove filter/search, keep theme)
196+
197+
---
198+
199+
## Verification
200+
201+
1. Open `index.html` via local server — verify all 8 cards render in correct positions
202+
2. Click each card — verify correct URL opens
203+
3. Toggle sky toggle — verify dark mode applies correctly to all card tiers
204+
4. Resize to mobile (< 600px) — verify grid collapses: hero full-width, small 2-col, compact 1-col
205+
5. Test on iOS Safari (real device or simulator) — verify touch targets and no overflow
206+
6. Tab through all cards — verify focus-visible outlines
207+
7. Enable reduced-motion in OS — verify no animations
208+
8. Verify hover states on desktop: hero arrow shifts, all cards lift

0 commit comments

Comments
 (0)