|
| 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