mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-12 14:16:28 +03:00
- Remove overpromising "transform into impeccable design" claim - Tone down marketing language throughout (design intelligence, level up, etc.) - Change "our" to "the" for neutral voice - Combine Support and Consulting into single "Work with me" section - Fix double-border on command demo panel (match border-radius) - Remove border-top from demo captions Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
964 lines
23 KiB
CSS
964 lines
23 KiB
CSS
/**
|
|
* Skill Demos - Interactive before/after demonstrations
|
|
* Renaissance Edition
|
|
*/
|
|
|
|
/* ============================================
|
|
TABBED CONTAINER
|
|
============================================ */
|
|
|
|
.demo-tabbed-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.demo-tabs {
|
|
display: flex;
|
|
gap: 0;
|
|
margin-bottom: 0;
|
|
justify-content: center;
|
|
background: var(--color-paper);
|
|
border-bottom: 1px solid var(--color-mist);
|
|
}
|
|
|
|
.demo-tab {
|
|
padding: var(--spacing-sm) var(--spacing-lg);
|
|
background: transparent;
|
|
border: none;
|
|
border-bottom: 2px solid transparent;
|
|
font-family: var(--font-mono);
|
|
font-size: 0.75rem;
|
|
font-weight: 500;
|
|
letter-spacing: 0.05em;
|
|
text-transform: uppercase;
|
|
color: var(--color-ash);
|
|
cursor: pointer;
|
|
transition: all var(--duration-fast) var(--ease-out);
|
|
}
|
|
|
|
.demo-tab:hover {
|
|
color: var(--color-text);
|
|
background: var(--color-cream);
|
|
}
|
|
|
|
.demo-tab.active {
|
|
color: var(--color-accent);
|
|
border-bottom-color: var(--color-accent);
|
|
background: var(--color-accent-dim);
|
|
}
|
|
|
|
.demo-panels {
|
|
flex: 1;
|
|
}
|
|
|
|
.demo-panel {
|
|
display: none;
|
|
}
|
|
|
|
.demo-panel.active {
|
|
display: block;
|
|
animation: fadeSlideIn 0.3s var(--ease-out);
|
|
}
|
|
|
|
@keyframes fadeSlideIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(10px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
/* ============================================
|
|
DEMO CONTAINER
|
|
============================================ */
|
|
|
|
.demo-container {
|
|
background: var(--color-paper);
|
|
border: none;
|
|
border-radius: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.demo-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: var(--spacing-sm) var(--spacing-md);
|
|
background: var(--color-paper);
|
|
border-bottom: 1px solid var(--color-mist);
|
|
min-height: 48px;
|
|
}
|
|
|
|
.demo-toggle {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--spacing-md);
|
|
}
|
|
|
|
.demo-toggle-label {
|
|
font-family: var(--font-mono);
|
|
font-size: 0.6875rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
color: var(--color-ash);
|
|
transition: color var(--duration-fast) var(--ease-out);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.demo-toggle-label:hover {
|
|
color: var(--color-text);
|
|
}
|
|
|
|
.demo-toggle-label.active {
|
|
color: var(--color-accent);
|
|
}
|
|
|
|
.demo-toggle-switch {
|
|
position: relative;
|
|
width: 44px;
|
|
height: 24px;
|
|
background: var(--color-mist);
|
|
border-radius: 12px;
|
|
cursor: pointer;
|
|
transition: background var(--duration-fast) var(--ease-out);
|
|
border: 1px solid transparent;
|
|
padding: 0;
|
|
font: inherit;
|
|
}
|
|
|
|
.demo-toggle-switch:focus-visible {
|
|
outline: 2px solid var(--color-accent);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.demo-toggle-switch:hover {
|
|
border-color: var(--color-ash);
|
|
}
|
|
|
|
.demo-toggle-switch::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: 3px;
|
|
left: 3px;
|
|
width: 16px;
|
|
height: 16px;
|
|
background: var(--color-paper);
|
|
border-radius: 50%;
|
|
box-shadow: 0 1px 4px rgba(0,0,0,0.15);
|
|
transition: transform var(--duration-base) var(--ease-spring);
|
|
}
|
|
|
|
.demo-toggle-switch.active {
|
|
background: var(--color-accent);
|
|
}
|
|
|
|
.demo-toggle-switch.active::after {
|
|
transform: translateX(20px);
|
|
}
|
|
|
|
.demo-viewport {
|
|
padding: var(--spacing-xl);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 280px;
|
|
background: var(--color-cream);
|
|
transition: background var(--duration-base) var(--ease-out);
|
|
}
|
|
|
|
.demo-viewport[data-state="after"] {
|
|
background: var(--color-paper);
|
|
}
|
|
|
|
.demo-caption {
|
|
padding: var(--spacing-sm) var(--spacing-md);
|
|
font-family: var(--font-mono);
|
|
font-size: 0.6875rem;
|
|
letter-spacing: 0.03em;
|
|
color: var(--color-ash);
|
|
background: var(--color-paper);
|
|
text-align: center;
|
|
}
|
|
|
|
/* ============================================
|
|
UX WRITING DEMOS
|
|
============================================ */
|
|
|
|
.uxw-demo {
|
|
width: 100%;
|
|
max-width: 320px;
|
|
padding: var(--spacing-lg);
|
|
background: var(--color-paper);
|
|
border: 1px solid var(--color-mist);
|
|
border-radius: 6px;
|
|
text-align: center;
|
|
}
|
|
|
|
/* Error Messages */
|
|
.uxw-error-icon { font-size: 2rem; margin-bottom: var(--spacing-sm); }
|
|
.uxw-error-title { font-weight: 600; color: #c00; margin-bottom: var(--spacing-xs); }
|
|
.uxw-error-text { font-size: 0.875rem; color: var(--color-ash); }
|
|
.uxw-error-action { margin-top: var(--spacing-sm); font-size: 0.875rem; color: var(--color-accent); cursor: pointer; text-decoration: underline; }
|
|
|
|
.uxw-error-after .uxw-error-icon { color: var(--color-accent); }
|
|
.uxw-error-after .uxw-error-title { color: var(--color-text); }
|
|
.uxw-error-after .uxw-error-text { color: var(--color-charcoal); }
|
|
|
|
/* Button Labels */
|
|
.uxw-button-context { font-size: 0.875rem; color: var(--color-charcoal); margin-bottom: var(--spacing-md); font-weight: 500; }
|
|
.uxw-button-row { display: flex; gap: var(--spacing-sm); justify-content: center; }
|
|
.uxw-btn { padding: var(--spacing-xs) var(--spacing-md); border-radius: 4px; font-size: 0.875rem; font-weight: 500; cursor: pointer; border: none; }
|
|
.uxw-btn-primary { background: var(--color-text); color: var(--color-paper); }
|
|
.uxw-btn-secondary { background: transparent; color: var(--color-ash); border: 1px solid var(--color-mist); }
|
|
.uxw-btn-danger { background: #c00; color: white; }
|
|
|
|
/* Empty States */
|
|
.uxw-empty-icon { font-size: 2.5rem; margin-bottom: var(--spacing-sm); opacity: 0.4; }
|
|
.uxw-empty-title { font-weight: 500; color: var(--color-ash); }
|
|
.uxw-empty-text { font-size: 0.875rem; color: var(--color-charcoal); margin-top: var(--spacing-xs); }
|
|
.uxw-empty-action { margin-top: var(--spacing-md); }
|
|
|
|
.uxw-empty-after .uxw-empty-icon { opacity: 1; }
|
|
.uxw-empty-after .uxw-empty-title { color: var(--color-text); }
|
|
|
|
/* ============================================
|
|
SPATIAL DESIGN DEMOS
|
|
============================================ */
|
|
|
|
.spatial-demo {
|
|
width: 100%;
|
|
max-width: 340px;
|
|
padding: var(--spacing-md);
|
|
background: var(--color-paper);
|
|
border: 1px solid var(--color-mist);
|
|
border-radius: 6px;
|
|
}
|
|
|
|
/* Grid Systems */
|
|
.spatial-grid-before {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
}
|
|
|
|
.spatial-grid-after {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: var(--spacing-sm);
|
|
}
|
|
|
|
.spatial-card-item {
|
|
padding: var(--spacing-sm);
|
|
background: var(--color-bg);
|
|
border: 1px solid var(--color-mist);
|
|
border-radius: 4px;
|
|
font-size: 0.8125rem;
|
|
color: var(--color-charcoal);
|
|
text-align: center;
|
|
}
|
|
|
|
.spatial-grid-after .spatial-card-item {
|
|
width: auto !important;
|
|
}
|
|
|
|
/* Visual Hierarchy */
|
|
.spatial-hierarchy-before .spatial-h-title,
|
|
.spatial-hierarchy-before .spatial-h-subtitle,
|
|
.spatial-hierarchy-before .spatial-h-cta,
|
|
.spatial-hierarchy-before .spatial-h-link {
|
|
font-size: 0.9375rem;
|
|
margin-bottom: var(--spacing-xs);
|
|
color: var(--color-charcoal);
|
|
}
|
|
|
|
.spatial-hierarchy-after .spatial-h-title {
|
|
font-family: var(--font-display);
|
|
font-size: 1.75rem;
|
|
font-weight: 300;
|
|
font-style: italic;
|
|
margin-bottom: var(--spacing-xs);
|
|
color: var(--color-text);
|
|
}
|
|
|
|
.spatial-hierarchy-after .spatial-h-subtitle {
|
|
font-size: 0.6875rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.1em;
|
|
color: var(--color-ash);
|
|
margin-bottom: var(--spacing-md);
|
|
}
|
|
|
|
.spatial-hierarchy-after .spatial-h-cta {
|
|
display: inline-block;
|
|
padding: var(--spacing-sm) var(--spacing-lg);
|
|
background: var(--color-text);
|
|
color: var(--color-paper);
|
|
font-size: 0.875rem;
|
|
font-weight: 500;
|
|
border-radius: 4px;
|
|
margin-bottom: var(--spacing-sm);
|
|
}
|
|
|
|
.spatial-hierarchy-after .spatial-h-link {
|
|
font-size: 0.75rem;
|
|
color: var(--color-ash);
|
|
}
|
|
|
|
/* Whitespace */
|
|
.spatial-whitespace-before {
|
|
padding: var(--spacing-xs) !important;
|
|
}
|
|
|
|
.spatial-whitespace-before .spatial-ws-title { font-size: 1rem; font-weight: 600; margin-bottom: 2px; }
|
|
.spatial-whitespace-before .spatial-ws-price { font-size: 0.875rem; color: var(--color-ash); margin-bottom: 4px; }
|
|
.spatial-whitespace-before .spatial-ws-features { font-size: 0.75rem; color: var(--color-ash); margin-bottom: 6px; }
|
|
.spatial-whitespace-before .spatial-ws-btn { width: 100%; padding: 6px; font-size: 0.75rem; background: var(--color-text); color: var(--color-paper); border: none; border-radius: 3px; cursor: pointer; }
|
|
|
|
.spatial-whitespace-after {
|
|
padding: var(--spacing-lg) !important;
|
|
}
|
|
|
|
.spatial-whitespace-after .spatial-ws-title { font-family: var(--font-display); font-size: 1.5rem; font-weight: 400; margin-bottom: var(--spacing-sm); }
|
|
.spatial-whitespace-after .spatial-ws-price { font-size: 1.25rem; font-weight: 600; color: var(--color-text); margin-bottom: var(--spacing-sm); }
|
|
.spatial-whitespace-after .spatial-ws-features { font-size: 0.8125rem; color: var(--color-ash); margin-bottom: var(--spacing-lg); line-height: 1.6; }
|
|
.spatial-whitespace-after .spatial-ws-btn { width: 100%; padding: var(--spacing-sm); font-size: 0.875rem; background: var(--color-text); color: var(--color-paper); border: none; border-radius: 4px; cursor: pointer; font-weight: 500; }
|
|
|
|
/* ============================================
|
|
MOTION DESIGN DEMOS
|
|
============================================ */
|
|
|
|
.motion-demo {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: var(--spacing-sm);
|
|
width: 100%;
|
|
max-width: 280px;
|
|
}
|
|
|
|
/* Staggered Reveal */
|
|
.motion-stagger-demo {
|
|
align-items: stretch;
|
|
}
|
|
|
|
.motion-list-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--spacing-sm);
|
|
padding: var(--spacing-sm) var(--spacing-md);
|
|
background: var(--color-bg);
|
|
border: 1px solid var(--color-mist);
|
|
border-radius: 4px;
|
|
font-size: 0.875rem;
|
|
color: var(--color-charcoal);
|
|
}
|
|
|
|
.motion-dot {
|
|
width: 8px;
|
|
height: 8px;
|
|
background: var(--color-accent);
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.demo-viewport[data-state="after"] .motion-list-item {
|
|
opacity: 0;
|
|
transform: translateY(12px);
|
|
animation: staggerIn 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
}
|
|
|
|
.demo-viewport[data-state="after"] .motion-list-item:nth-child(1) { animation-delay: 0s; }
|
|
.demo-viewport[data-state="after"] .motion-list-item:nth-child(2) { animation-delay: 0.05s; }
|
|
.demo-viewport[data-state="after"] .motion-list-item:nth-child(3) { animation-delay: 0.1s; }
|
|
.demo-viewport[data-state="after"] .motion-list-item:nth-child(4) { animation-delay: 0.15s; }
|
|
|
|
@keyframes staggerIn {
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
/* Micro-interactions */
|
|
.motion-btn {
|
|
padding: 12px 24px;
|
|
font-size: 0.9375rem;
|
|
font-weight: 500;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.motion-btn-before {
|
|
background: var(--color-charcoal);
|
|
color: var(--color-paper);
|
|
}
|
|
|
|
.motion-btn-after {
|
|
background: var(--color-text);
|
|
color: var(--color-paper);
|
|
transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.2s ease;
|
|
}
|
|
|
|
.motion-btn-after:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
|
}
|
|
|
|
.motion-btn-after:active {
|
|
transform: translateY(0) scale(0.98);
|
|
}
|
|
|
|
/* State Transitions */
|
|
.motion-card {
|
|
padding: var(--spacing-md);
|
|
background: var(--color-bg);
|
|
border: 1px solid var(--color-mist);
|
|
border-radius: 6px;
|
|
text-align: center;
|
|
min-width: 140px;
|
|
}
|
|
|
|
.motion-card-icon { font-size: 1.5rem; margin-bottom: var(--spacing-xs); }
|
|
.motion-card-text { font-size: 0.8125rem; color: var(--color-charcoal); }
|
|
|
|
.motion-card-after {
|
|
transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
}
|
|
|
|
.demo-viewport[data-state="after"] .motion-card-after {
|
|
background: color-mix(in oklch, var(--color-accent) 10%, var(--color-paper));
|
|
border-color: var(--color-accent);
|
|
}
|
|
|
|
.demo-viewport[data-state="after"] .motion-card-after .motion-card-icon {
|
|
animation: checkPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
}
|
|
|
|
@keyframes checkPop {
|
|
50% { transform: scale(1.3); }
|
|
}
|
|
|
|
/* ============================================
|
|
TYPOGRAPHY DEMOS
|
|
============================================ */
|
|
|
|
.typo-demo {
|
|
width: 100%;
|
|
max-width: 320px;
|
|
text-align: left;
|
|
}
|
|
|
|
/* Font Pairing */
|
|
.typo-pairing-before {
|
|
font-family: 'Inter', system-ui, sans-serif;
|
|
}
|
|
|
|
.typo-pairing-before .typo-heading {
|
|
font-size: 1.5rem;
|
|
font-weight: 600;
|
|
margin-bottom: var(--spacing-xs);
|
|
}
|
|
|
|
.typo-pairing-before .typo-body {
|
|
font-size: 0.9375rem;
|
|
line-height: 1.5;
|
|
color: var(--color-ash);
|
|
}
|
|
|
|
.typo-pairing-after .typo-heading {
|
|
font-family: var(--font-display);
|
|
font-size: 2rem;
|
|
font-weight: 300;
|
|
font-style: italic;
|
|
letter-spacing: -0.02em;
|
|
margin-bottom: var(--spacing-sm);
|
|
color: var(--color-text);
|
|
}
|
|
|
|
.typo-pairing-after .typo-body {
|
|
font-family: var(--font-body);
|
|
font-size: 0.9375rem;
|
|
line-height: 1.7;
|
|
color: var(--color-charcoal);
|
|
}
|
|
|
|
/* Hierarchy */
|
|
.typo-hierarchy-before .typo-h1 { font-size: 1.125rem; font-weight: 600; margin-bottom: 4px; }
|
|
.typo-hierarchy-before .typo-meta { font-size: 0.9375rem; color: var(--color-ash); margin-bottom: var(--spacing-xs); }
|
|
.typo-hierarchy-before .typo-p { font-size: 0.875rem; line-height: 1.5; color: var(--color-charcoal); }
|
|
|
|
.typo-hierarchy-after .typo-h1 {
|
|
font-family: var(--font-display);
|
|
font-size: 2.25rem;
|
|
font-weight: 300;
|
|
letter-spacing: -0.03em;
|
|
margin-bottom: 2px;
|
|
line-height: 1.1;
|
|
}
|
|
|
|
.typo-hierarchy-after .typo-meta {
|
|
font-size: 0.6875rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.12em;
|
|
color: var(--color-accent);
|
|
margin-bottom: var(--spacing-md);
|
|
}
|
|
|
|
.typo-hierarchy-after .typo-p {
|
|
font-size: 0.9375rem;
|
|
line-height: 1.7;
|
|
color: var(--color-ash);
|
|
}
|
|
|
|
/* ============================================
|
|
INTERACTION DESIGN DEMOS
|
|
============================================ */
|
|
|
|
.int-demo {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--spacing-md);
|
|
width: 100%;
|
|
max-width: 280px;
|
|
}
|
|
|
|
/* Button States */
|
|
.int-states-demo {
|
|
gap: var(--spacing-lg);
|
|
}
|
|
|
|
.int-state-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--spacing-md);
|
|
}
|
|
|
|
.int-state-label {
|
|
font-size: 0.6875rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
color: var(--color-ash);
|
|
width: 40px;
|
|
}
|
|
|
|
.int-btn {
|
|
flex: 1;
|
|
padding: var(--spacing-sm) var(--spacing-md);
|
|
font-size: 0.875rem;
|
|
font-weight: 500;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.int-btn-poor {
|
|
background: var(--color-charcoal);
|
|
color: var(--color-paper);
|
|
border: none;
|
|
}
|
|
|
|
.int-btn-good {
|
|
background: var(--color-text);
|
|
color: var(--color-paper);
|
|
border: 2px solid transparent;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.int-btn-good:hover {
|
|
background: var(--color-charcoal);
|
|
}
|
|
|
|
.int-btn-good:focus {
|
|
outline: none;
|
|
border-color: var(--color-accent);
|
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 25%, transparent);
|
|
}
|
|
|
|
.int-btn-good:active {
|
|
transform: scale(0.98);
|
|
}
|
|
|
|
/* Affordances */
|
|
.int-aff-item {
|
|
padding: var(--spacing-sm) var(--spacing-md);
|
|
border-radius: 4px;
|
|
font-size: 0.875rem;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.int-aff-poor {
|
|
color: var(--color-charcoal);
|
|
}
|
|
|
|
.int-aff-good {
|
|
color: var(--color-accent);
|
|
text-decoration: underline;
|
|
text-underline-offset: 2px;
|
|
}
|
|
|
|
.int-aff-good::after {
|
|
content: ' →';
|
|
}
|
|
|
|
.int-affordance-after .int-aff-item {
|
|
background: var(--color-bg);
|
|
border: 1px solid var(--color-mist);
|
|
color: var(--color-accent);
|
|
text-decoration: underline;
|
|
text-underline-offset: 2px;
|
|
transition: background 0.15s ease;
|
|
}
|
|
|
|
.int-affordance-after .int-aff-item:hover {
|
|
background: color-mix(in oklch, var(--color-accent) 5%, var(--color-paper));
|
|
}
|
|
|
|
.int-affordance-after .int-aff-item::after {
|
|
content: ' →';
|
|
}
|
|
|
|
/* Feedback */
|
|
.int-feedback-before,
|
|
.int-feedback-after {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--spacing-md);
|
|
flex-direction: row;
|
|
}
|
|
|
|
.int-fb-btn {
|
|
width: 48px;
|
|
height: 48px;
|
|
border-radius: 50%;
|
|
border: none;
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.int-fb-btn svg {
|
|
width: 22px;
|
|
height: 22px;
|
|
}
|
|
|
|
.int-fb-silent {
|
|
background: var(--color-mist);
|
|
color: var(--color-ash);
|
|
}
|
|
|
|
.int-fb-active {
|
|
background: var(--color-charcoal);
|
|
color: var(--color-paper);
|
|
transition: all 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
}
|
|
|
|
.int-fb-active:hover {
|
|
transform: scale(1.1);
|
|
}
|
|
|
|
.int-fb-active:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.int-fb-active.liked {
|
|
background: var(--color-accent);
|
|
animation: heartPop 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
}
|
|
|
|
@keyframes heartPop {
|
|
50% { transform: scale(1.25); }
|
|
}
|
|
|
|
.int-fb-label {
|
|
font-size: 0.875rem;
|
|
color: var(--color-charcoal);
|
|
}
|
|
|
|
/* ============================================
|
|
COLOR & CONTRAST DEMOS
|
|
============================================ */
|
|
|
|
.color-demo {
|
|
width: 100%;
|
|
max-width: 300px;
|
|
}
|
|
|
|
/* Color Palette */
|
|
.color-palette-before,
|
|
.color-palette-after {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--spacing-xs);
|
|
padding: var(--spacing-md);
|
|
background: var(--color-paper);
|
|
border: 1px solid var(--color-mist);
|
|
border-radius: 6px;
|
|
}
|
|
|
|
.color-swatch {
|
|
width: 40px;
|
|
height: 40px;
|
|
border-radius: 4px;
|
|
transition: background 0.2s ease;
|
|
}
|
|
|
|
.color-card {
|
|
width: 100%;
|
|
margin-top: var(--spacing-sm);
|
|
padding: var(--spacing-sm);
|
|
background: var(--color-paper);
|
|
border: 1px solid var(--color-mist);
|
|
border-radius: 4px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
}
|
|
|
|
.color-card span { font-size: 0.8125rem; font-weight: 500; transition: color 0.2s ease; }
|
|
.color-card button { padding: 6px; border: none; border-radius: 3px; font-size: 0.75rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; }
|
|
|
|
/* Before - Clashing colors */
|
|
.color-palette-before .swatch-1 { background: #ff6b6b; }
|
|
.color-palette-before .swatch-2 { background: #4ecdc4; }
|
|
.color-palette-before .swatch-3 { background: #ffe66d; }
|
|
.color-palette-before .swatch-4 { background: #95e1d3; }
|
|
.color-palette-before .swatch-5 { background: #f38181; }
|
|
.color-palette-before .card-title { color: #ff6b6b; }
|
|
.color-palette-before .card-subtitle { color: #4ecdc4; }
|
|
.color-palette-before .card-btn { background: #ffe66d; color: #333; }
|
|
|
|
/* After - Harmonious palette */
|
|
.color-palette-after .swatch-1 { background: var(--color-text); }
|
|
.color-palette-after .swatch-2 { background: var(--color-charcoal); }
|
|
.color-palette-after .swatch-3 { background: var(--color-ash); }
|
|
.color-palette-after .swatch-4 { background: var(--color-mist); }
|
|
.color-palette-after .swatch-5 { background: var(--color-accent); }
|
|
.color-palette-after .card-title { color: var(--color-text); }
|
|
.color-palette-after .card-subtitle { color: var(--color-ash); }
|
|
.color-palette-after .card-btn { background: var(--color-accent); color: var(--color-paper); }
|
|
|
|
/* Strategic Accent */
|
|
.color-accent-card {
|
|
padding: var(--spacing-md);
|
|
border-radius: 6px;
|
|
}
|
|
|
|
.color-accent-before .color-accent-card {
|
|
background: #f5f5f5;
|
|
border: 1px solid #e0e0e0;
|
|
}
|
|
|
|
.color-accent-before .color-accent-title { font-weight: 600; color: #333; margin-bottom: 4px; }
|
|
.color-accent-before .color-accent-text { font-size: 0.8125rem; color: #666; margin-bottom: var(--spacing-sm); }
|
|
.color-accent-before .color-accent-btn { width: 100%; padding: var(--spacing-xs); background: #333; color: white; border: none; border-radius: 4px; font-size: 0.8125rem; cursor: pointer; }
|
|
|
|
.color-accent-after .color-accent-card {
|
|
background: color-mix(in oklch, var(--color-accent) 8%, var(--color-paper));
|
|
border: 1px solid color-mix(in oklch, var(--color-accent) 20%, var(--color-paper));
|
|
}
|
|
|
|
.color-accent-after .color-accent-title { font-weight: 600; color: var(--color-text); margin-bottom: 4px; }
|
|
.color-accent-after .color-accent-text { font-size: 0.8125rem; color: var(--color-ash); margin-bottom: var(--spacing-sm); }
|
|
.color-accent-after .color-accent-btn { width: 100%; padding: var(--spacing-xs); background: var(--color-accent); color: var(--color-paper); border: none; border-radius: 4px; font-size: 0.8125rem; font-weight: 500; cursor: pointer; }
|
|
|
|
/* Contrast Ratios */
|
|
.color-contrast-static {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--spacing-sm);
|
|
}
|
|
|
|
.contrast-example {
|
|
padding: var(--spacing-md);
|
|
border-radius: 6px;
|
|
text-align: center;
|
|
}
|
|
|
|
.contrast-fail {
|
|
background: #f0f0f0;
|
|
color: #a0a0a0;
|
|
}
|
|
|
|
.contrast-pass {
|
|
background: var(--color-charcoal);
|
|
color: var(--color-paper);
|
|
}
|
|
|
|
.contrast-badge {
|
|
display: inline-block;
|
|
font-size: 0.5625rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.1em;
|
|
padding: 2px 6px;
|
|
border-radius: 2px;
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.contrast-fail .contrast-badge { background: #ddd; }
|
|
.contrast-pass .contrast-badge { background: var(--color-accent); color: var(--color-paper); }
|
|
|
|
.contrast-text { font-size: 1rem; font-weight: 500; margin-bottom: 2px; }
|
|
.contrast-ratio { font-size: 0.6875rem; opacity: 0.7; }
|
|
|
|
/* ============================================
|
|
RESPONSIVE DESIGN DEMOS
|
|
============================================ */
|
|
|
|
.resp-demo {
|
|
width: 100%;
|
|
max-width: 340px;
|
|
}
|
|
|
|
/* Touch Targets */
|
|
.resp-touch-demo {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--spacing-lg);
|
|
}
|
|
|
|
.resp-touch-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--spacing-md);
|
|
}
|
|
|
|
.resp-label {
|
|
font-size: 0.6875rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
color: var(--color-ash);
|
|
width: 70px;
|
|
}
|
|
|
|
.resp-touch-targets {
|
|
display: flex;
|
|
gap: 4px;
|
|
}
|
|
|
|
.resp-touch-targets button {
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.resp-touch-bad button {
|
|
width: 24px;
|
|
height: 24px;
|
|
font-size: 0.75rem;
|
|
background: var(--color-mist);
|
|
color: var(--color-ash);
|
|
}
|
|
|
|
.resp-touch-good button {
|
|
width: 44px;
|
|
height: 44px;
|
|
font-size: 1rem;
|
|
background: var(--color-text);
|
|
color: var(--color-paper);
|
|
}
|
|
|
|
/* Fluid Layout */
|
|
.resp-fluid-demo {
|
|
padding: var(--spacing-md);
|
|
background: var(--color-bg);
|
|
border: 1px solid var(--color-mist);
|
|
border-radius: 6px;
|
|
}
|
|
|
|
.resp-fluid-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--spacing-md);
|
|
}
|
|
|
|
.resp-fluid-fixed,
|
|
.resp-fluid-adaptive {
|
|
font-size: 0.75rem;
|
|
color: var(--color-ash);
|
|
}
|
|
|
|
.resp-fluid-fixed span,
|
|
.resp-fluid-adaptive span {
|
|
display: block;
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.resp-fluid-bar {
|
|
height: 24px;
|
|
background: var(--color-mist);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.resp-fluid-adaptive .resp-fluid-bar {
|
|
background: var(--color-accent);
|
|
}
|
|
|
|
/* Adaptive Content */
|
|
.resp-adapt-demo {
|
|
display: flex;
|
|
gap: var(--spacing-sm);
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.resp-device {
|
|
text-align: center;
|
|
}
|
|
|
|
.resp-device > span {
|
|
display: block;
|
|
margin-top: 4px;
|
|
font-size: 0.625rem;
|
|
color: var(--color-ash);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
}
|
|
|
|
.resp-device-screen {
|
|
background: var(--color-paper);
|
|
border: 2px solid var(--color-mist);
|
|
border-radius: 4px;
|
|
padding: 4px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 3px;
|
|
}
|
|
|
|
.resp-device-mobile .resp-device-screen { width: 50px; height: 80px; }
|
|
.resp-device-tablet .resp-device-screen { width: 80px; height: 60px; }
|
|
.resp-device-desktop .resp-device-screen { width: 120px; height: 70px; }
|
|
|
|
.resp-block {
|
|
background: var(--color-mist);
|
|
border-radius: 2px;
|
|
}
|
|
|
|
.resp-block-row {
|
|
display: flex;
|
|
gap: 3px;
|
|
flex: 1;
|
|
}
|
|
|
|
.resp-header { height: 16px; background: var(--color-charcoal); }
|
|
.resp-sidebar { width: 30%; background: var(--color-charcoal); }
|
|
.resp-content { flex: 1; }
|
|
|
|
/* ============================================
|
|
ANIMATIONS
|
|
============================================ */
|
|
|
|
@keyframes fadeIn {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
*, *::before, *::after {
|
|
animation-duration: 0.01ms !important;
|
|
animation-iteration-count: 1 !important;
|
|
transition-duration: 0.01ms !important;
|
|
}
|
|
}
|