{
  "schemaVersion": 1,
  "type": "resource",
  "id": "tailwindcss",
  "evaluation": {
    "reviewedOn": "2026-10-19",
    "status": "checked",
    "modes": [
      "local-fixture",
      "source-review"
    ],
    "summary": "Tailwind 4.3.3 compiled a synthetic theme and explicit candidates. Generated CSS changed padding from 16 to 32 px across the tested widths, supplied a 2 px keyboard outline and stopped a motion-safe animation under reduced motion. Unknown utility input was omitted.",
    "reportUrl": "/design-evaluations/resource-tailwindcss.json",
    "identity": {
      "target": "tailwindcss",
      "version": "4.3.3",
      "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ=="
    },
    "environment": [
      "Chromium 155.0.8059.82; fresh disposable browser context, no account state or ambient credential variables.",
      "Synthetic inputs only; no uploads, purchases, accounts or private data.",
      "Pinned extracted assets/modules; browser HTTP(S) and WebSocket requests denied. No install/lifecycle scripts; no process-wide Node egress guarantee."
    ],
    "tests": [
      {
        "name": "Compile explicit candidates",
        "mode": "local-fixture",
        "method": "Compile synthetic theme and class candidate list",
        "result": "pass",
        "observation": "{\"padding\":\"16px\",\"background\":\"rgb(30, 64, 175)\",\"generatedBytes\":997}"
      },
      {
        "name": "Responsive variant",
        "mode": "local-fixture",
        "method": "Resize the 320 px fixture to 1024 px",
        "result": "pass",
        "observation": "{\"small\":\"16px\",\"wide\":\"32px\"}"
      },
      {
        "name": "Unknown candidate boundary",
        "mode": "local-fixture",
        "method": "Include not-a-real-utility in build candidates",
        "result": "pass",
        "observation": "Unknown utility was omitted rather than producing a runtime error; candidate discovery was supplied by the fixture, not the filesystem scanner."
      },
      {
        "name": "Focus-visible utility",
        "mode": "local-fixture",
        "method": "Focus authored button with Tab",
        "result": "pass",
        "observation": "{\"focused\":true,\"width\":\"2px\",\"style\":\"solid\"}"
      },
      {
        "name": "Motion-safe variant",
        "mode": "local-fixture",
        "method": "Request reduced motion on the generated motion-safe animation",
        "result": "pass",
        "observation": "{\"normal\":1,\"reduced\":0}"
      },
      {
        "name": "Production build integration",
        "mode": "local-fixture",
        "method": "Run the project’s scanner and bundler adapter",
        "result": "not-run",
        "observation": "No CLI/Vite/PostCSS integration or project filesystem scan was executed."
      }
    ],
    "security": {
      "scope": "Manifest/license and selected entry/source inspection, plus the named synthetic local fixture. No active exploitation or full security audit.",
      "findings": [
        {
          "level": "caution",
          "basis": "observed",
          "title": "The compiled sample needed no runtime network",
          "detail": "The compiler modules and generated 997-byte stylesheet ran in the isolated browser without outbound attempts. This covers the named core compiler path, not arbitrary plugins or build dependencies."
        },
        {
          "level": "caution",
          "basis": "documented",
          "title": "Class discovery is a separate boundary",
          "detail": "Official guidance explains that source scanning reads text rather than evaluating string interpolation. Keep class names complete and verify the sources included by your actual build."
        },
        {
          "level": "caution",
          "basis": "advice",
          "title": "Generated CSS does not validate the interface",
          "detail": "A focus utility or responsive rule can compile correctly while a layout still has unclear labels, poor contrast or inaccessible behavior. Test the composed component with real content."
        },
        {
          "level": "info",
          "basis": "observed",
          "title": "Pinned sample and network boundary",
          "detail": "The fetched archive matched its registry SHA-512. The selected fixture made zero outbound attempts under an HTTP/WebSocket deny rule. No package lifecycle scripts executed; this does not audit all package code or dependencies."
        }
      ],
      "limits": [
        "No scanner, CLI, native build adapter, plugin, production bundler, migration, full Preflight/reset behavior or cross-browser compatibility test.",
        "No complete dependency/vulnerability audit, authenticated data access, server authorization, retention or production security certification."
      ]
    },
    "practicalCaveats": [
      "Treat theme tokens and reusable component classes as a shared contract, not an unlimited list of one-off values.",
      "Check generated CSS and actual browser styles when a class appears to do nothing."
    ],
    "limits": [
      "Core compiler 4.3.3 in a browser fixture with explicit candidates, one theme and a small generated stylesheet.",
      "No scanner, CLI, native build adapter, plugin, production bundler, migration, full Preflight/reset behavior or cross-browser compatibility test."
    ],
    "sources": [
      {
        "label": "Installation and integrations",
        "url": "https://tailwindcss.com/docs/installation/using-vite"
      },
      {
        "label": "Class detection boundaries",
        "url": "https://tailwindcss.com/docs/detecting-classes-in-source-files"
      },
      {
        "label": "State variants",
        "url": "https://tailwindcss.com/docs/hover-focus-and-other-states"
      },
      {
        "label": "Dated repository snapshot source",
        "url": "https://github.com/tailwindlabs/tailwindcss"
      },
      {
        "label": "Exact evaluated package archive",
        "url": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz"
      }
    ]
  }
}
