<!-- WJS Home Single-File Complete AI Design System Pack | URL: https://wjs-home-ds-83907.pages.dev -->

---
name: wjs-home-design-system
description: Official WJS Home (wjshomestore.com) Design System V2: locked visual DNA, W3C DTCG & CSS tokens, perceptual contrast rules, bilingual copy guardrails (en-US & zh-Hans-US), and canonical storefront page blueprints. Activate whenever designing, coding, reviewing, or writing UI/copy for WJS Home.
---

# WJS Home Design System Skill (`wjs-home-design-system`)

> **Dedicated Brand Design System URL**: `https://wjs-home-ds-83907.pages.dev`
> **1-Click Local Refresh Command**:
> ```bash
> python -c "import urllib.request as u; exec(u.urlopen(u.Request('https://wjs-home-ds-83907.pages.dev/save-ds.py', headers={'User-Agent':'Mozilla/5.0'})).read().decode('utf-8'))" ./design-system/wjs-home
> ```

## Quick Integration in Any Frontend / Prototype

1. **Link Brand Tokens & Offline Fonts** (from extracted local folder):
   ```html
   <link rel="stylesheet" href="./tokens/brand-fonts.css">
   <link rel="stylesheet" href="./tokens/tokens.css">
   <link rel="stylesheet" href="./tokens/semantic-bridge.css">
   ```
2. **Core Locked Tokens**:
   - **Canvas / Surface / Band / Footer**: `#F5F2ED` / `#FFFFFF` / `#FCFBFA` / `#53443C`
   - **Primary / Secondary Ink**: `#53443C` / `#666564`
   - **Primary CTA Fill / Text / Label**: `#53443C` / `#FFFFFF` / `Add to Cart` (`加入购物车`)
   - **Button / Card / Input Radius**: `999px` / `20px` / `14px`
   - **Display / Body / CJK Fonts**: `Mulish` / `Archivo` / `Noto Sans SC`
3. **Self-Verify Generated Pages Before Delivery**:
   ```bash
   python tools/ds_lint.py --target path/to/your-page.html
   ```

---

# WJS Home Design System V2 · AI Agent Replication Guide (`CLAUDE.md`)

## 1. Brand Identity & Business Model

- **Brand**: WJS Home (`wjshomestore.com`)
- **Category & Public Price Band**: Family Comfort Sofa & Home Living DTC | Public storefront pricing (Sereno 26 modular layouts $359-$2,789; core L-shape $1,359)
- **Business Model (EN)**: Family Comfort Sofa & Multi-Category Home Living DTC
- **Business Model (ZH)**: 美国家庭舒适沙发与多品类客厅家具直营 DTC 独立站
- **Core Positioning**: Home Is Where Joy Settles (`Where Joy Settles` / `喜悦安居之处`): approachable US family home living prioritizing sink-in comfort first, removable washable covers on select series second (follow care label), and modular layout rearrangement or hidden storage third (`Deluxe Cloud`, `Matrix`, non-modular `Essential`, sintered-stone dining tables, coffee tables, media consoles, and slipcovers).
- **Self-Contained Package**: Every token file, offline webfont, bilingual runtime helper, Brand Book chapter, component preview, asset, and specimen referenced below lives inside this folder using portable relative paths.

## 2. Canonical Entrypoints (Read Order)

1. **Machine Contract**: `ai-replication-contract.json` (`schemaVersion: "4.0.0"`)
2. **Design Tokens & Offline Runtime**:
   - Canonical JSON: `tokens/tokens.json`
   - W3C DTCG 10-Group JSON: `tokens/tokens.dtcg.json`
   - Brand CSS Variables: `tokens/tokens.css`
   - 48-Variable Cross-Brand Semantic Bridge: `tokens/semantic-bridge.css`
   - Shopify OS 2.0 Theme Settings Bridge: `tokens/shopify-theme-tokens.css`
   - Multi-Platform Token Exports: `tokens/tailwind.preset.json`, `tokens/tokens.tailwind.config.js`, `tokens/tokens.style-dictionary.json`, `tokens/shopify-settings_schema.json`, `tokens/figma-variables.json`
   - Offline Brand Webfonts & CJK Mono Stack: `tokens/brand-fonts.css` (`assets/Fonts/*.woff2`)
   - Bilingual Switcher Helper: `tokens/ds-i18n.js`
3. **Bilingual Brand Book**:
   - Chinese (`zh-Hans-US` governance): `docs/`
   - English (`en-US` governance): `docs/en/`
4. **Brand Evidence & Dossier**:
   - Manifest: `brand-archive/manifest.json`
   - Official Materials: `brand-archive/official-materials.md` and `brand-archive/en/official-materials.md`
   - Strategic Dossier: `brand-archive/third-party-dossier.md` and `brand-archive/en/third-party-dossier.md`
5. **Interactive Viewers & Candidates**:
   - Standalone Bilingual System Viewer: `index.html` (`?lang=en` / `?lang=zh`)
   - Baseline V1 Structural Specimen: `candidates/baseline_v1/specimen.html`
   - Flagship V2 Interactive Specimen: `candidates/optimized_v2/specimen.html`

## 3. Locked Visual DNA

| Property | Locked Value |
| --- | --- |
| Primary Page Ground | `#F5F2ED` |
| Card / Elevated Surface | `#FFFFFF` |
| Elevated Surface / Footer | `#FCFBFA` / `#53443C` (`#EBE2D8` small chips only) |
| Primary / Secondary Ink | `#53443C` / `#666564` |
| Primary Action Fill / Text | `#53443C` / `#FFFFFF` |
| Button / Card Corner Radius | `999px` / `20px` |
| Display / Body / CJK Fonts | `Mulish` / `Archivo` / `Noto Sans SC` |
| Elevation & Shadow Rule | Soft warm-walnut elevation (`0 2px 10px rgba(83,68,60,0.06)`) on #FFFFFF 20px cards and #FCFBFA overlays over #F5F2ED warm-linen ground and #FCFBFA clean elevated surfaces (#EBE2D8 restricted to small-area chips/callouts, never alternating section bands). |

## 4. Commercial & Legal Guardrails

- **primaryCta**: PDP primary button is `Add to Cart` or `Add to Cart · $1,299` / `加入购物车` or `加入购物车 · $1,299` (`999px` pill, `#53443C` walnut fill, matching `wjshomestore.com` and `tokens.json`; `02-language-en.md` also permits sentence-case `Add to cart`). Homepage hero CTA is `Shop sofas` / `选购沙发`; cart CTA is `Check out` / `去结算`. Never write `Add to Bag`, all-caps `ADD TO CART`, or `加入购物袋`.
- **shipping**: Free standard shipping to the continental US and US territories (excludes APO/FPO/DPO; no white-glove service). Ships within 2 business days; sofas arrive in 7-15 business days by LTL freight (smaller parcel items in 5-8 business days).
- **returns**: 30-day returns from delivery on unused, unassembled items in original packaging; buyer pays return shipping (~$60-$80/seat) for non-quality returns. Report transit damage within 7 days. Never promise 30-day home trial or free returns.
- **warranty**: 2-year limited warranty (never promise 5-year or lifetime warranty).
- **careAndCertifications**: Removable washable covers apply to select series only; state `machine-washable` only when specified on the care label. Never state `OEKO-TEX` or free swatch programs without verified documentation.
- **valueOrder**: Always present benefits in locked sequence: 1. Family deep comfort -> 2. Removable washable covers on select series (follow care label) -> 3. Modular layout rearrangement & storage (never promise buying single add-on seats later).

## 5. Non-Negotiable Redlines

- Never invert the selling-point hierarchy: 1. Comfort -> 2. Removable washable covers on select series (follow care label) -> 3. Modular layout rearrangement & storage.
- Primary CTA is locked to `Add to Cart` / `加入购物车` (`#53443C` walnut `999px` pill); never write `Add to Bag` / `加入购物袋` or all-caps button labels.
- Use locked 18-color tokens: `#53443C` primary ink and CTA, `#666564` secondary ink, `#F5F2ED` canvas, `#EBE2D8` small-area chip/callout only (never alternating section bands), `#FCFBFA` elevated surface, `#FFFFFF` `20px` cards (`14px` inputs); reserve `#D35C1A` strictly for verified sale badges and prices.
- State accurate LTL freight fulfillment (`2` business days dispatch + `7-15` business days by freight for sofas, `5-8` business days for parcels) and never promise `30-Day Home Trial`, `Free swatches`, `OEKO-TEX`, steel latches, or single-seat expansion.
- Use polite `您` across storefront, checkout, support, and policy pages (`你` only on RedNote/WeChat social posts); distinguish Overall Depth (`39.3"`) from Seat Depth (`25.59"`).

## 6. Nine Canonical Page Blueprints

| Blueprint ID | Primary Specimen (`en-US`) | Localized Specimen (`zh-Hans-US`) | Implementation Notes |
| --- | --- | --- | --- |
| `PageHome` | `preview/PageHome.html` | `preview/PageHomeZh.html` | Everyday (`PageHome`), Black Friday (`PageHomeBF`), mobile (`PageHomeMobile`), and `zh-Hans-US` (`PageHomeZh`) editions. |
| `PageCategoryHub` | `preview/PagePLP.html` | `preview/PagePLPZh.html` | Sectional, Sofa (`Deluxe Cloud`, `Matrix`, `Essential`), Dining Table, Coffee Table, Console, and Slipcover category hub. |
| `PagePLPWithFacetDrawer` | `preview/PagePLP.html` | `preview/PagePLPZh.html` | Desktop (`PagePLP`), mobile (`PagePLPMobile`), and localized (`PagePLPZh`) collection filtering. |
| `PagePDPFullLongScroll` | `preview/PagePDP.html` | `preview/PagePDPZh.html` | Full long-scroll `Deluxe Cloud` / `Matrix` PDP with `Add to Cart` primary CTA in desktop, mobile, and `zh-Hans-US`. |
| `CartDrawer` | `preview/AddedToCart.html` | `preview/PageCartZh.html` | Slide-over `AddedToCart` drawer plus full `PageCart` / `PageCartMobile` / `PageCartZh` using `Check out` / `去结算`. |
| `PageTradeOrConsultation` | `preview/BrandOnePage.html` | `preview/PageHomeZh.html` | Family room layout and fabric care guidance routed through WJS customer care. |
| `PageEditorialLookbook` | `preview/ShopTheLook.html` | `preview/PageHomeZh.html` | Living-room layout rearrangements (Movie Night, Family Gathering, Chaise Lounge) using existing modular pieces. |
| `PageCraftsmanshipStory` | `preview/KeyFacts.html` | `preview/Steps.html` | Cushion comfort cross-section paired with zip-off cover care instructions per care label. |
| `PageFreeSwatchesStudio` | `preview/SwatchPicker.html` | `preview/SwatchPicker.html` | Tactile fabric comparison across Chenille, Corduroy, Boucle, and Velvet upholstery options. |

## 7. Bilingual Copy & Typography Checklist (`en-US` & `zh-Hans-US`)

- **Preferred `en-US` Terms**: `Home Is Where Joy Settles`, `Add to Cart`, `Cloud-soft deep comfort`, `Removable washable covers on select series (follow care label)`, `Modular sections rearrange to fit your room layout`
- **Prohibited `en-US` Terms**: `Verified US Buyers`, `Add to Bag`, `30-Day Home Trial`, `Free Return Pickup`, `5-Year Frame Warranty`, `add armless seats`, `Hidden steel latches`
- **Preferred `zh-Hans-US` Terms**: `喜悦安居之处`, `加入购物车`, `云感深坐舒适`, `主力系列配可拆洗沙发套（洗护方式以洗标为准）`, `模块可按客厅动线重新组合摆法`
- **Prohibited `zh-Hans-US` Terms**: `美元`, `美刀`, `包邮`, `亲`, `加入购物袋`, `无理由免费退运`, `30 天居家试用`, `30 天试坐`, `增配单人模块`, `5 年质保`
- **Imperial Furniture Units**: Always format inches with `"` and feet with `'` (for example `96"W x 38"D x 30"H` and `12' x 14'` room size). Always state Overall Depth separately from Inside Seat Depth (`22"` to `28"`).

---

## Machine Replication Contract (`ai-replication-contract.json` Core)

```json
{
  "schemaVersion": "4.0.0",
  "brand": {
    "key": "wjs",
    "folder": "12_WJS_Home",
    "name": "WJS Home",
    "domain": "wjshomestore.com",
    "siteUrl": "https://wjshomestore.com",
    "isOwnBrand": true,
    "bmTrack": "BM0",
    "category": "Family Comfort Sofa & Home Living DTC",
    "categoryZh": "美国家庭舒适沙发与客厅家具直营 DTC",
    "publicPriceAnchor": "Public storefront catalog pricing (Sereno 26 modular layouts $359-$2,789; core L-shape $1,359)"
  },
  "businessModel": {
    "en": "Family Comfort Sofa & Multi-Category Home Living DTC",
    "zh": "美国家庭舒适沙发与多品类客厅家具直营 DTC 独立站",
    "positioning": "Home Is Where Joy Settles (`Where Joy Settles` / `喜悦安居之处`): approachable US family home living prioritizing sink-in comfort first, removable washable covers on select series second (follow care label), and modular layout rearrangement or hidden storage third (`Deluxe Cloud`, `Matrix`, non-modular `Essential`, sintered-stone dining tables, coffee tables, media consoles, and slipcovers)."
  },
  "visualDna": {
    "bgCanvas": "#F5F2ED",
    "bgSurface": "#FFFFFF",
    "bgElevated": "#FCFBFA",
    "bgBand": "#FCFBFA",
    "bgFooter": "#53443C",
    "inkPrimary": "#53443C",
    "inkSecondary": "#666564",
    "inkMuted": "#666564",
    "borderSubtle": "#E8E3DC",
    "actionPrimaryBg": "#53443C",
    "actionPrimaryFg": "#FFFFFF",
    "radiusButton": "999px",
    "radiusCard": "20px",
    "radiusInput": "14px",
    "shadowPolicy": "Soft warm-walnut elevation (`0 2px 10px rgba(83,68,60,0.06)`) on #FFFFFF 20px cards and #FCFBFA clean elevated surfaces over #F5F2ED warm-linen ground (#EBE2D8 restricted to small-area chips/callouts, never alternating section bands).",
    "fontDisplay": "Mulish",
    "fontBody": "Archivo",
    "fontCjk": "Noto Sans SC",
    "bgAccentSubtle": "#EBE2D8"
  },
  "commercialPolicies": {
    "primaryCta": "PDP primary button is `Add to Cart` or `Add to Cart · $1,299` / `加入购物车` or `加入购物车 · $1,299` (`999px` pill, `#53443C` walnut fill, matching `wjshomestore.com` and `tokens.json`; `02-language-en.md` also permits sentence-case `Add to cart`). Homepage hero CTA is `Shop sofas` / `选购沙发`; cart CTA is `Check out` / `去结算`. Never write `Add to Bag`, all-caps `ADD TO CART`, or `加入购物袋`.",
    "shipping": "Free standard shipping to the continental US and US territories (excludes APO/FPO/DPO; no white-glove service). Ships within 2 business days; sofas arrive in 7-15 business days by LTL freight (smaller parcel items in 5-8 business days).",
    "returns": "30-day returns from delivery on unused, unassembled items in original packaging; buyer pays return shipping (~$60-$80/seat) for non-quality returns. Report transit damage within 7 days. Never promise 30-day home trial or free returns.",
    "warranty": "2-year limited warranty (never promise 5-year or lifetime warranty).",
    "careAndCertifications": "Removable washable covers apply to select series only; state `machine-washable` only when specified on the care label. Never state `OEKO-TEX` or free swatch programs without verified documentation.",
    "valueOrder": "Always present benefits in locked sequence: 1. Family deep comfort -> 2. Removable washable covers on select series (follow care label) -> 3. Modular layout rearrangement & storage (never promise buying single add-on seats later)."
  },
  "nonNegotiableRedlines": [
    "Never invert the selling-point hierarchy: 1. Comfort -> 2. Removable washable covers on select series (follow care label) -> 3. Modular layout rearrangement & storage.",
    "Primary CTA is locked to `Add to Cart` / `加入购物车` (`#53443C` walnut `999px` pill); never write `Add to Bag` / `加入购物袋` or all-caps button labels.",
    "Use locked 18-color tokens: `#53443C` primary ink and CTA, `#666564` secondary ink, `#F5F2ED` canvas, `#EBE2D8` small-area chip/callout only (never alternating section bands), `#FCFBFA` elevated surface, `#FFFFFF` `20px` cards (`14px` inputs); reserve `#D35C1A` strictly for verified sale badges and prices.",
    "State accurate LTL freight fulfillment (`2` business days dispatch + `7-15` business days by freight for sofas, `5-8` business days for parcels) and never promise `30-Day Home Trial`, `Free swatches`, `OEKO-TEX`, steel latches, or single-seat expansion.",
    "Use polite `您` across storefront, checkout, support, and policy pages (`你` only on RedNote/WeChat social posts); distinguish Overall Depth (`39.3\"`) from Seat Depth (`25.59\"`)."
  ],
  "copyLexicon": {
    "preferredEn": [
      "Home Is Where Joy Settles",
      "Add to Cart",
      "Cloud-soft deep comfort",
      "Removable washable covers on select series (follow care label)",
      "Modular sections rearrange to fit your room layout"
    ],
    "bannedEn": [
      "Verified US Buyers",
      "Add to Bag",
      "30-Day Home Trial",
      "Free Return Pickup",
      "5-Year Frame Warranty",
      "add armless seats",
      "Hidden steel latches"
    ],
    "preferredZh": [
      "喜悦安居之处",
      "加入购物车",
      "云感深坐舒适",
      "主力系列配可拆洗沙发套（洗护方式以洗标为准）",
      "模块可按客厅动线重新组合摆法"
    ],
    "bannedZh": [
      "美元",
      "美刀",
      "包邮",
      "亲",
      "加入购物袋",
      "无理由免费退运",
      "30 天居家试用",
      "30 天试坐",
      "增配单人模块",
      "5 年质保"
    ]
  },
  "perceptualAndMotionPhysics": {
    "schemaRevision": "4.0.0",
    "colorSpace": "OKLCH (Bjorn Ottosson 2020 perceptual cylindrical space)",
    "oklchPalette": {
      "bgCanvas": {
        "hex": "#F5F2ED",
        "l": 0.9621,
        "c": 0.0074,
        "h": 80.72,
        "css": "oklch(0.9621 0.0074 80.72)",
        "isAchromatic": false
      },
      "bgSurface": {
        "hex": "#FFFFFF",
        "l": 1.0,
        "c": 0.0,
        "h": 0.0,
        "css": "oklch(1.0000 0.0000 0.00)",
        "isAchromatic": true
      },
      "bgSubtle": {
        "hex": "#EBE2D8",
        "l": 0.9172,
        "c": 0.0167,
        "h": 70.52,
        "css": "oklch(0.9172 0.0167 70.52)",
        "isAchromatic": false
      },
      "textPrimary": {
        "hex": "#53443C",
        "l": 0.3998,
        "c": 0.0246,
        "h": 49.69,
        "css": "oklch(0.3998 0.0246 49.69)",
        "isAchromatic": false
      },
      "textSecondary": {
        "hex": "#666564",
        "l": 0.5073,
        "c": 0.002,
        "h": 67.78,
        "css": "oklch(0.5073 0.0020 67.78)",
        "isAchromatic": false
      },
      "textMuted": {
        "hex": "#6E6E6E",
        "l": 0.5382,
        "c": 0.0,
        "h": 0.0,
        "css": "oklch(0.5382 0.0000 0.00)",
        "isAchromatic": true
      },
      "borderSubtle": {
        "hex": "#E8E3DC",
        "l": 0.9178,
        "c": 0.0109,
        "h": 76.59,
        "css": "oklch(0.9178 0.0109 76.59)",
        "isAchromatic": false
      },
      "ctaBg": {
        "hex": "#53443C",
        "l": 0.3998,
        "c": 0.0246,
        "h": 49.69,
        "css": "oklch(0.3998 0.0246 49.69)",
        "isAchromatic": false
      },
      "ctaText": {
        "hex": "#FFFFFF",
        "l": 1.0,
        "c": 0.0,
        "h": 0.0,
        "css": "oklch(1.0000 0.0000 0.00)",
        "isAchromatic": true
      },
      "accent": {
        "hex": "#53443C",
        "l": 0.3998,
        "c": 0.0246,
        "h": 49.69,
        "css": "oklch(0.3998 0.0246 49.69)",
        "isAchromatic": false
      },
      "footerBg": {
        "hex": "#53443C",
        "l": 0.3998,
        "c": 0.0246,
        "h": 49.69,
        "css": "oklch(0.3998 0.0246 49.69)",
        "isAchromatic": false
      },
      "footerText": {
        "hex": "#FFFFFF",
        "l": 1.0,
        "c": 0.0,
        "h": 0.0,
        "css": "oklch(1.0000 0.0000 0.00)",
        "isAchromatic": true
      }
    },
    "canvasToleranceGate": {
      "targetHex": "#F5F2ED",
      "targetOklch": "oklch(0.9621 0.0074 80.72)",
      "maxAbsDeltaL": 0.03,
      "maxAbsDeltaC": 0.02
    },
    "contrastMatrix": {
      "algorithm": "APCA-W3 (0.0.98G-4g) + WCAG 2.1 Relative Luminance",
      "pairs": {
        "bodyOnCanvas": {
          "role": "Editorial body & headings on primary canvas",
          "foregroundHex": "#53443C",
          "backgroundHex": "#F5F2ED",
          "foregroundOklch": "oklch(0.3998 0.0246 49.69)",
          "backgroundOklch": "oklch(0.9621 0.0074 80.72)",
          "apcaLc": 83.87,
          "apcaAbsLc": 83.87,
          "apcaPolarity": "BoW (dark-on-light)",
          "apcaTargetAbsLc": 75.0,
          "apcaPasses": true,
          "wcag21Ratio": 8.32
        },
        "bodyOnSurface": {
          "role": "Card & specification copy on secondary surface",
          "foregroundHex": "#53443C",
          "backgroundHex": "#FFFFFF",
          "foregroundOklch": "oklch(0.3998 0.0246 49.69)",
          "backgroundOklch": "oklch(1.0000 0.0000 0.00)",
          "apcaLc": 91.45,
          "apcaAbsLc": 91.45,
          "apcaPolarity": "BoW (dark-on-light)",
          "apcaTargetAbsLc": 75.0,
          "apcaPasses": true,
          "wcag21Ratio": 9.29
        },
        "secondaryOnCanvas": {
          "role": "Metadata & dimension captions on primary canvas",
          "foregroundHex": "#666564",
          "backgroundHex": "#F5F2ED",
          "foregroundOklch": "oklch(0.5073 0.0020 67.78)",
          "backgroundOklch": "oklch(0.9621 0.0074 80.72)",
          "apcaLc": 71.55,
          "apcaAbsLc": 71.55,
          "apcaPolarity": "BoW (dark-on-light)",
          "apcaTargetAbsLc": 55.0,
          "apcaPasses": true,
          "wcag21Ratio": 5.21
        },
        "ctaLabelOnFill": {
          "role": "Primary CTA button label on solid CTA fill",
          "foregroundHex": "#FFFFFF",
          "backgroundHex": "#53443C",
          "foregroundOklch": "oklch(1.0000 0.0000 0.00)",
          "backgroundOklch": "oklch(0.3998 0.0246 49.69)",
          "apcaLc": -95.76,
          "apcaAbsLc": 95.76,
          "apcaPolarity": "WoB (light-on-dark)",
          "apcaTargetAbsLc": 60.0,
          "apcaPasses": true,
          "wcag21Ratio": 9.29
        },
        "footerLabelOnGround": {
          "role": "Footer navigation copy on footer ground",
          "foregroundHex": "#FFFFFF",
          "backgroundHex": "#53443C",
          "foregroundOklch": "oklch(1.0000 0.0000 0.00)",
          "backgroundOklch": "oklch(0.3998 0.0246 49.69)",
          "apcaLc": -95.76,
          "apcaAbsLc": 95.76,
          "apcaPolarity": "WoB (light-on-dark)",
          "apcaTargetAbsLc": 60.0,
          "apcaPasses": true,
          "wcag21Ratio": 9.29
        }
      },
      "cvdDistinguishability": {
        "deuteranopiaCtaPair": {
          "ctaBgSimHex": "#4B483C",
          "ctaFgSimHex": "#FFFFFF",
          "apcaAbsLcUnderDeuteranopia": 95.48,
          "ctaVsCanvasDeltaEOk": 0.5626
        },
        "protanopiaCtaPair": {
          "ctaBgSimHex": "#48453B",
          "ctaFgSimHex": "#FFFFFF",
          "apcaAbsLcUnderProtanopia": 96.46,
          "ctaVsCanvasDeltaEOk": 0.5705
        }
      }
    },
    "typographyOpticalMetrics": {
      "bundledWoff2Count": 24,
      "bundledWoff2Files": [
        {
          "file": "assets/Fonts/archivo-latin-300-normal.woff2",
          "bytes": 14444,
          "sha256Prefix": "24a97635cc12"
        },
        {
          "file": "assets/Fonts/archivo-latin-400-normal.woff2",
          "bytes": 14700,
          "sha256Prefix": "07f9160163da"
        },
        {
          "file": "assets/Fonts/archivo-latin-500-normal.woff2",
          "bytes": 14600,
          "sha256Prefix": "ab74eca5ad11"
        },
        {
          "file": "assets/Fonts/archivo-latin-600-normal.woff2",
          "bytes": 34928,
          "sha256Prefix": "8f704806dbed"
        },
        {
          "file": "assets/Fonts/archivo-latin-700-normal.woff2",
          "bytes": 34928,
          "sha256Prefix": "8f704806dbed"
        },
        {
          "file": "assets/Fonts/archivo-latin-ext-300-normal.woff2",
          "bytes": 32608,
          "sha256Prefix": "ff4f17d21930"
        },
        {
          "file": "assets/Fonts/archivo-latin-ext-400-normal.woff2",
          "bytes": 32608,
          "sha256Prefix": "ff4f17d21930"
        },
        {
          "file": "assets/Fonts/archivo-latin-ext-500-normal.woff2",
          "bytes": 32608,
          "sha256Prefix": "ff4f17d21930"
        },
        {
          "file": "assets/Fonts/archivo-latin-ext-600-normal.woff2",
          "bytes": 32608,
          "sha256Prefix": "ff4f17d21930"
        },
        {
          "file": "assets/Fonts/archivo-latin-ext-700-normal.woff2",
          "bytes": 32608,
          "sha256Prefix": "ff4f17d21930"
        },
        {
          "file": "assets/Fonts/jetbrains-mono-latin-400-normal.woff2",
          "bytes": 31432,
          "sha256Prefix": "83c005d49d8a"
        },
        {
          "file": "assets/Fonts/jetbrains-mono-latin-500-normal.woff2",
          "bytes": 31432,
          "sha256Prefix": "83c005d49d8a"
        },
        {
          "file": "assets/Fonts/jetbrains-mono-latin-600-normal.woff2",
          "bytes": 31432,
          "sha256Prefix": "83c005d49d8a"
        },
        {
          "file": "assets/Fonts/jetbrains-mono-latin-ext-400-normal.woff2",
          "bytes": 11624,
          "sha256Prefix": "db5ff4db83e5"
        },
        {
          "file": "assets/Fonts/jetbrains-mono-latin-ext-500-normal.woff2",
          "bytes": 11624,
          "sha256Prefix": "db5ff4db83e5"
        },
        {
          "file": "assets/Fonts/jetbrains-mono-latin-ext-600-normal.woff2",
          "bytes": 11624,
          "sha256Prefix": "db5ff4db83e5"
        },
        {
          "file": "assets/Fonts/mulish-latin-500-normal.woff2",
          "bytes": 29968,
          "sha256Prefix": "8d1d33d6beea"
        },
        {
          "file": "assets/Fonts/mulish-latin-600-normal.woff2",
          "bytes": 29968,
          "sha256Prefix": "8d1d33d6beea"
        },
        {
          "file": "assets/Fonts/mulish-latin-700-normal.woff2",
          "bytes": 13504,
          "sha256Prefix": "72da494867e9"
        },
        {
          "file": "assets/Fonts/mulish-latin-800-normal.woff2",
          "bytes": 29968,
          "sha256Prefix": "8d1d33d6beea"
        },
        {
          "file": "assets/Fonts/mulish-latin-ext-500-normal.woff2",
          "bytes": 26820,
          "sha256Prefix": "e1ccc8579a04"
        },
        {
          "file": "assets/Fonts/mulish-latin-ext-600-normal.woff2",
          "bytes": 26820,
          "sha256Prefix": "e1ccc8579a04"
        },
        {
          "file": "assets/Fonts/mulish-latin-ext-700-normal.woff2",
          "bytes": 26820,
          "sha256Prefix": "e1ccc8579a04"
        },
        {
          "file": "assets/Fonts/mulish-latin-ext-800-normal.woff2",
          "bytes": 26820,
          "sha256Prefix": "e1ccc8579a04"
        }
      ],
      "display": {
        "fileName": "mulish-latin-500-normal.woff2",
        "byteSize": 29968,
        "sha256Prefix": "8d1d33d6beea",
        "family": "Mulish ExtraLight",
        "unitsPerEm": 1000,
        "sxHeight": 500,
        "sCapHeight": 705,
        "sTypoAscender": 1005,
        "sTypoDescender": -250,
        "xHeightRatio": 0.5,
        "capHeightRatio": 0.705,
        "cssFontSizeAdjust": "ex-height 0.5000",
        "ascentOverridePct": "100.50%",
        "descentOverridePct": "25.00%",
        "lineGapOverridePct": "0.00%",
        "extractionMethod": "live_woff2_binary_tables",
        "configuredFamily": "Mulish"
      },
      "sans": {
        "fileName": "archivo-latin-300-normal.woff2",
        "byteSize": 14444,
        "sha256Prefix": "24a97635cc12",
        "family": "Archivo SemiBold Light",
        "unitsPerEm": 1000,
        "sxHeight": 526,
        "sCapHeight": 686,
        "sTypoAscender": 878,
        "sTypoDescender": -210,
        "xHeightRatio": 0.526,
        "capHeightRatio": 0.686,
        "cssFontSizeAdjust": "ex-height 0.5260",
        "ascentOverridePct": "87.80%",
        "descentOverridePct": "21.00%",
        "lineGapOverridePct": "0.00%",
        "extractionMethod": "live_woff2_binary_tables",
        "configuredFamily": "Archivo"
      },
      "mono": {
        "fileName": "jetbrains-mono-latin-400-normal.woff2",
        "byteSize": 31432,
        "sha256Prefix": "83c005d49d8a",
        "family": "JetBrains Mono",
        "unitsPerEm": 1000,
        "sxHeight": 550,
        "sCapHeight": 730,
        "sTypoAscender": 1020,
        "sTypoDescender": -300,
        "xHeightRatio": 0.55,
        "capHeightRatio": 0.73,
        "cssFontSizeAdjust": "ex-height 0.5500",
        "ascentOverridePct": "102.00%",
        "descentOverridePct": "30.00%",
        "lineGapOverridePct": "0.00%",
        "extractionMethod": "live_woff2_binary_tables",
        "configuredFamily": "JetBrains Mono"
      },
      "clsTargetMax": 0.01
    },
    "motionPhysics": {
      "archetype": "warm_residential_architectural",
      "archetypeLabelZh": "温润居住空间阻尼动效（稳重自然、零浮夸弹跳）",
      "archetypeLabelEn": "Warm Residential Architectural Motion (Composed Natural Settle)",
      "easePrimary": "cubic-bezier(0.25, 1, 0.5, 1)",
      "easeDrawer": "cubic-bezier(0.22, 1, 0.36, 1)",
      "easeExit": "cubic-bezier(0.4, 0, 1, 1)",
      "durationMicroMs": 160,
      "durationDrawerMs": 320,
      "durationEditorialRevealMs": 500,
      "springOvershootAllowed": false,
      "reducedMotionPolicy": "Honor `@media (prefers-reduced-motion: reduce)` by limiting transitions to <=120ms opacity changes."
    }
  },
  "artDirectionAndOpticalSpec": {
    "archetype": "residential_afternoon_window_light",
    "archetypeLabelZh": "北美住宅午后自然窗光与真实材质肌理光学",
    "archetypeLabelEn": "North American Residential Window Light & True Material Grain Optics",
    "lensFocalLengthMm": "35mm-50mm rectilinear living/dining lens + 85mm upholstery & wood-grain macro",
    "daylightKelvinRange": "4800K-5300K balanced residential window daylight",
    "lightingContrastRatio": "2.4:1 soft directional window key light preserving warm undertones",
    "cameraElevationCm": "105cm-120cm residential eye line with level horizon and vertical wall edges",
    "shadowDiscipline": "Soft grounded room shadows matching window light direction; calm card elevation.",
    "macroTextureShareMin": "25% close-up frames documenting wood joinery, cushion crown, and fabric hand-feel",
    "brandOpticalGuardrail": "Anchor #FFFFFF product cards above #F5F2ED warm cream ground under 4800K-5200K natural window light to highlight walnut timber and washable chenille/linen texture.",
    "fiveShotPdpSequenceEn": [
      "01 Architectural Room Hero",
      "02 Three-Quarter Distortion-Free Silhouette",
      "03 85mm Material Surface & Craft Detail Macro",
      "04 Human Scale & Entryway Clearance Elevation",
      "05 Structural Base & Protective Packaging Detail"
    ],
    "fiveShotPdpSequenceZh": [
      "01 北美真实居住空间主景",
      "02 四分之三零畸变单品体量",
      "03 85mm 表面材质肌理与工艺细节微距",
      "04 人体尺度比例与入户通行净宽立面",
      "05 底部承重结构与包装防护细节"
    ],
    "threeKelvinLightingSimulator": [
      {
        "kelvin": 6500,
        "id": "daylight_6500k",
        "labelEn": "6500K North Daylight",
        "labelZh": "6500K 朝北晴空自然光"
      },
      {
        "kelvin": 4000,
        "id": "gallery_4000k",
        "labelEn": "4000K Gallery Neutral",
        "labelZh": "4000K 展厅中性白光"
      },
      {
        "kelvin": 2700,
        "id": "evening_2700k",
        "labelEn": "2700K Warm Evening",
        "labelZh": "2700K 居家夜间暖光"
      }
    ],
    "positivePromptEn": "Architectural & product photography for WJS Home (wjshomestore.com), canvas ground #F5F2ED (oklch(0.9621 0.0074 80.72)), shot on 35mm-50mm rectilinear living/dining lens + 85mm upholstery & wood-grain macro, 4800K-5300K balanced residential window daylight, 2.4:1 soft directional window key light preserving warm undertones, 105cm-120cm residential eye line with level horizon and vertical wall edges, authentic matte surface texture, zero CGI plastic sheen, zero wide-angle edge distortion. Anchor #FFFFFF product cards above #F5F2ED warm cream ground under 4800K-5200K natural window light to highlight walnut timber and washable chenille/linen texture.",
    "positivePromptZh": "WJS Home（wjshomestore.com）空间与单品光学规范：主画布基准色 #F5F2ED（oklch(0.9621 0.0074 80.72)），采用 35mm-50mm rectilinear living/dining lens + 85mm upholstery & wood-grain macro 焦段，4800K-5300K balanced residential window daylight 照明色温，2.4:1 soft directional window key light preserving warm undertones 光比与 105cm-120cm residential eye line with level horizon and vertical wall edges 机位高度；保留哑光天然材质肌理，严禁塑料反光感、高饱和促销滤镜与广角边缘拉伸。"
  }
}
```

---

## Production CSS Custom Properties (`tokens/tokens.css`)

```css
/* WJS Home — generated from tokens.json */
:root, [data-theme="default"] {
  --global-black: #111111;
  --global-white: #ffffff;
  --global-primary: #a28f79;
  --global-red: #d35c1a;
  --global-secondary: #e7d5bf;
  --bg-white: #fcfbfa;
  --bg-black: #53443c;
  --bg-1: #f5f2ed;
  --bg-2: #ebe2d8;
  --bg-3: #e5d7c5;
  --text-1: #53443c;
  --text-2: #666564;
  --text-3: #c9c9c9;
  --text-4: #dfdfdf;
  --text-white: #ffffff;
  --border-black: #333333;
  --border-1: #e5e2df;
  --border-2: #d6d3d0;
  --surface-page: var(--bg-1);
  --surface-raised: var(--bg-white);
  --surface-card: var(--global-white);
  --surface-section: var(--bg-2);
  --surface-warm: var(--bg-3);
  --surface-sand: var(--global-secondary);
  --surface-inverse: var(--bg-black);
  --fg-primary: var(--text-1);
  --fg-secondary: var(--text-2);
  --fg-placeholder: var(--text-2);
  --fg-disabled: var(--text-4);
  --fg-on-inverse: var(--text-white);
  --fg-on-inverse-secondary: var(--text-3);
  --fg-accent-large: var(--global-primary);
  --link: var(--text-1);
  --action-primary-bg: var(--bg-black);
  --action-primary-fg: var(--text-white);
  --action-primary-hover-bg: var(--border-black);
  --action-primary-active-bg: var(--global-black);
  --action-secondary-fg: var(--text-1);
  --action-secondary-border: var(--text-1);
  --action-secondary-hover-bg: var(--bg-2);
  --action-warm-bg: var(--global-secondary);
  --action-warm-hover-bg: var(--bg-3);
  --action-inverse-bg: var(--bg-1);
  --price-fg: var(--text-1);
  --price-sale-large: var(--global-red);
  --price-compare: var(--text-2);
  --badge-sale-bg: var(--global-red);
  --badge-sale-fg: var(--global-black);
  --badge-new-bg: var(--bg-black);
  --badge-new-fg: var(--text-white);
  --badge-feature-bg: var(--global-secondary);
  --badge-feature-fg: var(--text-1);
  --rating-star: var(--global-primary);
  --control-border: var(--text-2);
  --control-border-hover: var(--text-1);
  --control-border-focus: var(--text-1);
  --control-border-error: var(--global-red);
  --choice-checked: var(--bg-black);
  --divider: var(--border-1);
  --divider-strong: var(--border-2);
  --divider-emphasis: var(--border-black);
  --focus-ring-color: var(--text-1);
  --focus-ring-inverse-color: var(--global-white);
  --feedback-error-accent: var(--global-red);
  --feedback-neutral-accent: var(--text-1);
  --logo-ink: var(--bg-black);
  --logo-ink-inverse: var(--global-white);
  --overlay-scrim: rgba(83, 68, 60, 0.6);
  --overlay-scrim-strong: rgba(83, 68, 60, 0.75);
  --shadow-card: 0 2px 10px rgba(83, 68, 60, 0.06);
  --shadow-soft: 0 6px 24px rgba(83, 68, 60, 0.08);
  --shadow-lift: 0 12px 36px rgba(83, 68, 60, 0.12);
  --focus-ring: 0 0 0 2px #f5f2ed, 0 0 0 4px #53443c;
  --focus-ring-inverse: 0 0 0 2px #53443c, 0 0 0 4px #ffffff;
}
:root {
  --space-4: 4px;
  --space-8: 8px;
  --space-16: 16px;
  --space-24: 24px;
  --space-40: 40px;
  --space-64: 64px;
  --space-96: 96px;
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 20px;
  --radius-xl: 28px;
  --radius-pill: 999px;
  --container-max: 1200px;
  --page-gutter: 40px;
  --page-gutter-t: 24px;
  --page-gutter-m: 16px;
  --section-pad: 64px;
  --section-pad-m: 40px;
  --grid-gap: 24px;
  --grid-gap-m: 16px;
  --bp-max-mobile: 599px;
  --bp-max-tablet: 1023px;
  --control-lg: 48px;
  --control-md: 40px;
  --icon-sm: 16px;
  --icon-md: 20px;
  --icon-lg: 24px;
  --icon-stroke: 2px;
  --dur-fast: 150ms;
  --dur-base: 250ms;
  --ease-soft: cubic-bezier(0.22, 0.61, 0.36, 1);
  --font-title: "Mulish", "Avenir Next", "Segoe UI", Arial, sans-serif;
  --font-text: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --font-zh-title: "Mulish", "PingFang SC", "Hiragino Sans GB", "Source Han Sans SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
  --font-zh-text: "Archivo", "PingFang SC", "Hiragino Sans GB", "Source Han Sans SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
}
.title-28 { font-family: var(--font-title); font-size: 28px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.title-24 { font-family: var(--font-title); font-size: 24px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.title-18 { font-family: var(--font-title); font-size: 18px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.title-16 { font-family: var(--font-title); font-size: 16px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.title-14 { font-family: var(--font-title); font-size: 14px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.body-16 { font-family: var(--font-text); font-size: 16px; line-height: 1.4; font-weight: 400; letter-spacing: 0px; }
.body-14 { font-family: var(--font-text); font-size: 14px; line-height: 1.4; font-weight: 400; letter-spacing: 0px; }
.body-12 { font-family: var(--font-text); font-size: 12px; line-height: 1.4; font-weight: 400; letter-spacing: 0px; }
.zh-title-28 { font-family: var(--font-zh-title); font-size: 28px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.zh-title-24 { font-family: var(--font-zh-title); font-size: 24px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.zh-title-18 { font-family: var(--font-zh-title); font-size: 18px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.zh-title-16 { font-family: var(--font-zh-title); font-size: 16px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.zh-title-14 { font-family: var(--font-zh-title); font-size: 14px; line-height: 1.4; font-weight: 700; letter-spacing: 0px; }
.zh-body-16 { font-family: var(--font-zh-text); font-size: 16px; line-height: 1.7; font-weight: 400; letter-spacing: 0px; }
.zh-body-14 { font-family: var(--font-zh-text); font-size: 14px; line-height: 1.7; font-weight: 400; letter-spacing: 0px; }
.zh-body-12 { font-family: var(--font-zh-text); font-size: 12px; line-height: 1.6; font-weight: 400; letter-spacing: 0px; }
@font-face { font-family: "Mulish"; src: url("../project/fonts/mulish-latin-700-normal.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "Archivo"; src: url("../project/fonts/archivo-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
```

---

## 48-Variable Semantic Bridge (`tokens/semantic-bridge.css`)

```css
/* 12_WJS_Home - Canonical 48-Variable Semantic Bridge (Stage R9 Contract v3.0.0) */
/* Maps locked brand primitives onto the 4 Cross-Brand Design Fusion & AI Replication axes. */
:root {
  /* Axis 1: Space, Canvas & Color Proportion (25 vars) */
  --ds-sem-bg-canvas: #F5F2ED;
  --ds-sem-bg-surface: #FFFFFF;
  --ds-sem-bg-elevated: #FCFBFA;
  --ds-sem-bg-band: #EBE2D8;
  --ds-sem-bg-footer: #53443C;
  --ds-sem-ink-primary: #53443C;
  --ds-sem-ink-secondary: #666564;
  --ds-sem-ink-muted: #666564;
  --ds-sem-ink-on-footer: #FFFFFF;
  --ds-sem-border-hairline: #E5E2DF;
  --ds-sem-border-strong: #333333;
  --ds-sem-action-primary-bg: #53443C;
  --ds-sem-action-primary-fg: #FFFFFF;
  --ds-sem-action-secondary-bg: #FFFFFF;
  --ds-sem-action-secondary-fg: #53443C;
  --ds-sem-accent-brand: #A28F79;
  --ds-sem-status-offer: #D35C1A;
  --ds-sem-status-error: #D35C1A;
  --ds-sem-announcement-bg: #53443C;
  --ds-sem-announcement-fg: #FFFFFF;
  --ds-sem-section-pad-y: 64px;
  --ds-sem-section-pad-x: 40px;
  --ds-sem-container-max: 1200px;
  --ds-sem-grid-gutter: 24px;
  --ds-sem-whitespace-ratio: 0.66;

  /* Axis 2: Typography & Editorial Scale (18 vars) */
  --ds-sem-font-display: "Mulish", "Avenir Next", "Segoe UI", Arial, sans-serif;
  --ds-sem-font-sans: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --ds-sem-font-mono: "JetBrains Mono", "DM Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --ds-sem-font-cjk: "Archivo", "PingFang SC", "Source Han Sans SC", "Noto Sans SC", sans-serif;
  --ds-sem-display-size-desktop: 28px;
  --ds-sem-display-size-mobile: 28px;
  --ds-sem-h2-size: 24px;
  --ds-sem-pdp-title-size: 24px;
  --ds-sem-body-size: 16px;
  --ds-sem-kicker-size: 14px;
  --ds-sem-heading-weight: 700;
  --ds-sem-body-weight: 400;
  --ds-sem-cta-weight: 700;
  --ds-sem-heading-tracking: 0px;
  --ds-sem-cta-tracking: 0px;
  --ds-sem-heading-transform: none;
  --ds-sem-cta-transform: none;
  --ds-sem-measure-prose: 65ch;

  /* Axis 3: Corner Geometry & Control Elevation (7 vars) */
  --ds-sem-radius-btn: 999px;
  --ds-sem-radius-card: 20px;
  --ds-sem-radius-input: 14px;
  --ds-sem-btn-height: 48px;
  --ds-sem-header-height: 68px;
  --ds-sem-card-shadow: 0 2px 10px rgba(83, 68, 60, 0.06);
  --ds-sem-focus-ring: 0 0 0 2px #F5F2ED, 0 0 0 4px #53443C;
}

/* === BEGIN DS-V4 PERCEPTUAL OKLCH, APCA, WOFF2 & MOTION PHYSICS === */
:root {
  /* Perceptual OKLCH Coordinates (WJS Home · Schema v4.0.0) */
  --ds-oklch-canvas: oklch(0.9621 0.0074 80.72);
  --ds-oklch-surface: oklch(1.0000 0.0000 0.00);
  --ds-oklch-subtle: oklch(0.9172 0.0167 70.52);
  --ds-oklch-ink: oklch(0.3998 0.0246 49.69);
  --ds-oklch-ink-secondary: oklch(0.5073 0.0020 67.78);
  --ds-oklch-border: oklch(0.9178 0.0109 76.59);
  --ds-oklch-cta-bg: oklch(0.3998 0.0246 49.69);
  --ds-oklch-cta-ink: oklch(1.0000 0.0000 0.00);
  --ds-oklch-accent: oklch(0.3998 0.0246 49.69);
  --ds-oklch-footer-bg: oklch(0.3998 0.0246 49.69);
  --ds-oklch-footer-ink: oklch(1.0000 0.0000 0.00);

  /* APCA-W3 (0.0.98G-4g) Perceptual Contrast Readouts */
  --ds-apca-body-on-canvas-lc: 83.87;
  --ds-apca-body-on-surface-lc: 91.45;
  --ds-apca-cta-label-lc: -95.76;
  --ds-apca-footer-label-lc: -95.76;

  /* WOFF2 Binary OS/2 Optical x-height Calibration */
  --ds-font-display-x-ratio: 0.5000;
  --ds-font-sans-x-ratio: 0.5260;
  --ds-font-mono-x-ratio: 0.5500;
  --ds-font-size-adjust-display: ex-height 0.5000;
  --ds-font-size-adjust-sans: ex-height 0.5260;

  /* Physical Motion & Photographic Optical Tokens */
  --ds-motion-ease-primary: cubic-bezier(0.25, 1, 0.5, 1);
  --ds-motion-ease-drawer: cubic-bezier(0.22, 1, 0.36, 1);
  --ds-motion-ease-exit: cubic-bezier(0.4, 0, 1, 1);
  --ds-motion-dur-micro: 160ms;
  --ds-motion-dur-drawer: 320ms;
  --ds-motion-dur-reveal: 500ms;
  --ds-optics-kelvin-daylight: 6500K;
  --ds-optics-kelvin-gallery: 4000K;
  --ds-optics-kelvin-evening: 2700K;
  --ds-optics-archetype: "residential_afternoon_window_light";
}
@media (prefers-reduced-motion: reduce) {
  :root {
    --ds-motion-dur-micro: 0ms;
    --ds-motion-dur-drawer: 100ms;
    --ds-motion-dur-reveal: 120ms;
  }
}
/* === END DS-V4 PERCEPTUAL OKLCH, APCA, WOFF2 & MOTION PHYSICS === */
```

---

## Bundled Reference: `docs/01-brand-core.md`

# 01 品牌核心

## 品牌故事

一家人真正待在一起的时间，大多发生在客厅那张沙发上：一起看电影、午睡、孩子跳上跳下、狗占着一角。很多沙发在展厅里好看，搬回家却经不起这样用，好看和耐用常常只能选一个。

WJS Home 从沙发开始回答“家应该是什么感觉”：坐垫软到可以陷进去，沙发套能拉开拿去洗，模块能跟着房间和家里人一起变。Home Is Where Joy Settles：家是喜悦安顿下来的地方。

英文版（About 页、品牌介绍用）：

> Most of a family's time together happens on the living room sofa, from movie nights and naps to homework and the dog who claims the corner. Plenty of sofas look great in a showroom and struggle at home.
>
> WJS Home started there. We make sofas with cushions you can sink into, covers that zip off for washing and sections you can move around when your room or your family changes. Home Is Where Joy Settles.

## 价值主张与承诺

| 项 | 写法 | 用法 |
|---|---|---|
| 价值主张 | Home Is Where Joy Settles | 首屏、页脚、邮件页头页脚、包装、品牌介绍。大小写和措辞固定，不写变体（Where Joy Lives、Let joy settle、Home of Joy） |
| 简写 | Where Joy Settles | 空间小的位置：社媒头像下、包装侧面、短标语。WJS 三个字母就来自这句话 |
| 中文 | 喜悦安居之处 | 只用于中文触点，不写“让喜悦安顿下来”等变体 |
| 品牌承诺 | Comfort you can sink into, practicality your home can rely on. | 品牌介绍、About 页、招聘与合作材料。不放进广告标题 |
| 品牌名 | WJS Home | WJS 三个大写字母，空格，Home 首字母大写。不写 WJShome、Wjs Home、WJS HOME、WJS Furniture；中文里也不翻译 |

## 定位

**一句话定位：** 给有孩子、有宠物的美国家庭做的大众中档沙发，坐着舒服，套子能洗，模块能调。

**定位陈述（内部用）：** For American families with kids and pets who want a sofa that feels good and holds up to daily life, WJS Home makes cloud-soft sofas with covers that zip off for washing and sections you can rearrange, at a price most families can plan for.

**价位：** 转角沙发大约 $800–$2,200。文案和视觉都不往奢华走（不写 luxury、premium、designer），也不往最低价走（不写 cheapest、lowest price、budget）。

## 核心卖点：为家庭打造的舒适

三个理由，顺序固定。一篇文案、一个首屏、一组广告，都先写舒适。

| 顺序 | 理由 | 可以这样说 | 条件 | 不能说 |
|---|---|---|---|---|
| 1 | 舒适 | Cloud-soft seats you can sink into. / Sink in after a long day. / Deep seats with room to curl up. | 填充材料、座深以商品资料为准 | ultimate comfort、world's softest、orthopedic、medical-grade |
| 2 | 可拆洗 | Covers zip off for washing. / Spilled juice? Unzip the cover and wash it. | 只用于沙发套可拆洗的商品；machine-washable 只在洗标写明机洗时用 | stain-proof、pet-proof、scratch-proof、looks new forever |
| 3 | 模块化 | Rearrange the sections to fit your room. / Pull the chaise out for movie night. | 只用于能拆开、换位置的商品；只说手上这套怎么摆，不承诺以后单买加件 | fits any home、endless layouts、add pieces anytime、the only sofa you'll ever need |
| 补充 | 储物 | Storage ottomans keep blankets and toys out of sight. | 只用于带储物的款 | hidden storage for everything |

**质保边界：** 2 年有限质保只管材料和做工缺陷。洒漏、宠物、意外造成的损坏，面料褪色起球，坐垫自然变软，都不在质保内。所以文案可以写“沙发套能拆下来洗”，不能写或暗示“宠物抓了、果汁洒了，质保包修”。

## 为谁

| 客群 | 他们在意什么 | WJS Home 用什么回答 |
|---|---|---|
| 有孩子的家庭 | 客厅是全家的中心；想少操心，一家人能挤在一起放松 | 深座和软垫；沙发套能拆洗；能拼长的组合 |
| 养宠物的家庭 | 宠物也是家人，要一起舒服，也要好打理 | 沙发套能拆洗。不说耐抓、防毛，没有测试依据 |
| 务实的居家者 | 不为空概念多付钱，要在舒适、耐用、预算之间选得明白 | 三个系列按空间和预算分开；尺寸、材料、交期写清楚 |

按生活状态写人，不按年龄段写。

## 信息顺序

1. **情感：** 先用价值主张或一个家里的画面，让人感到安心和开心。
2. **证据：** 再用一个具体场景说明一个理由（舒适、可拆洗或模块化）。
3. **行动：** 最后给一个清楚的下一步：Shop sofas、Find your size、Add to cart。

一个区块只讲一个理由。首屏不同时塞三个理由。

## 产品系列

| 系列 | 是什么 | 主打理由 | 中文 |
|---|---|---|---|
| Deluxe Cloud | 深座、软垫的云朵转角沙发，部分款带储物脚凳 | 舒适 → 可拆洗 → 储物 | Deluxe Cloud 云朵转角沙发 |
| Matrix | 能拆开、换个摆法的组合沙发和转角沙发 | 舒适 → 可拆洗 → 模块化 | Matrix 模块沙发 |
| Essential | 小空间用的单人沙发、紧凑沙发 | 舒适 → 尺寸合适 | Essential 小空间沙发 |

沙发套、脚凳等配件写成“For [系列]”，例如 Washable Cover for Deluxe Cloud。

## 命名规则

| 位置 | 公式 | 例子 |
|---|---|---|
| 显示名（商品卡、商品页标题、购物车、邮件） | 系列 + 款名 + 形状 + 品类 | Deluxe Cloud Sereno L-Shaped Sectional |
| 第二行（规格） | 座位 · 件数 · 面料 · 颜色 | 3-seater · 4 pieces with ottoman · Cotton-linen · Khaki |
| 页面标题和商品 feed（SEO） | 显示名 + 关键规格 + 卖点 + 品牌 | Deluxe Cloud Sereno 3-Seater L-Shaped Storage Sectional with Ottoman, Washable Covers, Khaki \| WJS Home |
| 中文显示名 | 系列 + 款名 + 中文形状和品类 | Deluxe Cloud Sereno L 形转角沙发 |

- 每张沙发都归入一个系列。面料和颜色不做系列名：不写 Corduroy Series、Cloud Velvet Collection。
- 款名用好读的英文词（Sereno、Orris、Serra）。内部型号（如 SF133）不出现在顾客看得到的地方。
- 顾客看得到的名字不用方括号、竖线、全大写，也不写 Best Seller、Luxury。
- 形状用 L-Shaped、U-Shaped、Chaise、Loveseat、Single；品类用 Sectional、Sofa、Ottoman。

## 不做的事

1. 不讲奢华，也不拼最低价。
2. 模块化不做主角，不单独占首屏；不用 Smart Comfort（这是同公司其他品牌的主张）。
3. 没有依据的服务承诺不写：不写 fast delivery、white glove、24/7 support、free returns。
4. 没有证据的健康和环保主张不写：不写 eco-friendly、non-toxic、hypoallergenic。
5. 不用 emoji、全大写、催促语（Hurry、Last chance、Don't miss out）。
6. 不做 Trade / B2B 采购，不做整屋设计服务。
7. 不替顾客宣布感受：不写 You'll love it、We know exactly how you feel。

## WJS Home 一眼能认出来的地方

这些规则用来和同公司其他品牌分开，所有物料都要守住：

- 按钮一律胶囊形（`radius-pill`），不用直角按钮。
- 标题只用 Mulish Bold。
- 胡桃色 #53443C 是唯一的深色；不用纯黑、深棕巧克力色做大面积底。
- 红色只用于促销和错误，不做主按钮和装饰。
- 版面靠照片、白色卡片和留白；辅助色不铺大面积背景或色块；不用巧克力块、格子、网格图案。
- 照片里有人住：家人、宠物、毯子、书。不拍空荡的样板间。

---

## Bundled Reference: `docs/en/01-brand-core.md`

# 01 Brand Core

## Brand Story

Most of the time a family really spends together happens on the living room sofa: watching movies, napping, kids bouncing on and off, the dog claiming a corner. Many sofas look good in a showroom but can't take that kind of use once they're home. Often you can only have one: good looks or durability.

WJS Home starts with the sofa to answer "What should home feel like?" Cushions are soft enough to sink into, covers unzip and go in the wash, and sections change along with the room and the people in it. Home Is Where Joy Settles: home is the place where joy settles in.

English version (for the About page and brand introductions):

> Most of a family's time together happens on the living room sofa, from movie nights and naps to homework and the dog who claims the corner. Plenty of sofas look great in a showroom and struggle at home.
>
> WJS Home started there. We make sofas with cushions you can sink into, covers that zip off for washing and sections you can move around when your room or your family changes. Home Is Where Joy Settles.

## Value Proposition and Promise

| Item | Wording | Usage |
|---|---|---|
| Value proposition | Home Is Where Joy Settles | Hero sections, footers, email headers and footers, packaging, brand introductions. Capitalization and wording are fixed; no variants (Where Joy Lives, Let joy settle, Home of Joy) |
| Short form | Where Joy Settles | Tight spaces: under the social profile picture, on the side of packaging, short taglines. The letters WJS come from this phrase |
| Chinese | Locked 6-character Chinese tagline (see Chapter 03) | Chinese-language touchpoints only; zero reworded variants |
| Brand promise | Comfort you can sink into, practicality your home can rely on. | Brand introductions, the About page, recruiting and partnership materials. Not used in ad headlines |
| Brand name | WJS Home | WJS in three capital letters, a space, then Home with a capital H. Never WJShome, Wjs Home, WJS HOME or WJS Furniture; not translated in Chinese either |

## Positioning

**One-line positioning:** Mass mid-market sofas for American families with kids and pets: comfortable to sit on, with washable covers and sections you can rearrange.

**Positioning statement (internal):** For American families with kids and pets who want a sofa that feels good and holds up to daily life, WJS Home makes cloud-soft sofas with covers that zip off for washing and sections you can rearrange, at a price most families can plan for.

**Price tier:** Sectionals run about $800–$2,200. Neither copy nor visuals lean toward luxury (no luxury, premium or designer) or toward the lowest price (no cheapest, lowest price or budget).

## Core Selling Point: Comfort Made for Families

Three reasons, in a fixed order. Every piece of copy, every hero and every ad set leads with comfort.

| Order | Reason | You can say | Conditions | Don't say |
|---|---|---|---|---|
| 1 | Comfort | Cloud-soft seats you can sink into. / Sink in after a long day. / Deep seats with room to curl up. | Fill materials and seat depth must match the product data | ultimate comfort, world's softest, orthopedic, medical-grade |
| 2 | Washable | Covers zip off for washing. / Spilled juice? Unzip the cover and wash it. | Only for products with removable, washable covers; use machine-washable only when the care label says machine wash | stain-proof, pet-proof, scratch-proof, looks new forever |
| 3 | Modular | Rearrange the sections to fit your room. / Pull the chaise out for movie night. | Only for products whose sections come apart and change places; talk only about arranging the set the customer has, and don't promise add-on pieces sold separately later | fits any home, endless layouts, add pieces anytime, the only sofa you'll ever need |
| Extra | Storage | Storage ottomans keep blankets and toys out of sight. | Only for styles with storage | hidden storage for everything |

**Warranty limits:** The 2-year limited warranty covers only defects in materials and workmanship. It doesn't cover damage from spills, pets or accidents; fabric fading or pilling; or natural softening of the cushions. So copy can say "the covers come off for washing," but it can't say or imply "if the pet scratches it or the juice spills, the warranty covers the repair."

## Who It's For

| Audience | What they care about | How WJS Home answers |
|---|---|---|
| Families with kids | The living room is the center of family life; they want less to worry about and room for everyone to pile in and relax | Deep seats and soft cushions; covers that come off for washing; configurations that can be extended |
| Families with pets | Pets are family too; everyone should be comfortable, and the sofa should be easy to keep clean | Covers that come off for washing. Don't claim scratch resistance or pet-hair resistance; there's no test data to back it up |
| Practical households | Won't pay extra for empty concepts; want to choose clearly among comfort, durability and budget | Three series split by space and budget; sizes, materials and delivery times spelled out |

Describe people by their stage of life, not by age group.

## Message Order

1. **Emotion:** Start with the value proposition or a scene at home that makes people feel at ease and happy.
2. **Proof:** Then use one specific scene to show one reason (comfort, washable or modular).
3. **Action:** End with one clear next step: Shop sofas, Find your size, Add to cart.

One section covers one reason. Don't pack all three reasons into the hero.

## Product Series

| Series | What it is | Lead reasons | Chinese |
|---|---|---|---|
| Deluxe Cloud | Cloud sectionals with deep seats and soft cushions; some styles come with a storage ottoman | Comfort → washable → storage | Deluxe Cloud + localized cloud sectional descriptor (see Chapter 03) |
| Matrix | Modular sofas and sectionals that come apart and can be set up in a new layout | Comfort → washable → modular | Matrix + localized modular sofa descriptor (see Chapter 03) |
| Essential | Single-seat and compact sofas for small spaces | Comfort → right size | Essential + localized compact-space sofa descriptor (see Chapter 03) |

Name accessories such as covers and ottomans with "For [series]," for example Washable Cover for Deluxe Cloud.

## Naming Rules

| Where | Formula | Example |
|---|---|---|
| Display name (product cards, product page titles, cart, email) | Series + style name + shape + category | Deluxe Cloud Sereno L-Shaped Sectional |
| Second line (specs) | Seats · pieces · fabric · color | 3-seater · 4 pieces with ottoman · Cotton-linen · Khaki |
| Page titles and product feed (SEO) | Display name + key specs + selling point + brand | Deluxe Cloud Sereno 3-Seater L-Shaped Storage Sectional with Ottoman, Washable Covers, Khaki \| WJS Home |
| Chinese display name | Series + style name + shape and category in Chinese | Deluxe Cloud Sereno + localized L-shape sectional descriptor (see Chapter 03) |

- Every sofa belongs to one series. Fabrics and colors are not series names: no Corduroy Series or Cloud Velvet Collection.
- Style names are easy-to-read English words (Sereno, Orris, Serra). Internal model numbers (such as SF133) never appear where customers can see them.
- Customer-facing names don't use square brackets, vertical bars or all caps, and don't include Best Seller or Luxury.
- Shapes are L-Shaped, U-Shaped, Chaise, Loveseat and Single; categories are Sectional, Sofa and Ottoman.

## What We Don't Do

1. No luxury talk, and no competing on lowest price.
2. Modular is never the lead and never gets a hero to itself. Don't use Smart Comfort (that is the proposition of another brand in the same company).
3. No service promises we can't back up: no fast delivery, white glove, 24/7 support or free returns.
4. No health or environmental claims without evidence: no eco-friendly, non-toxic or hypoallergenic.
5. No emoji, all caps or pressure language (Hurry, Last chance, Don't miss out).
6. No Trade / B2B purchasing and no whole-home design services.
7. Don't announce how customers feel: no You'll love it or We know exactly how you feel.

## What Makes WJS Home Recognizable at a Glance

These rules set WJS Home apart from the other brands in the same company. Every piece of material must follow them:

- All buttons are pill-shaped (`radius-pill`); no square-cornered buttons.
- Headings use only Mulish Bold.
- Walnut #53443C is the only dark color; don't use pure black or dark chocolate brown for large background areas.
- Red is only for promotions and errors, never for primary buttons or decoration.
- Layouts rely on photos, white cards and white space; secondary colors never fill large backgrounds or blocks; no chocolate blocks, checks or grid patterns.
- Photos show a home people live in: family, pets, blankets, books. No empty showroom-style rooms.

---

## Bundled Reference: `docs/02-language-en.md`

# 02 英文语言

英文写给美国家庭（en-US）。像一个家里有孩子、有狗、知道沙发会被怎么用的朋友在说话：先说场景，再说功能；先回应担心，再给下一步。

## Voice

| 特质 | 是 | 不是 | 例句 |
|---|---|---|---|
| Warm | 像朋友聊天；称顾客 you，品牌说 we | 销售话术、夸张的热情、替顾客做决定 | Not sure which size fits? Start with the wall you want it on. |
| Reassuring | 先回应顾虑（洒了、宠物、尺寸、送货），再给下一步 | 制造焦虑、催促、回避限制 | Spilled juice? Unzip the cover and wash it. |
| Real-life | 写具体的人、时间、动作、空间 | ultimate comfort、premium quality 这类形容词 | When friends come over, pull the chaise out and make room. |
| Joyful but grounded | 轻松，有一点笑意，句子短 | 感叹号、emoji、life-changing 这类大词 | Movie night just got roomier. |

整体偏随意，口语但不用俚语。营销和社媒可以幽默；交易、客服、法律文本严肃。

## 按场景调语气

| 场景 | 怎么写 | 例句 |
|---|---|---|
| 营销（首页、广告、邮件） | 一个家里的场景 + 一个产品理由 | After a long day, sink in. When the juice spills, unzip the cover and wash it. |
| 交易与物流 | 先给事实：日期、件数、下一步 | Your order is processed within 2 business days. Freight delivery takes 7–15 business days after that. |
| 客服与售后 | 先认事实，再给下一步和时限，不说套话 | Your cover arrived torn. Send us a photo within 7 days of delivery and we'll start a claim. |
| 法律与合规 | 准确完整，不加营销语气 | Msg & data rates may apply. Reply STOP to opt out. |
| 社媒互动 | 更轻松；数字和服务照样核实 | Three kids, one dog, one very washable sofa. |

## 写之前问四个问题

谁在用？什么时候、在哪？发生了什么？沙发怎么帮上忙？四个都答得出，再写。写不出就换一个场景，不用形容词补。

## 格式

| 项 | 写法 | 不写 |
|---|---|---|
| 拼写 | 美式：color、gray、favorite | colour、grey |
| 列举 | 不用 serial comma：covers, cushions and sections | covers, cushions, and sections |
| 数字 | 一到九拼写，10 以上用数字；价格、尺寸、日期、座位数一律用数字 | 3 kids（叙述里）→ three kids |
| 价格 | 商品页、广告 $1,299；购物车、结算 $1,299.00 | USD 1299、$1299.00（商品页） |
| 日期 | Oct. 25；Oct. 25, 2026；Sept. 8；March 3（March 到 July 不缩写） | 10/25/26、25 Oct |
| 时间 | 9 a.m. ET | 9AM EST |
| 尺寸 | 118" W × 64" D × 30" H，可附 300 × 163 × 76 cm | 118x64x30 inch |
| 范围 | 7–15 business days（短横） | 7-15 Business Days |
| 座位 | 3-seater；5-seat sectional | three seater |
| 按钮金额 | Add to cart · $1,299 | ADD TO CART - $1,299 |
| 品牌 | WJS Home；Home Is Where Joy Settles | WJShome、Where joy settles |

## 大小写

- 页面和区块标题用 AP 标题式：Made for Real Family Life。
- 按钮、标签、表单、提示、正文、广告标题、邮件主题行用句子式：Add to cart、The cover comes off for washing。
- 不打全大写，CSS 也不转大写。价值主张永远是 Home Is Where Joy Settles。

## 词表

| 用 | 不用 |
|---|---|
| sofa、sectional、couch（口语场景） | settee、divan |
| sink in、curl up、stretch out、room for everyone | ultimate comfort、unparalleled、world's softest |
| covers zip off for washing | stain-proof、pet-proof、easy-clean miracle fabric |
| rearrange、move the chaise、change the layout | endless layouts、fits any home、transforms your life |
| Free shipping · 30-day returns · 2-year limited warranty | Free & fast delivery、free returns、lifetime warranty、100-night trial |
| Payment options at checkout | 0% APR、interest-free（条款核对前） |
| family、kids、pets、movie night、nap、spill | luxury、luxurious、premium、designer、elevate、curated |
| we、you、your home | the customer、users、consumers |

**一律不用：** emoji；Hurry、Last chance、Don't miss out、Oops；!!!；eco-friendly、sustainable、non-toxic、hypoallergenic；best、#1、revolutionary；You'll love it。

## 文案库

下面的文案可以直接用。方括号是要替换的内容；价格、折扣、日期按当期数据填。

### 首页与落地页

**首屏（平时）**

| 主标题 | 副标题 | 按钮 |
|---|---|---|
| Home Is Where Joy Settles | Sofas made for movie nights, nap times and the occasional spill. | Shop sofas |
| Sink in after a long day | Cloud-soft seats, with covers that zip off when life gets messy. | Shop Deluxe Cloud |
| Room for everyone, including the dog | Deep seats and soft cushions, with space for everyone on movie night. | Find your sofa |
| Spills happen. The cover comes off. | On sofas marked Washable, the cover zips right off. | See how it works |

**区块标题**

| 区块 | 标题 | 一句话 |
|---|---|---|
| 舒适 | Made for Real Family Life | Deep seats and soft cushions, with room to curl up or stretch out. |
| 可拆洗 | Covers That Zip Off and Wash | When juice or muddy paws hit the cushions, unzip the cover and wash it. Check the care label first. |
| 模块化 | Rearrange It When Life Changes | Move the ottoman where you need it, or split the sections when you move. |
| 储物 | Storage Where You Sit | Ottomans lift open for blankets, board games and stray toys. |
| 选尺寸 | Find the Right Size for Your Room | Measure your wall and doorways, then compare sizes side by side. |
| 评价 | What Families Are Saying | 只放真实评价原文，见 05 |
| 服务 | Free Shipping on Every Order | 30-day returns and a 2-year limited warranty. See the details. |

### 商品页

**描述结构：** 第一段写舒适的场景，第二段写一个最能打动人的理由，第三段写第二个理由或尺寸；然后是规格。每段两到三句。

**Deluxe Cloud Sereno L-Shaped Sectional（示例）**

> The Sereno is the sofa you sink into after the kids are finally asleep. Deep seats and soft cushions give everyone room to stretch out or curl up.
>
> When juice spills or muddy paws find the cushions, unzip the cover and wash it. Check the care label before the first wash.
>
> The ottoman lifts open for blankets, board games and the toys that end up everywhere.

**Matrix Orris Chaise Sectional（示例）**

> Pull the chaise out for movie night and push it back when you need the floor. Matrix sections connect and come apart, so the sofa can change with your room.
>
> Soft corduroy covers zip off for washing, which helps when you share the couch with kids or a dog.

**卖点短句（功能徽章和要点列表）**

| 理由 | 徽章（≤ 20 字符） | 要点 |
|---|---|---|
| 可拆洗 | Washable covers | Covers zip off for washing |
| 模块化 | Modular | Sections rearrange to fit your room |
| 储物 | Storage ottoman | Ottoman lifts open for storage |
| 舒适 | Deep seat | Seat depth: [29.5"] |

**购买区**

| 位置 | 文案 |
|---|---|
| 按钮 | Add to cart · $1,299 |
| 交期（大件） | Processed within 2 business days, then 7–15 business days by freight. |
| 交期（小件） | Processed within 2 business days, then 5–8 business days by parcel. |
| 交期（预售、定制、缺货） | Made to order. Estimated delivery in 4–10 weeks; we'll confirm your date with your order. |
| 政策行 | Free shipping · 30-day returns · 2-year limited warranty |
| 付款 | Payment options at checkout |
| 尺寸入口 | Will it fit? See dimensions |

**商品页 FAQ**

| 问 | 答 |
|---|---|
| Can I wash the covers? | Yes. The covers zip off. Follow the care label on your cover for washing and drying. |
| How long does delivery take? | Orders are processed within 2 business days. Sofas ship by freight and arrive in 7–15 business days after that. Shipping is free. |
| Can I return it? | You can request a return within 30 days of delivery. The sofa needs to be unused, unassembled and in its original packaging. Return shipping is paid by the customer unless the item arrived damaged or defective. |
| What does the warranty cover? | New products have a 2-year limited warranty from the date of delivery. It covers defects in materials and workmanship under normal home use. |
| Will it fit through my door? | Check the box dimensions on this page against your doorways, hallway and stairs. |

### 购物车与结算

| 位置 | 文案 |
|---|---|
| 运费行 | Shipping: Free |
| 交期提示 | Sofas ship by freight. Most arrive in 7–15 business days after processing. |
| 退换提示 | 30-day returns on unused, unassembled items in original packaging. Final Sale items can't be returned. |
| 结算按钮 | Check out |
| 空购物车 | Your cart is empty. Start with the sofa that fits your wall. |
| 优惠码无效 | This code didn't work. Check the spelling or try another code. |
| 优惠码过期 | This code has expired. |
| 地址不配送 | We can't ship to APO, FPO or DPO addresses. Try a different address. |
| 付款失败 | Your payment didn't go through. Check your card details or choose another payment method. |
| 缺货 | This color is out of stock. Choose another color or get an email when it's back. |

### 邮件

主题行 ≤ 50 字符；预览文字 ≤ 90 字符，补充主题行没说的信息。每封只有一个主按钮。

| 邮件 | 主题行 | 预览文字 | 正文要点 | 按钮 |
|---|---|---|---|---|
| 欢迎 1（注册后） | Welcome to WJS Home | Here's how to pick a sofa your family will use every day. | Picking a sofa is easier when you start with your room and the people in it. Measure the wall, count who sits there on movie night and think about how you like to sit. | Find your sofa |
| 欢迎 2（第 3 天） | The cover comes off | Spills, paws and crumbs go in the wash. | Show one cover being unzipped and washed. One line on checking the care label. | See washable sofas |
| 欢迎 3（第 6 天） | How families use their sofas | Real reviews from homes with kids and pets. | Two or three real reviews, quoted as written, with the reviewer's first name and product. | Read reviews |
| 弃购 1（1 小时） | Your sofa is still in your cart | Free shipping on every order. | Still deciding? Free shipping · 30-day returns · 2-year limited warranty. | Return to cart |
| 弃购 2（24 小时） | Questions about size or delivery? | We can help you check dimensions before you order. | Reply to this email or call (213) 824-6872. We'll help you check dimensions, delivery and returns. | Return to cart |
| 订单确认 | We got your order, [First name] | Here's what happens next. | Thanks for order #[number]. It's processed within 2 business days. We'll email you tracking as soon as it ships. | View order |
| 已发货 | Your sofa is on its way | Track your delivery anytime. | Your [product] has shipped. Freight delivery takes 7–15 business days. | Track order |
| 到货前准备 | Before your sofa arrives | A few minutes now makes delivery day easier. | Measure doorways and the hallway. Clear a path to the room. When the boxes arrive, check each one. If anything is damaged or missing, send us photos within 7 days of delivery. | See delivery tips |
| 到货后 | Getting settled with your new sofa | Care tips for the first few weeks. | Check the care label before the first wash. Plump the cushions now and then to keep their shape. | See care guide |
| 求评价（送达后 14 天） | How's the sofa? | Tell other families what it's like to live with. | You've had your [product] for a couple of weeks. A few honest words help other families choose. | Write a review |

### 短信

只发给已同意接收的号码。第一条营销短信写明品牌和退订方式。

| 场景 | 文案 |
|---|---|
| 订阅确认 | WJS Home: Thanks for signing up. Free shipping on every order. Msg & data rates may apply. Reply STOP to opt out. |
| 弃购 | WJS Home: Your [product] is still in your cart. Free shipping on every order: [link] Reply STOP to opt out. |
| 已发货 | WJS Home: Order #[number] has shipped. Track it here: [link] |
| 促销节点 | WJS Home: Labor Day Sale. [X]% off select sofas through [Sept. 8]: [link] Reply STOP to opt out. |

### 社媒广告（Meta、TikTok）

主文案建议 ≤ 125 字符，标题 ≤ 40 字符，描述 ≤ 30 字符；TikTok 文案 ≤ 100 字符。

| 角度 | 主文案 | 标题 | 描述 |
|---|---|---|---|
| 舒适 | After bedtime, the living room is yours again. Deluxe Cloud seats are deep and soft enough to sink into. | Sofas you can sink into | Free shipping on every order |
| 可拆洗 | Kids spill juice and dogs track in mud. Our sofa covers zip off for washing, so the couch can keep up. | The cover comes off for washing | Free shipping on every order |
| 家庭 | Room for two kids, one dog and whoever has the remote. Find a size that fits your family. | Room for the whole family | 30-day returns |
| 模块化 | New apartment, different wall? Matrix sections come apart and go back together in a new layout. | A sofa that changes with your room | Free shipping on every order |
| 促销节点 | Our Labor Day Sale is on: [X]% off select Deluxe Cloud sofas through [Sept. 8]. | Labor Day Sale: [X]% off | Ends [Sept. 8] |

TikTok 文案示例：Juice on the couch? Unzip the cover and wash it.

### 搜索广告（Google）

标题 ≤ 30 字符，描述 ≤ 90 字符。

| 标题 | 描述 |
|---|---|
| WJS Home Sofas | Deep, soft seats and covers that zip off for washing. Free shipping on every order. |
| Sofas With Washable Covers | Rearrange Matrix sections as your room changes. Free shipping and 30-day returns. |
| Cloud-Soft Sectional Sofas | Sofas made for kids, pets and movie nights. 2-year limited warranty on new products. |
| Modular Sofas for Families | Shop L-shaped, U-shaped and chaise sectionals. Free shipping on every order. |
| Free Shipping on Every Order | |
| 30-Day Returns | |
| 2-Year Limited Warranty | |
| Deluxe Cloud Sectionals | |
| Matrix Modular Sofas | |

### Pinterest

标题 ≤ 100 字符；描述前 50 字符要能单独读懂。

| 标题 | 描述 |
|---|---|
| Cozy family living room with a cloud-soft sectional | A deep-seat sectional with room for the whole family. The covers zip off for washing. |
| Washable sofa ideas for homes with kids and pets | Sofa covers that zip off and go in the wash. Ideas for living rooms that get used every day. |
| Small living room idea: a compact corduroy sofa | A small-space sofa for apartments and reading corners. Soft corduroy in warm colors. |
| How to measure for a sectional | Measure the wall, the doorways and the path to the room before you order. |

### 促销节点

六个节点：Presidents' Day、Memorial Day、4th of July、Labor Day、Fall & Anniversary、Black Friday / Cyber Monday。日期按当年实际活动日期。

| 位置 | 模板 | 例子 |
|---|---|---|
| 公告栏 | [Sale name]: [X]% off select sofas through [date]. Free shipping on every order. | Labor Day Sale: 20% off select sofas through Sept. 8. Free shipping on every order. |
| 首屏主标题 | [Sale name] | Black Friday Sale |
| 首屏副标题 | Save [X]% on [series] through [date]. | Save 25% on Deluxe Cloud through Dec. 1. |
| 首屏小字 | Home Is Where Joy Settles（放在同一屏） | |
| 邮件主题行 | [Sale name]: [X]% off [series] | Memorial Day Sale: 20% off Matrix |
| 结束提醒 | [Sale name] ends [day] | Labor Day Sale ends Monday |

只写具体折扣和截止日期。Up to 只在最高折扣覆盖相当一部分活动商品时用，见 05。

### 客服回复

| 问题 | 回复 |
|---|---|
| 什么时候到 | Your order is processed within 2 business days. Sofas ship by freight and usually arrive in 7–15 business days after that. You'll get tracking by email when it ships. |
| 能退吗 | You can request a return within 30 days of delivery. The item needs to be unused, unassembled and in its original packaging. Return shipping is paid by the customer unless the item arrived damaged or defective. For sofas, it usually runs $60–80 per seat. |
| 到货有破损 | I'm sorry it arrived damaged. Please send photos of the damage and the box, plus your order number. We need these within 7 days of delivery to start a claim. |
| 质保 | New products have a 2-year limited warranty from the date of delivery. It covers defects in materials and workmanship under normal home use. Email info@wjshomestore.com with your order number, a short description and clear photos. |
| 宠物抓坏了 / 洒了东西 | The warranty covers defects in materials and workmanship, so pet and spill damage isn't included. The covers do zip off for washing, so follow the care label for your cover. |
| 怎么洗 | Unzip the cover and follow the care label on it. If your label says machine-washable, use the settings listed there. |
| 分期 | You'll see the payment options available for your order at checkout. |
| 订单状态 | Here's the tracking link for order #[number]: [link]. Freight carriers update tracking as your sofa moves. |

### 错误与空状态

先说发生了什么，再说下一步。不怪顾客，不用 Oops。

| 场景 | 文案 |
|---|---|
| 表单漏填 | Enter your email so we can send your order updates. |
| 邮箱格式错 | Check your email address. It should look like name@example.com. |
| 搜索无结果 | No results for "[term]". Try "sectional" or "washable". |
| 404 | We can't find that page. Head back to sofas or search for what you need. |
| 收藏为空 | Nothing saved yet. Tap the heart on any sofa to keep it here. |

---

## Bundled Reference: `docs/03-language-zh.md`

# 03 中文语言

中文写给住在美国、习惯用简体中文的华语家庭（zh-Hans-US）。语气和英文是同一个朋友，但按中文读者的习惯写，不是英文的翻译。

## 用在哪里

| 用中文 | 不用中文 |
|---|---|
| 首页首屏（中文版） | 全站其他页面 |
| Deluxe Cloud、Matrix 商品页 | Essential 和配件商品页 |
| 购物车里的配送与退换说明 | 结算流程、法律条款页 |
| 中文广告和它的落地页 | 英文广告 |
| 中文客服回复（电话、在线聊天、邮件） | |
| 小红书、微信内容 | |

繁体只在渠道需要时由简体转换，再由人工复核。

## 称呼与语气

- 交易、服务、客服、法律相关的文字用“您”。
- 小红书、微信内容用“你”，口语一些。
- 温暖、实在、有生活画面。不用“亲”“宝子”“家人们”，不堆感叹号，不用 emoji。
- 先说场景，再说功能；先回应顾虑，再给下一步。和英文一样，写之前先想：谁在用？什么时候、在哪？发生了什么？沙发怎么帮上忙？

## 名称

- 品牌名 WJS Home 不翻译，不起中文名。
- 系列名和款名保留英文，形状和品类写中文：Deluxe Cloud Sereno L 形转角沙发、Matrix Orris 贵妃位转角沙发。
- 价值主张中文固定为“喜悦安居之处”。

## 排版

| 项 | 写法 | 不写 |
|---|---|---|
| 中英、中数之间 | 加半角空格：Matrix 模块沙发、7–15 个工作日 | Matrix模块沙发、7–15个工作日 |
| 日期 | 10月25日；2026年10月25日（日期内部不加空格） | 10/25、2026-10-25 |
| 时间 | 上午9:00（太平洋时间） | 9am PST |
| 价格 | $1,299；立省 $200 | 1299 美元、1299 刀 |
| 尺寸 | 118 英寸（300 厘米）；规格表可写 118" | 118寸 |
| 标点 | 全角：，。：；（）“”；政策名用书名号《退换政策》 | 半角逗号、句号 |
| 范围 | 7–15（短横） | 7~15、7-15 |
| 电话 | (213) 824-6872 | 213-824-6872 转写成中文数字 |
| 按钮金额 | 加入购物车 · $1,299 | 点击这里立即抢购 |
| 强调 | 单独一行用 `zh-title-*` | 斜体、全大写、加字距 |

中文正文用 `zh-body-*`（行高 1.7），最小 14px。

## 术语

| English | 中文 | 说明 |
|---|---|---|
| Sectional | 转角沙发 | L 形、U 形写“L 形转角沙发” |
| Modular sofa | 模块沙发 | 卖点写“模块化”“能拆开换摆法”；不写“随时加购模块” |
| Washable cover | 可拆洗沙发套 | “机洗”只在洗标写明时说 |
| Cloud sofa | 云朵沙发 | 系列名保留 Deluxe Cloud |
| Seater | 人位 | 3 人位 |
| Ottoman | 脚凳 | 储物脚凳 |
| Chaise | 贵妃位 | |
| Loveseat | 双人沙发 | |
| Corduroy / Chenille / Velvet / Linen blend | 灯芯绒 / 雪尼尔 / 丝绒 / 亚麻混纺 | |
| Free shipping | 免运费 | 不写“包邮” |
| LTL freight | 物流卡车配送 | 大件沙发 |
| Small parcel | 快递 | 小件 |
| Business days | 个工作日 | |
| Returns | 退换 | 政策名《退换政策》 |
| Limited warranty | 有限质保 | 政策名《质保政策》 |
| Cart / Checkout | 购物车 / 去结算 | |
| Promo code | 优惠码 | 不和“折扣码”“优惠券”混用 |

## 不用的词

| 词 | 原因 |
|---|---|
| 最、第一、顶级、全网最低、天花板 | 极限词，无法核验 |
| 奢华、贵族、轻奢、高定 | 不走奢华路线 |
| 极致、颠覆、革命性、爆款疯抢、手慢无 | 浮夸、催促 |
| 防污、防抓、永远如新、宠物随便抓 | 没有测试依据 |
| 适合所有家庭、无限组合 | 绝对化 |
| 免费退货、无理由退货、100 晚试睡、终身质保 | 和政策不符 |
| 零甲醛、母婴级、防螨抗菌、环保无味 | 健康和环保主张没有证据 |
| 亲、宝子、家人们、yyds、emoji | 不符合语气 |
| 点击这里、请注意、我们很高兴地通知您 | 翻译腔和空话 |

## 文案库

### 首页首屏（中文版）

| 主标题 | 副标题 | 按钮 |
|---|---|---|
| 喜悦安居之处 | 为电影之夜、午睡和偶尔洒出的果汁做的沙发。 | 选购沙发 |
| 忙了一天，坐下去就不想起来 | 云朵般的深座，沙发套能拉开拿去洗。 | 看看 Deluxe Cloud |
| 一家人都坐得下，狗也有位置 | 座位够深，挤一挤也舒服。 | 找到合适的沙发 |

### 商品页

**Deluxe Cloud Sereno L 形转角沙发**

> 孩子睡着以后，终于可以陷进沙发里歇一会儿。座深够深，坐垫够软，盘腿、躺着都有地方。
>
> 果汁洒了、狗踩了泥爪印，拉开沙发套拿去洗就行。第一次洗之前，请先看洗标。
>
> 脚凳掀开能放毯子、桌游和到处乱放的玩具。

**Matrix Orris 贵妃位转角沙发**

> 看电影时把贵妃位拉出来，要用地方时再推回去。Matrix 的模块能拆开、换个摆法，沙发可以跟着房间变。
>
> 灯芯绒沙发套能拉开清洗，家里有孩子、有狗也省心。

**购买区**

| 位置 | 文案 |
|---|---|
| 按钮 | 加入购物车 · $1,299 |
| 交期（大件） | 2 个工作日内处理订单，之后物流卡车配送约 7–15 个工作日。 |
| 交期（预售、定制、缺货） | 按订单生产，预计 4–10 周送达；下单后我们会告诉您具体时间。 |
| 政策行 | 免运费 · 30 天退换 · 2 年有限质保 |
| 付款 | 结算时可选付款方式 |
| 卖点徽章 | 可拆洗沙发套 · 模块化 · 储物脚凳 |

### 购物车说明

| 位置 | 文案 |
|---|---|
| 运费 | 运费：免费 |
| 交期 | 沙发走物流卡车配送，订单处理后一般 7–15 个工作日送达。 |
| 退换 | 送达后 30 天内可申请退换，商品须未使用、未组装，并保留原包装。退货运费由您承担，商品有质量问题或运输损坏的除外。Final Sale 商品不退不换。 |
| 破损 | 收货时请逐箱检查。如有破损或缺件，请在送达后 7 天内发照片给我们。 |

### 中文广告

| 角度 | 主文案 | 标题 |
|---|---|---|
| 舒适 | 孩子睡了，客厅终于是你的了。Deluxe Cloud 座深够深，坐垫够软，坐下去就不想起来。 | 能陷进去的沙发 |
| 可拆洗 | 果汁洒了、狗踩了泥？沙发套拉开就能洗。 | 沙发套能拆下来洗 |
| 家庭 | 两个孩子、一只狗，还有抢遥控器的那个人，都坐得下。 | 一家人都坐得下 |
| 促销节点 | Labor Day 劳工节促销：精选沙发立减 [X]%，截至 [9月8日]。全部订单免运费。 | 劳工节促销，立减 [X]% |

中文广告里的价格条件、限制和说明也用中文写全。

### 小红书、微信

标题 ≤ 20 字，配图 3:4。正文开头两行讲清一个场景。

| 标题 | 正文开头 |
|---|---|
| 有娃有狗，沙发套能拆洗真的省心 | 三个孩子、一只狗，沙发每天都在“受考验”。套子拉开就能洗，洗之前看一眼洗标。 |
| 小客厅怎么放转角沙发 | 先量墙，再量门和走廊。L 形放靠窗那面墙，贵妃位朝电视。 |
| 电影之夜的正确坐法 | 把模块拼长，脚凳推过来，一家人挤在一起刚好。 |
| 一张沙发住进新家的第一个月 | 拆箱、组装、第一次洗套子，记录一下真实体验。 |

### 客服回复

| 问题 | 回复 |
|---|---|
| 什么时候到 | 订单会在 2 个工作日内处理。沙发走物流卡车配送，之后一般 7–15 个工作日送达。发货后我们会发邮件告诉您物流信息。 |
| 能退吗 | 送达后 30 天内可以申请退换。商品须未使用、未组装，并保留原包装。退货运费由您承担，商品有质量问题或运输损坏的除外；沙发的退货运费一般每个座位 $60–80。 |
| 到货破损 | 很抱歉沙发到货时有破损。请发来破损处和外箱的照片，以及订单号。需要在送达后 7 天内提交，我们才能开始处理。 |
| 质保 | 新品享有 2 年有限质保，从送达日开始计算，保障正常家用下的材料和做工缺陷。请把订单号、问题说明和清晰的照片发到 info@wjshomestore.com。 |
| 宠物抓坏、洒了东西 | 质保只保障材料和做工缺陷，宠物和洒漏造成的损坏不在范围内。沙发套可以拉开清洗，请按洗标操作。 |
| 怎么洗 | 拉开沙发套，按套子上的洗标清洗。洗标写明可以机洗的，按洗标上的设置洗。 |
| 分期 | 结算页会显示您这笔订单可选的付款方式。 |

## 合规

- 中文广告里的必要说明（价格条件、限制、免责）用中文写。
- 顾客评价按原文显示，不翻译，不改写。
- 中文触点不谈分期利率和合同条款；有需要先问法务。

---

## Bundled Reference: `docs/04-visual-identity.md`

# 04 视觉识别

## Logo

| 文件 | 用在哪里 |
|---|---|
| 横版胡桃色 `logo-horizontal-walnut.png` | 浅色底上的宽幅位置：网站页头、邮件页头、横幅 |
| 横版白色 `logo-horizontal-white.png` | 胡桃色底或深色照片上的宽幅位置：页脚、深色横幅 |
| 竖版胡桃色 `logo-vertical-walnut.png` | 浅色底上的方形、居中位置：社媒头像、包装正面、吊牌 |
| 竖版白色 `logo-vertical-white.png` | 深色底上的方形、居中位置 |

- 只有胡桃色和白色两种颜色。浅色底用胡桃色版，胡桃色底和深色照片上用白色版。
- 四周留白不小于 “WJS” 的字高。文字、边缘、照片主体都不能进入这块区域。
- 最小尺寸：横版宽 120px（屏幕）/ 30mm（印刷）；竖版宽 72px / 18mm。再小就只用文字 “WJS Home”。
- 不拉伸、不旋转、不换颜色、不加阴影描边渐变、不放在对比不足的底上。底不合适时换版本或换底，不改 Logo。
- 社媒头像用竖版胡桃色 Logo，放在 `surface-page` 色底上，四周按留白规则缩进。

## 颜色

18 个定稿色不改、不加色阶。页面里只用语义 token（`surface-*`、`fg-*`、`action-*` 等），不直接写色值。

### 比例

| 角色 | token | 比例 |
|---|---|---|
| 大面积底色 | `surface-page`（页面米白）、`surface-card`、`surface-raised`（白色区块和卡片） | 页面主体 |
| 结构与文字 | `fg-primary`、`surface-inverse`、`action-primary-bg` | 文字、主按钮、公告栏、页脚 |
| 辅助色 | `surface-section`、`surface-warm`、`surface-sand` | 只做小面积：徽章、chip、图标底、选中态、进度条底、图片加载底。不做区块背景、大色块或卡片底 |
| 促销与错误 | `global-red` | 每屏最多一处 |
| 装饰 | `global-primary`（评分星、图形、插图线条） | 少量 |

### 可以放在一起的颜色

| 文字或元素 | 可以放在 | 不能放在 |
|---|---|---|
| `fg-primary` 正文、标题 | 所有浅色底：`surface-card`、`surface-page`、`surface-section`、`surface-warm`、`surface-sand` | 无 |
| `fg-secondary` 辅助文字 | `surface-card`、`surface-raised`、`surface-page`、`surface-section` | `surface-warm`、`surface-sand`（这两种底上一律用 `fg-primary`） |
| `fg-on-inverse` / `fg-on-inverse-secondary` | `surface-inverse` | 浅色底 |
| `fg-accent-large`（Warm Taupe 大字） | 24px 以上，只放 `surface-card`、`surface-raised` | `surface-page` 和更深的底；小于 24px 的字 |
| `price-sale-large` 红色促销价 | 24px 以上，`surface-card`、`surface-page` | 小于 24px 的价格（改用 `price-fg` + 促销徽章） |
| `rating-star` | `surface-card`、`surface-raised`，旁边写数字评分和评价数 | `surface-page` 和更深的底 |
| 红色促销徽章 | `badge-sale-bg` + `badge-sale-fg`（红底黑字） | 红底白字 |

### 按钮

| 按钮 | 底 | 字 | 悬停 | 用在 |
|---|---|---|---|---|
| 主按钮 | `action-primary-bg` 胡桃色 | `action-primary-fg` 白色 | `action-primary-hover-bg`；按下 `action-primary-active-bg` + scale(0.98) | 一个视图只有一个：Add to cart、Shop sofas、Check out |
| 次按钮 | 透明或白 + 1.5px `action-secondary-border` | `action-secondary-fg` | 填 `action-secondary-hover-bg` | 并列的第二个动作 |
| 暖色按钮 | `action-warm-bg` | `fg-primary` | `action-warm-hover-bg` | 低优先级：Compare sizes、View details |
| 反白区块按钮 | `action-inverse-bg` | `fg-primary` | 不变色，抬起 `shadow-lift` | 胡桃色区块里 |

所有按钮都是胶囊形（`radius-pill`），高度 `control-lg` 48 或 `control-md` 40。

### 状态与反馈

- 调色板里没有绿色和黄色，也不新增。错误用 `feedback-error-accent`（红色图标和边框）+ `fg-primary` 文字；成功、提示、警告用胡桃色 `feedback-neutral-accent`，靠图标（check / info / triangle-alert）和文字区分。
- 状态永远有文字，不只靠颜色。
- 键盘焦点统一用 `focus-ring`；胡桃色底和图片上用 `focus-ring-inverse`。触控目标不小于 40px。

### 图片上的字

24px 以上的白色标题铺 `overlay-scrim`（胡桃色 60%）；24px 以下的白字铺 `overlay-scrim-strong`（75%），只铺在文字区域。

## 字体

| 样式 | 字体 | 用在 |
|---|---|---|
| `title-28` | Mulish Bold 28 | 首屏主标题、页面标题，一页一个 |
| `title-24` | Mulish Bold 24 | 区块标题、商品页商品名、商品页价格 |
| `title-18` | Mulish Bold 18 | 小节标题、抽屉和弹窗标题、卖点标题 |
| `title-16` | Mulish Bold 16 | 按钮、商品卡名称、卡片价格、导航 |
| `title-14` | Mulish Bold 14 | 徽章、表单标签、眉题、小按钮 |
| `body-16` | Archivo Regular 16 | 正文、商品描述、输入框文字 |
| `body-14` | Archivo Regular 14 | 交期、政策链接、图片说明、帮助文字 |
| `body-12` | Archivo Regular 12 | 法律小字、版权行 |

- 全部行高 140%、字距 0、原始大小写。不全大写、不加字距、不用 500 / 600 / 800 字重。
- 价格、交期、退换这些决定购买的信息不用 12px。
- 正文里不用粗体（只加载 Archivo 400）。要强调就拆成单独一行，用 `title-16` 或 `title-14`。
- 购物车和结算金额加 `font-variant-numeric: tabular-nums`。
- 中文用 `zh-*` 样式：字号同上，中文正文行高 1.7，最小 14px；拉丁字符仍是 Mulish / Archivo，中文落到 PingFang SC、思源黑体 / Noto Sans SC、Microsoft YaHei。
- 字体文件：`fonts/mulish-latin-700-normal.woff2`、`fonts/archivo-latin-400-normal.woff2`，SIL Open Font License 1.1，网页、广告、印刷、App 都可以用。

### 固定画布的字号

网页和邮件正文里的活字只用上面 8 个样式，最大 28px。广告、社媒图、邮件头图、横幅、包装这类固定画布，按画布宽度等比放大同一套层级：

| 层级 | 字号（占画布宽） | 1080 宽（Meta、小红书） | 1000 宽（Pinterest） | 600 宽（邮件头图） | 1200 宽（网页横幅） |
|---|---|---|---|---|---|
| 主标题（Mulish Bold） | 5–6% | 54–65px | 50–60px | 30–36px | 60–72px |
| 副标题（Mulish Bold） | 约 3% | 32px | 30px | 18px | 36px |
| 正文、按钮（Archivo / Mulish） | 约 2.5% | 27px | 25px | 15px | 30px |

行高 140%，字距 0，原始大小写。比主标题再大的展示字号不用。

## 版式与间距

- 断点：手机 ≤599，平板 600–1023，桌面 ≥1024。
- 内容最大宽 `container-max` 1200。页面左右边距：桌面 40、平板 24、手机 16（`page-gutter*`）。
- 区块上下内边距：桌面 `section-pad` 64、手机 `section-pad-m` 40；品牌叙事区块之间可以用 `space-96`。
- 元素间距只用 `space-4 / 8 / 16 / 24 / 40 / 64 / 96`。宁可多留白。
- 网格间距：桌面和平板 24，手机 16。

## 形状、阴影、动效

- 圆角：按钮、徽章、chip、数量器 `radius-pill`；输入框、下拉 `radius-md` 14；卡片、商品图、媒体 `radius-lg` 20；首屏大面板、大卡片 `radius-xl` 28；提示框、缩略图、复选框 `radius-sm` 8。不用直角，不用不规则的圆团。
- 阴影都是胡桃色调：卡片 `shadow-card`、浮层 `shadow-soft`、悬停抬起 `shadow-lift`。先用底色和细线分层，阴影是第二选择。
- 动效：缓动 `ease-soft`；悬停和按下 150ms，抬起、淡入、抽屉 250ms；位移 8–12px。不回弹、不循环。尊重 `prefers-reduced-motion`。

## 图标

- Lucide 线性图标，2px 描边（`icon-stroke`），圆头圆角；尺寸 16 / 20 / 24。
- 代码里用固定版本的 Lucide 包，颜色跟随文字；资产组 Icons 里的 SVG 墨色是胡桃色，用于设计稿和 `<img>`。
- 一个意思一个图标。只有图标的按钮必须有 `aria-label`。
- 不用 emoji，不用 Unicode 符号代替图标。

## 版面：照片、白卡片、留白

一张照片配一块白色卡片（`surface-card`），卡片上放标题、一句场景和主按钮；也可以把文字直接放在照片旁的米白底上。区块之间用米白和白色交替分层，不铺沙色、暖米色这类辅助色的大色块：大面积辅助色会让画面发灰、发脏。反白块（`surface-inverse`）只用于公告栏、页脚和少量强调。红色只能是窄条或徽章。不用渐变、图案、纹理、格子。

## 影像

### 风格

| 项 | 要 | 不要 |
|---|---|---|
| 光线 | 自然日光，暖色调 | 冷硬棚拍光、霓虹调色、黑白 |
| 场景 | 有人住的家：毯子、书、玩具、宠物的痕迹，整体整洁 | 空荡的样板间、过度布景、杂乱 |
| 主体 | 沙发是主角，家人和宠物自然进入画面 | 摆拍、产品被挡住 |
| 后期 | 颜色和实物一致 | 重颗粒、滤镜、改变面料颜色 |
| 构图 | `radius-lg` 圆角框或出血到区块边缘，文字放白色卡片或米白底上 | 加边框、投影、拼贴，大块辅助色衬底 |

### 每种图片从哪里来

| 用途 | 来源 | 规则 |
|---|---|---|
| 商品页、商品卡 | 原始商品照片或渲染图 | 不用 AI 改沙发的形状、比例、面料、颜色、模块数量。渲染图在图片说明里注明 Product rendering |
| 首屏、广告、邮件、社媒的生活场景 | 原始商品图合成进真实或 AI 生成的家庭场景；或取得授权的顾客、创作者照片 | 合成时商品本身保持原样，只调光影让它融入场景 |
| 顾客与创作者内容 | 书面授权后使用，注明作者 | 付费合作的内容按平台要求标注 #ad 或 Paid partnership |

- AI 生成的人物不能长得像真实的人，也不能冒充顾客或评价者。
- 每张图在素材记录里写明来源：实拍、渲染、合成、AI 场景、顾客授权。

### 拍摄清单

正式拍摄按这张清单，每个系列至少覆盖前 8 项。

| # | 镜头 | 用在 | 画幅 |
|---|---|---|---|
| 1 | 傍晚电影之夜：一家人和狗挤在 Deluxe Cloud 上，暖光 | 首屏、广告 | 16:9、4:5、9:16 |
| 2 | 早晨日光：孩子在沙发上看书，狗趴在脚边，抓拍 | 首屏、邮件 | 16:9、4:5 |
| 3 | 手拉开沙发套拉链的特写 | 可拆洗卖点、商品页 | 1:1、4:5 |
| 4 | 沙发套放进洗衣篮（洗标写明可机洗的款，才拍进洗衣机） | 可拆洗卖点、社媒 | 4:5、9:16 |
| 5 | Matrix 三种摆法：L 形 → U 形 → 拆开两组，同一机位 | 模块化卖点、轮播 | 1:1、4:5 |
| 6 | 储物脚凳掀开，里面是毯子和玩具 | 储物卖点 | 1:1、4:5 |
| 7 | 面料肌理微距：灯芯绒、雪尼尔、棉麻，自然光 | 商品页、面料说明 | 1:1 |
| 8 | 尺度：成人盘腿坐、躺下，看得出座深 | 商品页、尺寸说明 | 4:5 |
| 9 | 小公寓角落里的 Essential 单人沙发，旁边一盏落地灯 | Essential、Pinterest | 2:3、4:5 |
| 10 | 商品白底图：正面、45°、侧面、背面、尺寸图 | 商品页、商品 feed | 1:1 |
| 11 | 送货与组装：走廊里的箱子，拼接模块 | 到货前邮件、FAQ | 16:9、9:16 |
| 12 | 竖版短视频：拉开沙发套到装回去 15 秒；坐下去陷进去 6 秒 | Reels、TikTok、小红书 | 9:16 |

## 无障碍

WCAG 2.2 AA：正文 4.5:1；24px 以上的字、控件边框、焦点环、图标 3:1。焦点可见，状态不只靠颜色，中英文页面同一标准。图片写替代文字：说清是哪款沙发、什么颜色、什么场景。

---

## Bundled Reference: `docs/06-touchpoints.md`

# 06 触点应用

八个触点的做法。文案从 02、03 的文案库取，价格和政策按 05 写。平台尺寸和字数投放前以平台当前规格为准。

## 1. 首页与落地页

样张：Pages 组的 PageHome、PageHomeMobile、PageHomeZh、PageHomeZhMobile（平时版），PageHomeBF、PageHomeBFMobile（Black Friday Early Access 活动版）。页面上的商品、价格、规格、图片和评价取自 wjshomestore.com 现网（2026-10-21 读取），现网没有的标待补。

| 顺序 | 区块 | 怎么做 |
|---|---|---|
| 1 | 公告栏 | `surface-inverse` 底，`body-14` 白字，一句话：平时写 Free shipping on every order；促销节点写活动名和具体金额，截止日期定了再写。不用 emoji |
| 2 | 页头 | 横版胡桃色 Logo；导航：Sofas、Deluxe Cloud、Matrix、Essential、Compare、Reviews；活动期间把 Reviews 换成活动入口 |
| 3 | 首屏 | 整幅照片（Hero `banner`）：白色 `title-28` 标题、一句副标题、一个主按钮；`overlay-scrim` 只铺在文字区域。平时讲品牌（Home Is Where Joy Settles），活动版讲活动（Spend More, Save More + 具体金额，不写 Up to）。白色卡片 + 照片的 `split` 留给二级落地页 |
| 4 | 服务条 | Free shipping · 30-day returns · 2-year limited warranty，配 truck、rotate-ccw、shield-check 图标 |
| 5 | 热销 | 横向商品列表，现网商品、价格、评分 |
| 6 | 三个理由 | 舒适 → 可拆洗 → 储物，每张卡一张对得上的实拍（StoryCard） |
| 7 | 系列入口 | Deluxe Cloud、Matrix、Essential 三张卡，写清它适合谁和现网起价 |
| 8 | 主推款 | 图文区块：照片、商品名、一句舒适场景、价格、交期、加购按钮 |
| 9 | 场景图点选单品 | 一张实拍，编号热点对应右侧单品清单，可逐件加购（ShopTheLook） |
| 10 | 评价 | 现网评价池的平均分和分布，已验证买家原文；没有评价的商品不显示这一区 |
| 11 | Home Ideas | 三篇现网博客（PostCard） |
| 12 | 选尺寸 | Not Sure Which Size Fits? + Compare sizes |
| 13 | 常见问题 | 在线咨询、电话和四个问答（交期、洗护、退换、质保） |
| 14 | 页脚 | `surface-inverse` 底，白色横版 Logo，Home Is Where Joy Settles，客服电话、邮箱、政策链接，现网页脚列出的付款方式图标 |

活动版在首屏后加满额减档位和算例（PromoTiers），再放活动商品、丝绒沙发送棉麻沙发套、三个理由、评价和常见问题。

一个视图只有一个主按钮。中文首页用于首屏中文版和中文广告落地。

## 2. 商品页

样张：PagePDP、PagePDPMobile、PagePDPZh、PagePDPZhMobile。

**图片顺序：** ① 正面主图 → ② 45° → ③ 生活场景 → ④ 拉开沙发套的特写（可拆洗款）→ ⑤ 模块摆法或储物脚凳 → ⑥ 尺度（人坐在上面）→ ⑦ 面料微距 → ⑧ 尺寸图。商品图 1:1，`radius-lg` 圆角。

**购买区（`surface-card`）：**

1. 徽章（Best seller、Washable covers、Storage ottoman），商品名（`title-24`），第二行规格（`body-14`，`fg-secondary`）
2. 星级和评价数（评价池说明放在评价区）
3. 价格（`title-24`）；活动期间下面放满额减进度（PromoTiers progress）
4. 布局：同一款的全部布局按房间大小分组（Small / Large / Open Space），每格是现网布局图和价格，点了打开那件商品（SiblingLinks `layout`）
5. 颜色：色卡 + 价格，同样是链接（SiblingLinks `color`）
6. 关键尺寸四格（KeyFacts）：总宽 × 深、座深、每座承重、组装时间
7. 成套购买：勾选加一套替换沙发套（BundleOffer）
8. 数量 + 主按钮 Add to cart · $1,359（金额随数量和套装变）
9. 交期一行、付款方式一行、尺寸链接（`body-14`），下面是服务条

现网每个布局、每个颜色都是单独的商品页，所以选项先做成链接；合并成一个商品由 Allen 定。桌面图集随页面滚动固定在左侧；手机上加购按钮滚出屏幕后才出现底部固定加购条。

**购买区下面：** Will It Fit?（尺寸图、俯视图、尺寸表、包装和过门宽度）→ 里面是什么（材料图四张）→ 拉开沙发套（三步）→ 详情页签 → 按您的方式摆（摆法图，写明有些摆法需要更多件）→ 场景图点选单品 → 评价 → 推荐 → 常见问题。整体顺序按 05 的“商品页顺序”。

## 3. 购物车与结算

样张：PageCart、PageCartMobile、PageCartZh、PageCartZhMobile、PageCartEmpty；加购抽屉见 AddedToCart。

- 加购后弹出右侧抽屉：商品、小计、去结算、继续选购，推荐只放沙发套和脚凳。
- 购物车每件商品：缩略图、显示名、规格行、单价、数量器、合计（$1,299.00）、删除；删除后可撤销，售罄商品可稍后再买。
- 摘要：满额减进度、优惠码、小计、活动减免、运费 Free、税 Calculated at checkout、预计合计、这单节省的金额、一个主按钮 Check out、现网页脚列出的付款方式图标。现网购物车会自动抵扣满额减（2026-10-21 加购 $1,699 显示 −$80），样张照此计算。
- 摘要下面固定三行（CartNotes）：交期、退换条件、送达 7 天内报告破损。
- 错误提示紧贴出错的地方，红色图标加 `fg-primary` 文字。

## 4. 邮件与短信

| 项 | 规格 |
|---|---|
| 宽度 | 600px，单栏 |
| 页头 | 横版胡桃色 Logo，宽 140px，`surface-page` 底 |
| 头图 | 600 × 750（4:5）或 600 × 400，字号按 04“固定画布的字号”的 600 宽一栏 |
| 正文 | 16px 以上，行高 1.4；正文三到五句 |
| 按钮 | 胶囊形胡桃色按钮，白字，高 48px；一封邮件一个主按钮 |
| 页脚 | 政策行、Home Is Where Joy Settles、地址、退订链接 |
| 主题行 | ≤ 50 字符；预览文字 ≤ 90 字符 |
| 短信 | 品牌名开头；营销短信带 Reply STOP to opt out；只发给已同意接收的号码 |

邮件里的字体回落到 Arial；图片都写替代文字。深色模式下检查 Logo 和按钮仍看得清。

## 5. 社媒广告（Meta、TikTok）

| 画幅 | 尺寸 | 用在 |
|---|---|---|
| 4:5 | 1080 × 1350 | Facebook、Instagram 信息流 |
| 9:16 | 1080 × 1920 | Stories、Reels、TikTok |
| 1:1 | 1080 × 1080 | 轮播 |

- 构图：一张生活场景照片 + 一块米白或白色文字区，放标题（54–65px）和一行副标题；左上或右下放小号 Logo。不用辅助色铺文字区。
- 9:16 的文字和 Logo 放在画面中部，避开平台界面会遮住的上下区域。
- 一个广告讲一个理由。舒适和可拆洗做主力，模块化做补充角度。
- 视频前 2 秒出现沙发和一个动作（坐下去、拉开拉链）；全程配字幕。
- 主文案 ≤ 125 字符，标题 ≤ 40 字符，描述 ≤ 30 字符；TikTok 文案 ≤ 100 字符。

## 6. 搜索与购物广告（Google）

- 搜索广告：标题 ≤ 30 字符，描述 ≤ 90 字符；文案见 02。品牌词广告的第一个标题用 WJS Home Sofas。
- 购物广告：商品标题用 01 的 SEO 公式（显示名 + 关键规格 + 卖点 + 品牌），不超过 150 字符，最重要的词放在前 70 字符。
- 商品图：白底或浅色底的正面图，不加文字、徽章、促销信息。
- 落地页直接到对应商品页或系列页，不落首页。

## 7. 自然社媒（Instagram、Pinterest、小红书）

| 平台 | 画幅 | 内容 |
|---|---|---|
| Instagram | 4:5 1080 × 1350；Reels 9:16 | 家庭生活场景、拉开沙发套、Matrix 摆法；顾客授权照片 |
| Pinterest | 2:3 1000 × 1500 | 客厅灵感、小空间、选尺寸指南；标题 ≤ 100 字符 |
| 小红书 | 3:4 1080 × 1440 | 中文，用“你”；封面放 ≤ 20 字标题；真实使用记录 |

- 头像统一用竖版胡桃色 Logo，`surface-page` 底。
- 简介写 Home Is Where Joy Settles 和一句“Sofas made for family life”；中文写“喜悦安居之处”。
- 转发顾客照片前取得书面授权，注明作者。

## 8. 客服与包装

**客服回复结构：** 先说情况 → 再说怎么办和时限 → 最后一句可以联系谁。用 02、03 的客服回复。署名用名字加 WJS Home，例如 Maria at WJS Home。

**联系方式：** 电话 (213) 824-6872，邮箱 info@wjshomestore.com，网站在线聊天。

**包装：**

| 位置 | 做法 |
|---|---|
| 外箱 | 竖版胡桃色 Logo，一侧印 Where Joy Settles；不印促销信息 |
| 箱内卡片 | 正面：Home Is Where Joy Settles 和一句欢迎；背面：组装说明入口、洗护说明入口、客服电话和邮箱、到货 7 天内报告破损的提醒 |
| 洗护说明 | 先看洗标；可拆洗款写拉开沙发套的步骤 |

卡片用 `surface-page` 色纸、胡桃色字，英文在前，可加中文一行。
