{
  "schemaVersion": "1.0",
  "item": {
    "slug": "web-design",
    "name": "Web Design",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/wpank/web-design",
    "canonicalUrl": "https://clawhub.ai/wpank/web-design",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/web-design",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=web-design",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "web-design",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-10T20:44:21.446Z",
      "expiresAt": "2026-05-17T20:44:21.446Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=web-design",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=web-design",
        "contentDisposition": "attachment; filename=\"web-design-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "web-design"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/web-design"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/web-design",
    "agentPageUrl": "https://openagent3.xyz/skills/web-design/agent",
    "manifestUrl": "https://openagent3.xyz/skills/web-design/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/web-design/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Web Design Patterns",
        "body": "CSS implementation patterns for production-grade interfaces. For design fundamentals and decision-making, see ui-design. This skill focuses on code.\n\nSee also: ui-design for typography/color/spacing theory, frontend-design for creative aesthetics."
      },
      {
        "title": "OpenClaw / Moltbot / Clawbot",
        "body": "npx clawhub@latest install web-design"
      },
      {
        "title": "Layout Principles",
        "body": "Use CSS Grid for two-dimensional layouts and Flexbox for one-dimensional flow. Choose the right tool for each context.\n\nLayout NeedToolWhyPage-level structureCSS Grid (grid-template-areas)Named regions, explicit row/column controlNavigation barsFlexboxSingle-axis alignment, spacing with gapCard gridsGrid (auto-fill / auto-fit)Responsive without media queriesCenteringGrid (place-items: center)Shortest, most reliable centeringSidebar + contentGrid (grid-template-columns: 250px 1fr)Proportional sizing with fixed sidebarStacking overlapsGrid + grid-area: 1/1Layer elements without position: absolute"
      },
      {
        "title": "Spatial Composition",
        "body": "Go beyond predictable layouts. Intentional asymmetry, overlapping elements, and grid-breaking accents create visual interest. Use grid stacking (grid-area: 1/1) instead of position: absolute for overlapping elements. Choose generous negative space for luxury/editorial aesthetics, or controlled density for data-rich interfaces — the choice must be intentional."
      },
      {
        "title": "Typography",
        "body": "Typography carries 90% of a design's personality. Choose fonts that match the interface's purpose.\n\nContextDisplay Font DirectionBody Font DirectionExample PairingEditorial / magazineHigh-contrast serifNeutral humanist sansPlayfair Display + Source Sans 3SaaS dashboardGeometric sansMatching weight sansDM Sans + DM Mono (data)Creative portfolioExpressive displayClean readable sansSyne + OutfitE-commerce luxuryThin modern serifElegant sansCormorant Garamond + JostDeveloper toolingMonospace displayMonospace bodyJetBrains Mono + IBM Plex Mono"
      },
      {
        "title": "Type Scale",
        "body": "Use a consistent ratio. A 1.25 (major third) scale works for most interfaces: text-xs 0.64rem, text-sm 0.8rem, text-base 1rem, text-lg 1.25rem, text-xl 1.563rem, text-2xl 1.953rem, text-3xl 2.441rem, text-4xl 3.052rem. Set body text to 1rem (16px minimum), line-height 1.5 for body, 1.1–1.2 for headings. Limit line length to 60–75ch."
      },
      {
        "title": "Building a Palette",
        "body": "Every palette needs five functional roles:\n\nRolePurposeExample UsagePrimaryBrand identity, primary actionsButtons, links, active statesNeutralText, borders, backgroundsBody text, cards, dividersAccentSecondary actions, highlightsTags, badges, secondary buttonsSuccess / Warning / ErrorSemantic feedbackToasts, form validation, statusSurfaceLayered backgroundsCards on page, modals on overlay"
      },
      {
        "title": "Contrast and Depth",
        "body": "Create depth through surface layering, not just shadows:\n\n:root {\n  --surface-0: hsl(220 15% 8%);    /* page background */\n  --surface-1: hsl(220 15% 12%);   /* card */\n  --surface-2: hsl(220 15% 16%);   /* raised element */\n  --surface-3: hsl(220 15% 20%);   /* popover / modal */\n}\n\nUse HSL or OKLCH for perceptually uniform color manipulation. Dominant color with sharp accents outperforms evenly-distributed palettes. Always verify WCAG contrast: 4.5:1 for normal text, 3:1 for large text."
      },
      {
        "title": "Spacing",
        "body": "Consistent spacing creates rhythm. Use an 8px base unit (or 4px for dense UIs):\n\nTokenValueUse--space-10.25rem (4px)Inline icon gaps, tight padding--space-20.5rem (8px)Input padding, compact lists--space-30.75rem (12px)Button padding, card inner spacing--space-41rem (16px)Default element spacing--space-61.5rem (24px)Section padding, card gaps--space-82rem (32px)Section separation--space-123rem (48px)Major section breaks--space-164rem (64px)Page-level vertical rhythm\n\nApply spacing consistently: use gap on Grid/Flexbox containers instead of margins on children. This eliminates margin-collapse bugs and simplifies responsive adjustments."
      },
      {
        "title": "Visual Hierarchy",
        "body": "Guide the eye through deliberate contrast in size, weight, color, and space."
      },
      {
        "title": "Hierarchy Techniques",
        "body": "TechniqueHowImpactSize contrastHero heading 3–4x body sizeImmediate focal pointWeight contrastBold headings + regular bodyScannabilityColor contrastPrimary text vs muted secondaryInformation layeringSpatial groupingTight spacing within groups, wide betweenGestalt proximityElevationShadows / surface layersInteractive affordanceWhitespace isolationEmpty space around key elementEmphasis through absence"
      },
      {
        "title": "Practical Pattern — Card Hierarchy",
        "body": "Layer hierarchy within cards: eyebrow (xs, uppercase, muted) → title (xl, semibold) → body (base, secondary color, 1.6 line-height) → action (spaced apart with margin-top). Use surface color for separation and consistent padding from spacing tokens."
      },
      {
        "title": "Breakpoint Strategy",
        "body": "BreakpointTargetApproach< 640pxMobileSingle column, stacked navigation, touch targets ≥ 44px640–1024pxTabletTwo-column options, collapsible sidebars1024–1440pxDesktopFull layout, hover interactions enabled> 1440pxWideMax-width container (1280px), prevent ultra-wide line lengths"
      },
      {
        "title": "Fluid Techniques",
        "body": "Prefer fluid sizing over rigid breakpoints where possible:\n\n/* Fluid typography — scales between 640px and 1440px viewport */\nh1 { font-size: clamp(2rem, 1.5rem + 2.5vw, 3.5rem); }\n\n/* Fluid spacing */\nsection { padding-block: clamp(2rem, 1rem + 4vw, 6rem); }\n\n/* Intrinsic grid — no media queries needed */\n.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: var(--space-6); }\n\nUse container queries (@container) for component-level responsiveness when a component's layout should respond to its container, not the viewport."
      },
      {
        "title": "Accessibility",
        "body": "Accessibility is not optional. Build it in from the start.\n\nRequirementImplementationStandardColor contrast4.5:1 normal text, 3:1 large text / UIWCAG 2.1 AAKeyboard navigationAll interactive elements focusable and operableWCAG 2.1.1Focus indicatorsVisible :focus-visible ring, 2px+ offsetWCAG 2.4.7Semantic HTMLUse <button>, <nav>, <main>, <article> etc.WCAG 1.3.1Alt textDescriptive for informational images, alt=\"\" for decorativeWCAG 1.1.1Motion safetyRespect prefers-reduced-motionWCAG 2.3.3Touch targetsMinimum 44×44px interactive areasWCAG 2.5.8ARIA when neededaria-label, aria-live, role only when native semantics insufficientWCAG 4.1.2\n\n/* Robust focus indicator */\n:focus-visible {\n  outline: 2px solid var(--color-primary);\n  outline-offset: 2px;\n}\n\n/* Respect motion preferences */\n@media (prefers-reduced-motion: reduce) {\n  *, *::before, *::after {\n    animation-duration: 0.01ms !important;\n    transition-duration: 0.01ms !important;\n  }\n}"
      },
      {
        "title": "Anatomy of a Well-Designed Component",
        "body": "Every UI component should have clear states, consistent spacing, and predictable behavior:\n\nStateVisual TreatmentExampleDefaultBase stylingButton at restHoverSubtle shift — background, shadow, or scalebackground lightens 5-10%Active / PressedCompressed feel — reduced shadow, slight insettransform: scale(0.98)FocusHigh-visibility ring, no outline removal:focus-visible ringDisabledReduced opacity, cursor: not-allowedopacity: 0.5LoadingSpinner or skeleton, disabled interactionInline spinner replacing label"
      },
      {
        "title": "Design Token Architecture",
        "body": "Structure tokens in three layers for maintainability:\n\n/* Layer 1: Primitive values */\n--blue-500: oklch(0.55 0.2 250);\n--gray-100: oklch(0.95 0.005 250);\n--radius-md: 0.5rem;\n\n/* Layer 2: Semantic aliases */\n--color-primary: var(--blue-500);\n--color-surface: var(--gray-100);\n--radius-button: var(--radius-md);\n\n/* Layer 3: Component-specific */\n--btn-bg: var(--color-primary);\n--btn-radius: var(--radius-button);\n--btn-padding: var(--space-2) var(--space-4);\n\nThis three-layer approach allows theme switching by remapping Layer 2 without touching components."
      },
      {
        "title": "Motion and Animation",
        "body": "Use motion to communicate state changes, not to decorate. Focus on high-impact moments:\n\nInteractionDurationEasingPurposeButton hover150msease-outAcknowledge interactionModal open250msease-outDraw attentionModal close200msease-inQuick dismissalPage transition300msease-in-outMaintain spatial contextStagger reveal50–80ms delay per itemease-outSequential content loadingMicro-feedback100msease-outToggle, checkbox, switch\n\n/* Staggered entrance animation */\n.stagger-item {\n  opacity: 0;\n  translate: 0 1rem;\n  animation: reveal 0.5s ease-out forwards;\n}\n.stagger-item:nth-child(1) { animation-delay: 0ms; }\n.stagger-item:nth-child(2) { animation-delay: 60ms; }\n.stagger-item:nth-child(3) { animation-delay: 120ms; }\n\n@keyframes reveal {\n  to { opacity: 1; translate: 0 0; }\n}"
      },
      {
        "title": "Scroll-Driven Effects",
        "body": "Use native animation-timeline: scroll() (behind @supports) for parallax and reveal effects without JavaScript. Wrap in feature detection to gracefully degrade."
      },
      {
        "title": "Design Quality Checklist",
        "body": "Before shipping, verify against these criteria:\n\nTypography: Intentional font pairing, consistent scale, readable line lengths\n Color: Cohesive palette, WCAG contrast met, semantic feedback colors defined\n Spacing: Consistent rhythm using spacing tokens, no ad-hoc pixel values\n Hierarchy: Clear visual flow — eye path follows intended reading order\n Responsiveness: Tested at mobile, tablet, desktop; no horizontal overflow\n Accessibility: Keyboard navigable, focus visible, screen-reader tested, motion-safe\n States: All interactive elements have hover, active, focus, disabled, and loading states\n Personality: Design has a clear point-of-view — not generic template aesthetic\n Performance: Images optimized, fonts subset, animations GPU-accelerated (transform, opacity)\n Dark mode: If supported, surfaces use layered lightness, not inverted colors"
      }
    ],
    "body": "Web Design Patterns\n\nCSS implementation patterns for production-grade interfaces. For design fundamentals and decision-making, see ui-design. This skill focuses on code.\n\nSee also: ui-design for typography/color/spacing theory, frontend-design for creative aesthetics.\n\nInstallation\nOpenClaw / Moltbot / Clawbot\nnpx clawhub@latest install web-design\n\nLayout Principles\n\nUse CSS Grid for two-dimensional layouts and Flexbox for one-dimensional flow. Choose the right tool for each context.\n\nLayout Need\tTool\tWhy\nPage-level structure\tCSS Grid (grid-template-areas)\tNamed regions, explicit row/column control\nNavigation bars\tFlexbox\tSingle-axis alignment, spacing with gap\nCard grids\tGrid (auto-fill / auto-fit)\tResponsive without media queries\nCentering\tGrid (place-items: center)\tShortest, most reliable centering\nSidebar + content\tGrid (grid-template-columns: 250px 1fr)\tProportional sizing with fixed sidebar\nStacking overlaps\tGrid + grid-area: 1/1\tLayer elements without position: absolute\nSpatial Composition\n\nGo beyond predictable layouts. Intentional asymmetry, overlapping elements, and grid-breaking accents create visual interest. Use grid stacking (grid-area: 1/1) instead of position: absolute for overlapping elements. Choose generous negative space for luxury/editorial aesthetics, or controlled density for data-rich interfaces — the choice must be intentional.\n\nTypography\n\nTypography carries 90% of a design's personality. Choose fonts that match the interface's purpose.\n\nContext\tDisplay Font Direction\tBody Font Direction\tExample Pairing\nEditorial / magazine\tHigh-contrast serif\tNeutral humanist sans\tPlayfair Display + Source Sans 3\nSaaS dashboard\tGeometric sans\tMatching weight sans\tDM Sans + DM Mono (data)\nCreative portfolio\tExpressive display\tClean readable sans\tSyne + Outfit\nE-commerce luxury\tThin modern serif\tElegant sans\tCormorant Garamond + Jost\nDeveloper tooling\tMonospace display\tMonospace body\tJetBrains Mono + IBM Plex Mono\nType Scale\n\nUse a consistent ratio. A 1.25 (major third) scale works for most interfaces: text-xs 0.64rem, text-sm 0.8rem, text-base 1rem, text-lg 1.25rem, text-xl 1.563rem, text-2xl 1.953rem, text-3xl 2.441rem, text-4xl 3.052rem. Set body text to 1rem (16px minimum), line-height 1.5 for body, 1.1–1.2 for headings. Limit line length to 60–75ch.\n\nColor\nBuilding a Palette\n\nEvery palette needs five functional roles:\n\nRole\tPurpose\tExample Usage\nPrimary\tBrand identity, primary actions\tButtons, links, active states\nNeutral\tText, borders, backgrounds\tBody text, cards, dividers\nAccent\tSecondary actions, highlights\tTags, badges, secondary buttons\nSuccess / Warning / Error\tSemantic feedback\tToasts, form validation, status\nSurface\tLayered backgrounds\tCards on page, modals on overlay\nContrast and Depth\n\nCreate depth through surface layering, not just shadows:\n\n:root {\n  --surface-0: hsl(220 15% 8%);    /* page background */\n  --surface-1: hsl(220 15% 12%);   /* card */\n  --surface-2: hsl(220 15% 16%);   /* raised element */\n  --surface-3: hsl(220 15% 20%);   /* popover / modal */\n}\n\n\nUse HSL or OKLCH for perceptually uniform color manipulation. Dominant color with sharp accents outperforms evenly-distributed palettes. Always verify WCAG contrast: 4.5:1 for normal text, 3:1 for large text.\n\nSpacing\n\nConsistent spacing creates rhythm. Use an 8px base unit (or 4px for dense UIs):\n\nToken\tValue\tUse\n--space-1\t0.25rem (4px)\tInline icon gaps, tight padding\n--space-2\t0.5rem (8px)\tInput padding, compact lists\n--space-3\t0.75rem (12px)\tButton padding, card inner spacing\n--space-4\t1rem (16px)\tDefault element spacing\n--space-6\t1.5rem (24px)\tSection padding, card gaps\n--space-8\t2rem (32px)\tSection separation\n--space-12\t3rem (48px)\tMajor section breaks\n--space-16\t4rem (64px)\tPage-level vertical rhythm\n\nApply spacing consistently: use gap on Grid/Flexbox containers instead of margins on children. This eliminates margin-collapse bugs and simplifies responsive adjustments.\n\nVisual Hierarchy\n\nGuide the eye through deliberate contrast in size, weight, color, and space.\n\nHierarchy Techniques\nTechnique\tHow\tImpact\nSize contrast\tHero heading 3–4x body size\tImmediate focal point\nWeight contrast\tBold headings + regular body\tScannability\nColor contrast\tPrimary text vs muted secondary\tInformation layering\nSpatial grouping\tTight spacing within groups, wide between\tGestalt proximity\nElevation\tShadows / surface layers\tInteractive affordance\nWhitespace isolation\tEmpty space around key element\tEmphasis through absence\nPractical Pattern — Card Hierarchy\n\nLayer hierarchy within cards: eyebrow (xs, uppercase, muted) → title (xl, semibold) → body (base, secondary color, 1.6 line-height) → action (spaced apart with margin-top). Use surface color for separation and consistent padding from spacing tokens.\n\nResponsive Design\nBreakpoint Strategy\nBreakpoint\tTarget\tApproach\n< 640px\tMobile\tSingle column, stacked navigation, touch targets ≥ 44px\n640–1024px\tTablet\tTwo-column options, collapsible sidebars\n1024–1440px\tDesktop\tFull layout, hover interactions enabled\n> 1440px\tWide\tMax-width container (1280px), prevent ultra-wide line lengths\nFluid Techniques\n\nPrefer fluid sizing over rigid breakpoints where possible:\n\n/* Fluid typography — scales between 640px and 1440px viewport */\nh1 { font-size: clamp(2rem, 1.5rem + 2.5vw, 3.5rem); }\n\n/* Fluid spacing */\nsection { padding-block: clamp(2rem, 1rem + 4vw, 6rem); }\n\n/* Intrinsic grid — no media queries needed */\n.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: var(--space-6); }\n\n\nUse container queries (@container) for component-level responsiveness when a component's layout should respond to its container, not the viewport.\n\nAccessibility\n\nAccessibility is not optional. Build it in from the start.\n\nRequirement\tImplementation\tStandard\nColor contrast\t4.5:1 normal text, 3:1 large text / UI\tWCAG 2.1 AA\nKeyboard navigation\tAll interactive elements focusable and operable\tWCAG 2.1.1\nFocus indicators\tVisible :focus-visible ring, 2px+ offset\tWCAG 2.4.7\nSemantic HTML\tUse <button>, <nav>, <main>, <article> etc.\tWCAG 1.3.1\nAlt text\tDescriptive for informational images, alt=\"\" for decorative\tWCAG 1.1.1\nMotion safety\tRespect prefers-reduced-motion\tWCAG 2.3.3\nTouch targets\tMinimum 44×44px interactive areas\tWCAG 2.5.8\nARIA when needed\taria-label, aria-live, role only when native semantics insufficient\tWCAG 4.1.2\n/* Robust focus indicator */\n:focus-visible {\n  outline: 2px solid var(--color-primary);\n  outline-offset: 2px;\n}\n\n/* Respect motion preferences */\n@media (prefers-reduced-motion: reduce) {\n  *, *::before, *::after {\n    animation-duration: 0.01ms !important;\n    transition-duration: 0.01ms !important;\n  }\n}\n\nComponent Design\nAnatomy of a Well-Designed Component\n\nEvery UI component should have clear states, consistent spacing, and predictable behavior:\n\nState\tVisual Treatment\tExample\nDefault\tBase styling\tButton at rest\nHover\tSubtle shift — background, shadow, or scale\tbackground lightens 5-10%\nActive / Pressed\tCompressed feel — reduced shadow, slight inset\ttransform: scale(0.98)\nFocus\tHigh-visibility ring, no outline removal\t:focus-visible ring\nDisabled\tReduced opacity, cursor: not-allowed\topacity: 0.5\nLoading\tSpinner or skeleton, disabled interaction\tInline spinner replacing label\nDesign Token Architecture\n\nStructure tokens in three layers for maintainability:\n\n/* Layer 1: Primitive values */\n--blue-500: oklch(0.55 0.2 250);\n--gray-100: oklch(0.95 0.005 250);\n--radius-md: 0.5rem;\n\n/* Layer 2: Semantic aliases */\n--color-primary: var(--blue-500);\n--color-surface: var(--gray-100);\n--radius-button: var(--radius-md);\n\n/* Layer 3: Component-specific */\n--btn-bg: var(--color-primary);\n--btn-radius: var(--radius-button);\n--btn-padding: var(--space-2) var(--space-4);\n\n\nThis three-layer approach allows theme switching by remapping Layer 2 without touching components.\n\nInteraction Patterns\nMotion and Animation\n\nUse motion to communicate state changes, not to decorate. Focus on high-impact moments:\n\nInteraction\tDuration\tEasing\tPurpose\nButton hover\t150ms\tease-out\tAcknowledge interaction\nModal open\t250ms\tease-out\tDraw attention\nModal close\t200ms\tease-in\tQuick dismissal\nPage transition\t300ms\tease-in-out\tMaintain spatial context\nStagger reveal\t50–80ms delay per item\tease-out\tSequential content loading\nMicro-feedback\t100ms\tease-out\tToggle, checkbox, switch\n/* Staggered entrance animation */\n.stagger-item {\n  opacity: 0;\n  translate: 0 1rem;\n  animation: reveal 0.5s ease-out forwards;\n}\n.stagger-item:nth-child(1) { animation-delay: 0ms; }\n.stagger-item:nth-child(2) { animation-delay: 60ms; }\n.stagger-item:nth-child(3) { animation-delay: 120ms; }\n\n@keyframes reveal {\n  to { opacity: 1; translate: 0 0; }\n}\n\nScroll-Driven Effects\n\nUse native animation-timeline: scroll() (behind @supports) for parallax and reveal effects without JavaScript. Wrap in feature detection to gracefully degrade.\n\nDesign Quality Checklist\n\nBefore shipping, verify against these criteria:\n\n Typography: Intentional font pairing, consistent scale, readable line lengths\n Color: Cohesive palette, WCAG contrast met, semantic feedback colors defined\n Spacing: Consistent rhythm using spacing tokens, no ad-hoc pixel values\n Hierarchy: Clear visual flow — eye path follows intended reading order\n Responsiveness: Tested at mobile, tablet, desktop; no horizontal overflow\n Accessibility: Keyboard navigable, focus visible, screen-reader tested, motion-safe\n States: All interactive elements have hover, active, focus, disabled, and loading states\n Personality: Design has a clear point-of-view — not generic template aesthetic\n Performance: Images optimized, fonts subset, animations GPU-accelerated (transform, opacity)\n Dark mode: If supported, surfaces use layered lightness, not inverted colors"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wpank/web-design",
    "publisherUrl": "https://clawhub.ai/wpank/web-design",
    "owner": "wpank",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/web-design",
    "downloadUrl": "https://openagent3.xyz/downloads/web-design",
    "agentUrl": "https://openagent3.xyz/skills/web-design/agent",
    "manifestUrl": "https://openagent3.xyz/skills/web-design/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/web-design/agent.md"
  }
}