diff --git a/public/css/workflow.css b/public/css/workflow.css index 0f5704a90..8b60653fe 100644 --- a/public/css/workflow.css +++ b/public/css/workflow.css @@ -3654,3 +3654,109 @@ font-size: 12px; margin-top: 6px; } + +/* ============================================ + ANTIDOTE — visual-first wall of three + ============================================ */ + +.antidote-content .section-lead { + max-width: 54ch; + margin-bottom: var(--spacing-xl); +} + +.antidote-wall { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--spacing-lg); + margin-bottom: var(--spacing-xl); +} + +.antidote-wall-card { + display: flex; + flex-direction: column; + gap: var(--spacing-sm); + text-decoration: none; + color: inherit; + transition: transform 260ms var(--ease-out); +} + +.antidote-wall-card:hover { + transform: translateY(-4px); +} + +.antidote-wall-image { + aspect-ratio: 4 / 3; + overflow: hidden; + border-radius: 8px; + background: var(--color-paper); + border: 1px solid var(--color-mist); + box-shadow: 0 12px 32px oklch(0% 0 0 / 0.08); + transition: box-shadow 260ms var(--ease-out); +} + +.antidote-wall-card:hover .antidote-wall-image { + box-shadow: 0 20px 40px oklch(0% 0 0 / 0.14), 0 0 0 1px var(--color-accent-soft); +} + +.antidote-wall-image img { + width: 100%; + height: 100%; + object-fit: cover; + object-position: center top; + display: block; +} + +.antidote-wall-caption { + display: flex; + align-items: baseline; + gap: var(--spacing-sm); + padding: 0 2px; +} + +.antidote-wall-num { + font-family: var(--font-mono); + font-size: 0.6875rem; + letter-spacing: 0.22em; + text-transform: uppercase; + color: var(--color-accent); +} + +.antidote-wall-label { + font-family: var(--font-display); + font-style: italic; + font-weight: 400; + font-size: 1.375rem; + line-height: 1.1; + color: var(--color-ink); + letter-spacing: -0.01em; +} + +.antidote-foot { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: var(--spacing-lg); + padding-top: var(--spacing-md); + border-top: 1px solid var(--color-mist); + flex-wrap: wrap; +} + +.antidote-foot-meta { + font-family: var(--font-mono); + font-size: 0.6875rem; + letter-spacing: 0.16em; + text-transform: uppercase; + color: var(--color-ash); +} + +@media (max-width: 820px) { + .antidote-wall { + grid-template-columns: 1fr; + gap: var(--spacing-md); + } + .antidote-foot { + flex-direction: column; + align-items: flex-start; + gap: var(--spacing-sm); + } +} diff --git a/public/index.html b/public/index.html index 14bab12a9..46e30c996 100644 --- a/public/index.html +++ b/public/index.html @@ -244,61 +244,41 @@
Every AI model learned from the same templates. Most design skills list a handful of don'ts in a document and hope the model remembers. Impeccable names 25 of them, catalogues them, and actively detects them, on your code and in your browser.
+25 named anti-patterns, detected on your code and in your browser. These are three of them.
-/impeccable critique layers an LLM semantic pass on top for the things patterns can't see.impeccable detect CLI gates your PRs. The Chrome extension flags issues on any page. The overlay lives inside /impeccable critique during AI design review.