{
  "name": "PFM Lab Visual Identity",
  "version": "1.1",
  "date": "2026-09-28",
  "source": {
    "project": "PFM Lab · 连续成果卡片版",
    "url": "https://pfm-lab-scroll-demo.yanght2014.chatgpt.site",
    "commit": "efe804da4a857172cda70b2c49c8fc91f3876bdf",
    "cascade": [
      "public/home.css",
      "public/home-b.css",
      "public/home-reference.css",
      "public/home-papers.css"
    ]
  },
  "statusLegend": {
    "current": "Measured/extracted from approved CSS cascade",
    "recommended": "Proposed v1.1 semantic rule or normalized scale; no website change"
  },
  "color": {
    "brandBlue": {
      "value": "#337fff",
      "status": "current",
      "source": "home-reference.css :root --brand",
      "use": "Logo/identity fills, decorative accents; white normal text on solid blue is only 3.74:1."
    },
    "brandLight": {
      "value": "#62a2ff",
      "status": "current",
      "source": "home-reference.css .brand-symbol",
      "use": "Logo gradient highlight"
    },
    "brandDeep": {
      "value": "#2b6aeb",
      "status": "current",
      "source": "home-reference.css .brand-symbol",
      "use": "Logo gradient base"
    },
    "brandDot": {
      "value": "#a6edfa",
      "status": "current",
      "source": "home-b.css .brand-symbol i",
      "use": "Decorative accent, not normal text or the sole state cue"
    },
    "canvas": {
      "value": "#fbfdff",
      "status": "current",
      "source": "home-papers.css body[data-layout=\"blue\"]",
      "use": "Shared page background"
    },
    "surface": {
      "value": "#ffffff",
      "status": "current",
      "source": "home-papers.css .paper-card",
      "use": "Card and form surface"
    },
    "surfaceSubtle": {
      "value": "#f7f9fc",
      "status": "current",
      "source": "home-b.css :root --wash",
      "use": "Secondary surface"
    },
    "ink": {
      "value": "#1f2329",
      "status": "current",
      "source": "home-b.css :root --ink",
      "use": "Main text"
    },
    "muted": {
      "value": "#646a73",
      "status": "current",
      "source": "home-b.css :root --muted",
      "use": "Supporting text"
    },
    "line": {
      "value": "#e5e6eb",
      "status": "current",
      "source": "home-b.css :root --line",
      "use": "Decorative separators only; not sufficient as sole control boundary"
    },
    "action": {
      "value": "#245bdb",
      "status": "recommended",
      "source": "Existing home-b.css .member-link:hover / .button-solid:hover, promoted to semantic default",
      "use": "Normal-size links and white-on-solid-blue action buttons"
    },
    "actionHover": {
      "value": "#1d4fbe",
      "status": "recommended",
      "source": "v1.1 semantic extension",
      "use": "Hover/pressed action fill"
    },
    "actionSubtle": {
      "value": "#edf3ff",
      "status": "recommended",
      "source": "v1.1 semantic extension",
      "use": "Action tint surface"
    },
    "controlBorder": {
      "value": "#737e90",
      "status": "recommended",
      "source": "v1.1 semantic extension",
      "use": "Input boundary"
    },
    "success": {
      "value": "#287058",
      "status": "current",
      "source": "home-papers.css .paper-status",
      "use": "Published/verified text"
    },
    "successBg": {
      "value": "#edf7f0",
      "status": "current",
      "source": "home-papers.css .paper-status",
      "use": "Status tint"
    },
    "danger": {
      "value": "#a33930",
      "status": "recommended",
      "source": "v1.1 semantic extension",
      "use": "Error text plus message/icon"
    },
    "dangerBg": {
      "value": "#fff3f1",
      "status": "recommended",
      "source": "v1.1 semantic extension",
      "use": "Error surface"
    }
  },
  "gradient": {
    "brand": {
      "value": "linear-gradient(140deg,#62a2ff,#337fff 65%,#2b6aeb)",
      "status": "current",
      "source": "home-reference.css .brand-symbol"
    },
    "hero": {
      "value": "radial-gradient(ellipse at 102% -12%,#79aff8 0%,#bbd9fc 24%,transparent 53%),linear-gradient(127deg,#e2f0fd 0%,#f1f7fe 44%,#fbfdff 79%)",
      "status": "current",
      "source": "home-papers.css .hero-reference"
    }
  },
  "typography": {
    "fontFamily": {
      "value": "-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"PingFang SC\",\"Hiragino Sans GB\",\"Microsoft YaHei\",sans-serif",
      "status": "current",
      "source": "home.css body"
    },
    "sizesPx": {
      "caption": 12,
      "small": 14,
      "body": 16,
      "lead": 20,
      "h3": 24,
      "h2Max": 40,
      "displayMax": 48
    },
    "sizesStatus": "recommended normalized scale reflecting approved hierarchy",
    "bodyLineHeight": 1.7,
    "headingLineHeight": 1.4,
    "fallbackPolicy": "Use installed system fonts; do not redistribute proprietary system font files."
  },
  "space": {
    "valuesPx": [
      4,
      8,
      12,
      16,
      24,
      32,
      48,
      64,
      80
    ],
    "status": "recommended",
    "note": "Normalize recurring approved spacing; do not mechanically replace page-specific values."
  },
  "radius": {
    "control": {
      "value": 8,
      "status": "current",
      "source": "home-b.css .button"
    },
    "media": {
      "value": 13,
      "status": "current",
      "source": "home-papers.css .paper-figure"
    },
    "card": {
      "value": 22,
      "status": "current",
      "source": "home-papers.css .paper-card"
    },
    "panel": {
      "value": 32,
      "status": "current",
      "source": "home-reference.css .hero-reference"
    },
    "mobileCard": {
      "value": 19,
      "status": "current",
      "source": "home-papers.css @max-width:620px .paper-card"
    },
    "mobilePanel": {
      "value": 23,
      "status": "current",
      "source": "home-reference.css @max-width:620px .hero-reference"
    }
  },
  "layout": {
    "contentMaxPx": 1200,
    "panelMaxPx": 1376,
    "currentBreakpointsPx": [
      620,
      820,
      1000,
      1200,
      1550
    ],
    "recommendedGrid": {
      "desktopColumns": 12,
      "tabletColumns": 8,
      "mobileColumns": 4,
      "desktopGutterPx": 24,
      "mobileGutterPx": 16
    },
    "currentHeaderEdgePx": {
      "desktop": 28,
      "tablet": 20,
      "mobile": 16
    },
    "targetMinPx": {
      "value": 44,
      "status": "recommended",
      "note": "Internal brand comfort target; not a claim about every current control or WCAG AA target-size requirements."
    }
  },
  "motion": {
    "cardDurationMs": {
      "value": 480,
      "status": "current"
    },
    "cardEase": {
      "value": [
        0.2,
        0.75,
        0.25,
        1
      ],
      "status": "current"
    },
    "cardHover": {
      "translateYpx": -2,
      "scale": 1.025,
      "status": "current",
      "source": "home-papers.css .paper-card:hover and .paper-card:focus-within",
      "scope": "Base card hover and keyboard focus; wheel pointer-hover override is defined separately."
    },
    "fastMs": {
      "value": 160,
      "status": "recommended"
    },
    "uiMs": {
      "value": 240,
      "status": "recommended"
    },
    "reducedMotion": "Disable automatic rotation, parallax and transforms; retain visible content and direct navigation; avoid smooth scroll.",
    "wheelCardHover": {
      "translateYpx": -2,
      "scale": 1.035,
      "status": "current",
      "source": "home-papers.css @media(hover:hover) and (pointer:fine) .paper-orbit-slot .paper-card:hover",
      "scope": "Fine-pointer hover within the homepage 3D publication wheel; overrides base scale 1.025. Keyboard focus retains the base rule."
    }
  },
  "contrast": [
    {
      "label": "Brand blue / white",
      "foreground": "#337fff",
      "background": "#ffffff",
      "ratio": 3.74,
      "normalTextAA": false,
      "largeTextAA": true,
      "method": "WCAG sRGB relative luminance; opaque solid colors only"
    },
    {
      "label": "Recommended action / white",
      "foreground": "#245bdb",
      "background": "#ffffff",
      "ratio": 5.84,
      "normalTextAA": true,
      "largeTextAA": true,
      "method": "WCAG sRGB relative luminance; opaque solid colors only"
    },
    {
      "label": "Recommended action / canvas",
      "foreground": "#245bdb",
      "background": "#fbfdff",
      "ratio": 5.73,
      "normalTextAA": true,
      "largeTextAA": true,
      "method": "WCAG sRGB relative luminance; opaque solid colors only"
    },
    {
      "label": "Ink / canvas",
      "foreground": "#1f2329",
      "background": "#fbfdff",
      "ratio": 15.48,
      "normalTextAA": true,
      "largeTextAA": true,
      "method": "WCAG sRGB relative luminance; opaque solid colors only"
    },
    {
      "label": "Muted / white",
      "foreground": "#646a73",
      "background": "#ffffff",
      "ratio": 5.45,
      "normalTextAA": true,
      "largeTextAA": true,
      "method": "WCAG sRGB relative luminance; opaque solid colors only"
    },
    {
      "label": "Accent dot / white",
      "foreground": "#a6edfa",
      "background": "#ffffff",
      "ratio": 1.3,
      "normalTextAA": false,
      "largeTextAA": false,
      "method": "WCAG sRGB relative luminance; opaque solid colors only"
    },
    {
      "label": "Control border / white",
      "foreground": "#737e90",
      "background": "#ffffff",
      "ratio": 4.1,
      "normalTextAA": false,
      "largeTextAA": true,
      "method": "WCAG sRGB relative luminance; opaque solid colors only"
    },
    {
      "label": "Published status",
      "foreground": "#287058",
      "background": "#edf7f0",
      "ratio": 5.4,
      "normalTextAA": true,
      "largeTextAA": true,
      "method": "WCAG sRGB relative luminance; opaque solid colors only"
    },
    {
      "label": "Error message",
      "foreground": "#a33930",
      "background": "#fff3f1",
      "ratio": 6.07,
      "normalTextAA": true,
      "largeTextAA": true,
      "method": "WCAG sRGB relative luminance; opaque solid colors only"
    }
  ],
  "implementationNote": "The reference CSS/HTML demonstrates v1.1 semantics. It does not modify or certify the approved website. Gradients and image overlays require their own contrast verification."
}
