diff --git a/.gitignore b/.gitignore index a547bf3..b2af1db 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,6 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - node_modules dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea .DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? +*.local +_tmp_*.txt +.vite diff --git a/README.md b/README.md new file mode 100644 index 0000000..29f332f --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# 杜康好客官网 + +React + Vite + TypeScript 多页品牌官网。文案对齐《杜康好客-官网文案定稿》,视觉素材取自品牌传承 / 清香宝典 / 诗酒文化三份 PDF。 + +## 开发 + +```bash +npm install +npm run dev +``` + +## 构建 + +```bash +npm run build +npm run preview +``` + +## 路由 + +- `/` 首页 +- `/brand` 品牌传承 +- `/poetry` 诗酒文化 +- `/qingxiang` 清香 +- `/haoke` 好客模式 +- `/system` 三端协同 +- `/tech` 科技驱动 +- `/subsidy` 酒厂实力 +- `/partner` 城市合伙人 +- `/tech-detail` 科技板块 +- `/contact` 联系我们 diff --git a/index.html b/index.html new file mode 100644 index 0000000..c610610 --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + + + + + + + 杜康好客 · 酒祖杜康 + + + + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..dcf1a2f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1899 @@ +{ + "name": "dukang-haoke-official", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "dukang-haoke-official", + "version": "1.0.0", + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.0" + }, + "devDependencies": { + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "typescript": "~5.8.3", + "vite": "^6.3.5" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.4.tgz", + "integrity": "sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.4.tgz", + "integrity": "sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.4.tgz", + "integrity": "sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.4.tgz", + "integrity": "sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.4.tgz", + "integrity": "sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.4.tgz", + "integrity": "sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.4.tgz", + "integrity": "sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.4.tgz", + "integrity": "sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.4.tgz", + "integrity": "sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.4.tgz", + "integrity": "sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.4.tgz", + "integrity": "sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.4.tgz", + "integrity": "sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.4.tgz", + "integrity": "sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.4.tgz", + "integrity": "sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.4.tgz", + "integrity": "sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.4.tgz", + "integrity": "sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.4.tgz", + "integrity": "sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.4.tgz", + "integrity": "sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.4.tgz", + "integrity": "sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.4.tgz", + "integrity": "sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.4.tgz", + "integrity": "sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.4.tgz", + "integrity": "sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.4.tgz", + "integrity": "sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.4.tgz", + "integrity": "sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.4.tgz", + "integrity": "sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.18", + "resolved": "https://registry.npmmirror.com/@types/react/-/react-19.2.18.tgz", + "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.13", + "resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.13.tgz", + "integrity": "sha512-k9HNuUVMlqVjQ9UHzfPjIqiDbWw7WqT1AoT7GL8VwvF3r0ZfArtgiSPAlmupyNquNgOJHTuH4CKYf8ttMTWBTQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.8", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001809", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz", + "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.403", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.403.tgz", + "integrity": "sha512-MQsYmdaLzvaCX5j+ZZBr5Fm6uCCnPQcRtlvmvRlWqrXy+BH2O4ffXIAScF+JQznQWB9brWp4lSD9Z4yNmaf2BA==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.53", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.26", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.17", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.2.8", + "resolved": "https://registry.npmmirror.com/react/-/react-19.2.8.tgz", + "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.8", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-19.2.8.tgz", + "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.8" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.18.2", + "resolved": "https://registry.npmmirror.com/react-router/-/react-router-7.18.2.tgz", + "integrity": "sha512-aUVMjFm3GAPTTZL7oYr5E7ETiqfQCHRLH+B+5afnICvf0r7kkK4eR6SMuwbSTJw/7t+12khT/Kahij49fqOCIg==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.18.2", + "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-7.18.2.tgz", + "integrity": "sha512-AIKJ/jgGlFb3EbfCXk5Gzshiwt+l3mqbCrNjmEWMMjqQxNJ3svBa6bgzFyCC2Sw3RA0VWF1kg3uQf2OFhxb8hw==", + "license": "MIT", + "dependencies": { + "react-router": "7.18.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/rollup": { + "version": "4.62.4", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.62.4.tgz", + "integrity": "sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.62.4", + "@rollup/rollup-android-arm64": "4.62.4", + "@rollup/rollup-darwin-arm64": "4.62.4", + "@rollup/rollup-darwin-x64": "4.62.4", + "@rollup/rollup-freebsd-arm64": "4.62.4", + "@rollup/rollup-freebsd-x64": "4.62.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.4", + "@rollup/rollup-linux-arm-musleabihf": "4.62.4", + "@rollup/rollup-linux-arm64-gnu": "4.62.4", + "@rollup/rollup-linux-arm64-musl": "4.62.4", + "@rollup/rollup-linux-loong64-gnu": "4.62.4", + "@rollup/rollup-linux-loong64-musl": "4.62.4", + "@rollup/rollup-linux-ppc64-gnu": "4.62.4", + "@rollup/rollup-linux-ppc64-musl": "4.62.4", + "@rollup/rollup-linux-riscv64-gnu": "4.62.4", + "@rollup/rollup-linux-riscv64-musl": "4.62.4", + "@rollup/rollup-linux-s390x-gnu": "4.62.4", + "@rollup/rollup-linux-x64-gnu": "4.62.4", + "@rollup/rollup-linux-x64-musl": "4.62.4", + "@rollup/rollup-openbsd-x64": "4.62.4", + "@rollup/rollup-openharmony-arm64": "4.62.4", + "@rollup/rollup-win32-arm64-msvc": "4.62.4", + "@rollup/rollup-win32-ia32-msvc": "4.62.4", + "@rollup/rollup-win32-x64-gnu": "4.62.4", + "@rollup/rollup-win32-x64-msvc": "4.62.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz", + "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..27ea37a --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "dukang-haoke-official", + "private": true, + "version": "1.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.0" + }, + "devDependencies": { + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "typescript": "~5.8.3", + "vite": "^6.3.5" + } +} diff --git a/public.zip b/public.zip new file mode 100644 index 0000000..2a97254 Binary files /dev/null and b/public.zip differ diff --git a/public/assets/brand-swatch.png b/public/assets/brand-swatch.png new file mode 100644 index 0000000..729c6d2 Binary files /dev/null and b/public/assets/brand-swatch.png differ diff --git a/public/assets/brand/emb_p15_3.png b/public/assets/brand/emb_p15_3.png new file mode 100644 index 0000000..377bf88 Binary files /dev/null and b/public/assets/brand/emb_p15_3.png differ diff --git a/public/assets/brand/emb_p31_1.png b/public/assets/brand/emb_p31_1.png new file mode 100644 index 0000000..c8667a3 Binary files /dev/null and b/public/assets/brand/emb_p31_1.png differ diff --git a/public/assets/brand/emb_p33_1.png b/public/assets/brand/emb_p33_1.png new file mode 100644 index 0000000..9f3a959 Binary files /dev/null and b/public/assets/brand/emb_p33_1.png differ diff --git a/public/assets/brand/emb_p52_3.png b/public/assets/brand/emb_p52_3.png new file mode 100644 index 0000000..775c849 Binary files /dev/null and b/public/assets/brand/emb_p52_3.png differ diff --git a/public/assets/brand/emb_p56_3.png b/public/assets/brand/emb_p56_3.png new file mode 100644 index 0000000..6a706d7 Binary files /dev/null and b/public/assets/brand/emb_p56_3.png differ diff --git a/public/assets/brand/emb_p58_2.png b/public/assets/brand/emb_p58_2.png new file mode 100644 index 0000000..0b7e4b5 Binary files /dev/null and b/public/assets/brand/emb_p58_2.png differ diff --git a/public/assets/brand/emb_p6_5.png b/public/assets/brand/emb_p6_5.png new file mode 100644 index 0000000..17d47ee Binary files /dev/null and b/public/assets/brand/emb_p6_5.png differ diff --git a/public/assets/brand/photo_p11_1.jpg b/public/assets/brand/photo_p11_1.jpg new file mode 100644 index 0000000..ea36f74 Binary files /dev/null and b/public/assets/brand/photo_p11_1.jpg differ diff --git a/public/assets/brand/photo_p11_2.jpg b/public/assets/brand/photo_p11_2.jpg new file mode 100644 index 0000000..ff7687b Binary files /dev/null and b/public/assets/brand/photo_p11_2.jpg differ diff --git a/public/assets/brand/photo_p6_4.jpg b/public/assets/brand/photo_p6_4.jpg new file mode 100644 index 0000000..8c6a2b8 Binary files /dev/null and b/public/assets/brand/photo_p6_4.jpg differ diff --git a/public/assets/brand/photo_p6_5.jpg b/public/assets/brand/photo_p6_5.jpg new file mode 100644 index 0000000..a2bfcf1 Binary files /dev/null and b/public/assets/brand/photo_p6_5.jpg differ diff --git a/public/assets/brand/photo_p7_4.jpg b/public/assets/brand/photo_p7_4.jpg new file mode 100644 index 0000000..4f973dd Binary files /dev/null and b/public/assets/brand/photo_p7_4.jpg differ diff --git a/public/assets/brand/photo_p8_4.jpg b/public/assets/brand/photo_p8_4.jpg new file mode 100644 index 0000000..797e189 Binary files /dev/null and b/public/assets/brand/photo_p8_4.jpg differ diff --git a/public/assets/brand/photo_p9_1.jpg b/public/assets/brand/photo_p9_1.jpg new file mode 100644 index 0000000..309e6b2 Binary files /dev/null and b/public/assets/brand/photo_p9_1.jpg differ diff --git a/public/assets/logo.png b/public/assets/logo.png new file mode 100644 index 0000000..1182132 Binary files /dev/null and b/public/assets/logo.png differ diff --git a/public/assets/poetry/emb_p25_4.png b/public/assets/poetry/emb_p25_4.png new file mode 100644 index 0000000..d450974 Binary files /dev/null and b/public/assets/poetry/emb_p25_4.png differ diff --git a/public/assets/poetry/emb_p33_4.png b/public/assets/poetry/emb_p33_4.png new file mode 100644 index 0000000..fe7bcc9 Binary files /dev/null and b/public/assets/poetry/emb_p33_4.png differ diff --git a/public/assets/poetry/emb_p35_4.png b/public/assets/poetry/emb_p35_4.png new file mode 100644 index 0000000..8006891 Binary files /dev/null and b/public/assets/poetry/emb_p35_4.png differ diff --git a/public/assets/poetry/emb_p49_4.png b/public/assets/poetry/emb_p49_4.png new file mode 100644 index 0000000..acd5f84 Binary files /dev/null and b/public/assets/poetry/emb_p49_4.png differ diff --git a/public/assets/poetry/emb_p59_4.png b/public/assets/poetry/emb_p59_4.png new file mode 100644 index 0000000..d4f7a9a Binary files /dev/null and b/public/assets/poetry/emb_p59_4.png differ diff --git a/public/assets/poetry/emb_p60_4.png b/public/assets/poetry/emb_p60_4.png new file mode 100644 index 0000000..070a6b3 Binary files /dev/null and b/public/assets/poetry/emb_p60_4.png differ diff --git a/public/assets/poetry/emb_p66_4.png b/public/assets/poetry/emb_p66_4.png new file mode 100644 index 0000000..4cbe434 Binary files /dev/null and b/public/assets/poetry/emb_p66_4.png differ diff --git a/public/assets/poetry/emb_p67_4.png b/public/assets/poetry/emb_p67_4.png new file mode 100644 index 0000000..0e81655 Binary files /dev/null and b/public/assets/poetry/emb_p67_4.png differ diff --git a/public/assets/poetry/photo_p10_3.jpg b/public/assets/poetry/photo_p10_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p10_3.jpg differ diff --git a/public/assets/poetry/photo_p11_3.jpg b/public/assets/poetry/photo_p11_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p11_3.jpg differ diff --git a/public/assets/poetry/photo_p12_3.jpg b/public/assets/poetry/photo_p12_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p12_3.jpg differ diff --git a/public/assets/poetry/photo_p13_3.jpg b/public/assets/poetry/photo_p13_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p13_3.jpg differ diff --git a/public/assets/poetry/photo_p14_3.jpg b/public/assets/poetry/photo_p14_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p14_3.jpg differ diff --git a/public/assets/poetry/photo_p15_3.jpg b/public/assets/poetry/photo_p15_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p15_3.jpg differ diff --git a/public/assets/poetry/photo_p16_3.jpg b/public/assets/poetry/photo_p16_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p16_3.jpg differ diff --git a/public/assets/poetry/photo_p17_2.jpg b/public/assets/poetry/photo_p17_2.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p17_2.jpg differ diff --git a/public/assets/poetry/photo_p18_3.jpg b/public/assets/poetry/photo_p18_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p18_3.jpg differ diff --git a/public/assets/poetry/photo_p19_3.jpg b/public/assets/poetry/photo_p19_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p19_3.jpg differ diff --git a/public/assets/poetry/photo_p20_3.jpg b/public/assets/poetry/photo_p20_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p20_3.jpg differ diff --git a/public/assets/poetry/photo_p6_3.jpg b/public/assets/poetry/photo_p6_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p6_3.jpg differ diff --git a/public/assets/poetry/photo_p7_3.jpg b/public/assets/poetry/photo_p7_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p7_3.jpg differ diff --git a/public/assets/poetry/photo_p8_3.jpg b/public/assets/poetry/photo_p8_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p8_3.jpg differ diff --git a/public/assets/poetry/photo_p9_3.jpg b/public/assets/poetry/photo_p9_3.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/poetry/photo_p9_3.jpg differ diff --git a/public/assets/qingxiang/emb_p12_2.png b/public/assets/qingxiang/emb_p12_2.png new file mode 100644 index 0000000..2ca8e89 Binary files /dev/null and b/public/assets/qingxiang/emb_p12_2.png differ diff --git a/public/assets/qingxiang/emb_p13_4.png b/public/assets/qingxiang/emb_p13_4.png new file mode 100644 index 0000000..6fe78b4 Binary files /dev/null and b/public/assets/qingxiang/emb_p13_4.png differ diff --git a/public/assets/qingxiang/emb_p16_4.png b/public/assets/qingxiang/emb_p16_4.png new file mode 100644 index 0000000..ef72e27 Binary files /dev/null and b/public/assets/qingxiang/emb_p16_4.png differ diff --git a/public/assets/qingxiang/emb_p6_2.png b/public/assets/qingxiang/emb_p6_2.png new file mode 100644 index 0000000..e51c7e8 Binary files /dev/null and b/public/assets/qingxiang/emb_p6_2.png differ diff --git a/public/assets/qingxiang/emb_p6_8.png b/public/assets/qingxiang/emb_p6_8.png new file mode 100644 index 0000000..644edce Binary files /dev/null and b/public/assets/qingxiang/emb_p6_8.png differ diff --git a/public/assets/qingxiang/emb_p7_4.png b/public/assets/qingxiang/emb_p7_4.png new file mode 100644 index 0000000..51c37a4 Binary files /dev/null and b/public/assets/qingxiang/emb_p7_4.png differ diff --git a/public/assets/qingxiang/emb_p7_5.png b/public/assets/qingxiang/emb_p7_5.png new file mode 100644 index 0000000..b874dc7 Binary files /dev/null and b/public/assets/qingxiang/emb_p7_5.png differ diff --git a/public/assets/qingxiang/emb_p7_6.png b/public/assets/qingxiang/emb_p7_6.png new file mode 100644 index 0000000..2bad287 Binary files /dev/null and b/public/assets/qingxiang/emb_p7_6.png differ diff --git a/public/assets/qingxiang/photo_p11_2.jpg b/public/assets/qingxiang/photo_p11_2.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/qingxiang/photo_p11_2.jpg differ diff --git a/public/assets/qingxiang/photo_p12_2.jpg b/public/assets/qingxiang/photo_p12_2.jpg new file mode 100644 index 0000000..6f211a8 Binary files /dev/null and b/public/assets/qingxiang/photo_p12_2.jpg differ diff --git a/public/assets/qingxiang/photo_p13_2.jpg b/public/assets/qingxiang/photo_p13_2.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/qingxiang/photo_p13_2.jpg differ diff --git a/public/assets/qingxiang/photo_p6_2.jpg b/public/assets/qingxiang/photo_p6_2.jpg new file mode 100644 index 0000000..2703433 Binary files /dev/null and b/public/assets/qingxiang/photo_p6_2.jpg differ diff --git a/public/assets/qingxiang/photo_p6_4.jpg b/public/assets/qingxiang/photo_p6_4.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/qingxiang/photo_p6_4.jpg differ diff --git a/public/assets/qingxiang/photo_p6_6.jpg b/public/assets/qingxiang/photo_p6_6.jpg new file mode 100644 index 0000000..913ed9a Binary files /dev/null and b/public/assets/qingxiang/photo_p6_6.jpg differ diff --git a/public/assets/qingxiang/photo_p6_7.jpg b/public/assets/qingxiang/photo_p6_7.jpg new file mode 100644 index 0000000..2820b45 Binary files /dev/null and b/public/assets/qingxiang/photo_p6_7.jpg differ diff --git a/public/assets/qingxiang/photo_p6_8.jpg b/public/assets/qingxiang/photo_p6_8.jpg new file mode 100644 index 0000000..d62d7f0 Binary files /dev/null and b/public/assets/qingxiang/photo_p6_8.jpg differ diff --git a/public/assets/qingxiang/photo_p6_9.jpg b/public/assets/qingxiang/photo_p6_9.jpg new file mode 100644 index 0000000..307b25a Binary files /dev/null and b/public/assets/qingxiang/photo_p6_9.jpg differ diff --git a/public/assets/qingxiang/photo_p7_2.jpg b/public/assets/qingxiang/photo_p7_2.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/qingxiang/photo_p7_2.jpg differ diff --git a/public/assets/qingxiang/photo_p7_4.jpg b/public/assets/qingxiang/photo_p7_4.jpg new file mode 100644 index 0000000..336a84a Binary files /dev/null and b/public/assets/qingxiang/photo_p7_4.jpg differ diff --git a/public/assets/qingxiang/photo_p7_5.jpg b/public/assets/qingxiang/photo_p7_5.jpg new file mode 100644 index 0000000..6ab52c8 Binary files /dev/null and b/public/assets/qingxiang/photo_p7_5.jpg differ diff --git a/public/assets/qingxiang/photo_p7_6.jpg b/public/assets/qingxiang/photo_p7_6.jpg new file mode 100644 index 0000000..bb56536 Binary files /dev/null and b/public/assets/qingxiang/photo_p7_6.jpg differ diff --git a/public/assets/qingxiang/photo_p8_1.jpg b/public/assets/qingxiang/photo_p8_1.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/qingxiang/photo_p8_1.jpg differ diff --git a/public/assets/qingxiang/photo_p9_2.jpg b/public/assets/qingxiang/photo_p9_2.jpg new file mode 100644 index 0000000..b272360 Binary files /dev/null and b/public/assets/qingxiang/photo_p9_2.jpg differ diff --git a/public/assets/qr-contact.png b/public/assets/qr-contact.png new file mode 100644 index 0000000..eaad566 Binary files /dev/null and b/public/assets/qr-contact.png differ diff --git a/public/assets/t30-bottle.png b/public/assets/t30-bottle.png new file mode 100644 index 0000000..2dda76b Binary files /dev/null and b/public/assets/t30-bottle.png differ diff --git a/scripts/_pdf_extract/brand.txt b/scripts/_pdf_extract/brand.txt new file mode 100644 index 0000000..c69ea93 --- /dev/null +++ b/scripts/_pdf_extract/brand.txt @@ -0,0 +1,2161 @@ +\n===== PAGE 1 =====\n酒祖杜康品牌传承 + 陈武戟 著\n===== PAGE 2 =====\n第一部分 +◎ 浅议杜康文化在中国酒文化中的地位 ………………… / 01 +一、杜康其人 …………………………………………… / 07 +二、杜康造酒 …………………………………………… / 13 +三、杜康祠 ……………………………………………… / 22 +第二部分 +◎ 杜康造酒遗址 …………………………………………… / 33 +一、杜康村 ……………………………………………… / 34 +二、杜康泉 ……………………………………………… / 40 +三、北宫玄武崇拜及双胞胎见闻 ……………………… / 46 +第三部分 +◎ 名人与杜康 ……………………………………………… / 49 +一、三曹与杜康 ………………………………………… / 50 +目录\n===== PAGE 3 =====\n二、苏轼与杜康 ………………………………………… / 57 +三、邵雍 ·安乐窝 ·杜康 ……………………………… / 60 +四、周恩来总理和田中首相与杜康 …………………… / 63 +五、卢展工的“大杜康”情结 ………………………… / 67 +第四部分 +◎ 杜康大事记 …………………………………………… / 74 +第五部分 +◎ 酒厂介绍 ……………………………………………… / 96 +浅 +议 +杜 +康 +文 +化 +在 +中 +国 +酒 +文 +化 +中 +的 +地 +位 +第 +一 +部 +分\n===== PAGE 4 =====\n这位“始作秫酒”的传奇人物,早已超越了具体的历史人物形象, +演变为民族创造力的精神图腾。在五千年的文明史中,与中华民族 +的历史文化相行传承,共同为中华民族文化的成长与发展发挥不可 +或缺的重要作用。 +酒神的诞生:从谷物发酵到文明觉醒,杜康文化被赋予通神 +媒介,成为礼制变迁的物化见证。 +酒祖杜康被世人尊崇为“酒神”,是杜康文化区别于其他酒文 +化的主要特征。世人敬奉杜康的记载始见于隋唐。继隋人王绩的“祭 +杜康新庙文”之后,关于“酒神”的颂词便不断地见诸文人笔下。 +宋 ·苏轼的“他年血食汝,当配杜康神”(《饮酒四首》) ;张耒 +的“买金铸杜康,百拜誓皈依”(《次韵渊明饮酒诗》) ;晁说之 +的“辜负景锺勋业志, 杜康庙里做忠臣”(《饮酒》); 陆游的“书 +中友王绩,堂上祠杜康”;明 • 周淑禧的《杜康庙》等诗词,都把 +杜康作为“神”,敬奉于作品之中。 +在民间,对杜康的崇拜以及和酒神对话的宗教意识更具生命力。 +酒祖故里的杜康祠祭祀酒祖的完整仪轨,酿酒作坊供奉杜康神像的 +传统已延续千年。杜康封坛仪式、祭祖大典等传统习俗一直保持着 +上古酒祭的遗风。杜康文化衍化出的“饮惟祀”的酒德观念,揭示 +了“国之大事, 在祀在戎”的深层关联, 塑造了中国人“酒以成礼” +杜康,是中国秫酒的“酒宗”、“酒祖”。杜康造酒,不仅 +肇始了华夏酒业的辉煌诞生,铸就了酒行业顶礼膜拜的精神图腾, +而且创造了行业特征与地域色彩交相辉映的杜康文化。经过上下 +五千年的岁月积淀,这种文化形态所蕴含的思想观念、人文情怀、 +道德规范和意志品质,已成为中国酒文化的标志性符号。 +历史典籍的记载奠定了杜康的酒祖地位,使杜康文化成为中 +国酒文化的“精神原点”。 +先秦典籍《世本》中“杜康作秫酒”的记载, 在东汉许慎《说 +文解字》中获得语言学佐证: “古者少康初作箕帚、秫酒。少康, +杜康也”。 +《世本》为帝王谱牒, 《说文》为文字起源。“杜康造酒”载 +入其中,决非偶然。这个传说诞生于礼乐文明的成熟期,在商周鼎 +彝的祭祀仪式里,在《礼记》记载的“玄酒明水”中,酒完成了从 +物质到精神的蜕变。将技术发明升华为中华文明的肇始,标志着酿 +酒技艺对中华文明的深刻影响。 +西晋史学家江统的《酒诰》载: “酒之所兴,肇自上皇,五帝 +不过,上溯三王。或云仪狄,一曰杜康。有饭不尽,委余空桑,郁 +积成味,久蓄其芳”。这个将农耕文明与酿酒技艺并置的记载,更 +揭示了酒文化在中华文明中所独有的肇始性、开创性特征。杜康, +2 +3 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 5 =====\n的独特文化心理,促使了中华礼乐文明的成熟。这种本属于农业文 +明的产物,逐渐演变成了一种精神图腾,其文化建构使杜康超越了 +地域与时间的限制,成为中华文明共同的精神遗产。这种将技术神 +圣化的文化现象,明显地体现了中国人“技进乎道”的哲学智慧。 +文学审美维度 : 杜康文化孕育出了独特的诗酒美学。 +古典诗词是中华民族的文化瑰宝 , 自西周始 , 中华诗坛上的名 +篇佳句犹如历史天空中的一条星河 , 而杜康古诗词则是这条星河中 +璀璨的明珠。杜康的酒祖文化、酒神文化、酒俗礼仪文化,已成为 +诗人们特别钟情的审美意象。魏晋时期,通过魏武帝曹操的渲染, +杜康形象在“何以解忧,唯有杜康”中完成了诗性转化,从此成为 +中国文人精神世界的通行密码。诗圣杜甫的“杜酒偏劳劝,张梨不 +外求”(《题张氏隐居》) ;白居易的“不似杜康神用速,十分一 +盏便开眉”(《换镜杯》) 王绩的《祭杜康新庙文》; 苏东坡的“他 +年血食汝, 当配杜康神”(《饮酒四首》) ,辛弃疾的“杜康初筮, +正得云雷”(《沁园春 ·杯汝知乎》) 汤显祖的“宽金盏, 泄杜康” +(《雁来红》) 冯梦龙的“杜康哥,我把你做恩人叫”(《谢杜康》) +陈涵辉的《杜康桥》等一百多首意寄酒祖的古诗词曲赋,写政治、 +写哲理、写朋友之谊、写田园风光,叙悲欢离合之事,抒忧国忧民 +之情,褒贬善恶,洞察人生,其审美思维之精妙,常把人带入鲜活 +生动的意境之中,已成为中国酒文化系列中最具记忆性、阅读性、 +歌唱性和传播性的文化元素。这些诗词文化的活态记忆,孕育出了 +中华民族独特的诗酒美学,铸就了诗酒风流的精神图腾,成为中国 +酒文化宝库中弥足珍贵的文化遗产。 +杜康“天人合一”的酿造理念,凸显了中国酒文化对自然规 +律的敬畏和尊重。 +《齐民要术》记载: “造酒美恶,系于水土”。一语道破了酿 +酒技艺与自然地理的深刻羁绊。杜康酿酒技艺作为中国最古老的固 +态发酵技术,不仅开创了谷物酿酒的先河,更在文明演进中构筑起 +独特的精神场域。周代《礼记》记载的“五齐六法”,展现着古代 +酿酒工对自然规律的深刻认知和把控。这个始于新石器时代晚期的 +酿造体系,其独特性,就在于将谷物转化完全托付给自然微生物的 +作用。这本质上就是对自然规律的顺应与引导, 与老子“道法自然” +的思想形成奇妙共振,从而构成了中国酒文化区别于其他酒类的根 +本特质,成为中华酿酒文化的标志性符号。 +杜康村,这个被《大元一统志》记载的“杜康造酒处”, “鸳 +鸯虾抱一块”“鸭生双黄蛋,人生龙凤胎”“河岸柳树怀抱乖”“两 +脚一蹬泉出来”等自然奇观,承载的是中国酒文化最原始的生命密 +码。“以秫为骨,以曲为魂,在“桑泥古窖”中酝酿发酵”的酿制 +4 5 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 6 =====\n工艺,是建立在“玄武古泉”、“桑泥古窖”之本土独特优势资源 +之上的文化成果,是古代杜康酒工“品土和泥”、“掐时踩曲”、 +“观花摘酒”、“石穴藏珍”酿酒秘法的传承和发展。 +站在二十一世纪回望,杜康,这个中国酒文化符号,犹如一坛 +陈年佳酿,历经千年岁月愈发醇厚。当我们以前瞻的眼光重新审视 +这个文化符号时,会发现杜康所代表的酿酒技术,实则是中华文明 +发展进程中的关键性突破,其影响力至今仍在重构着中国人的精神 +图谱。 +因此说,杜康文化是中国酒文化的重要组成部分,是中国酒文 +化的源头和象征。杜康造酒,承载着中华民族悠久的酿酒历史和独 +特的文化内涵,其地位和影响力在中华酒文化中具有特殊意义。 +一 | 杜康其人 +中国酒文化源远流长。在浩如烟海的酒史记载中,最为人津 +津乐道的便是“杜康”。这个被后世尊崇为“酒祖”的秫酒创始 +者,在中国行业元祖中,独享着“酒神”的香火。已成为中国酒 +文化的精神图腾。 +先秦典籍《世本》记载“杜康作秫酒”,东汉许慎《说文解 +字》载: “古者少康初作箕帚、秫酒。少康,杜康也”。这个将 +农耕文明与酿酒技艺并置的记载,揭示了杜康在中华文明发展中 +的特殊地位。 +6 7 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 7 =====\n祀天地神灵,做过“庖正”的他,从百姓的醴醪糟饭制作中嗅到了 +一丝“醇香”,基于自己对粱秫的认知和烹食味道的敏感,认定此 +物乃黍谷之精华,要获得它必须承命于天时地利,且成败于水!为 +此 , 他走出了“旧都”,溯伊水而上,终于找到了一溪中流,百泉 +喷涌,温湿潮润,桑果飘香的“空桑涧”, 他在这里反反复复地 +取水蒸谷 , 一次一次地将馊饭装入天赐的“枯桑腰洞”, 终于获得 +了“酒母”。从此,开始了人工制曲,秫酒由此诞生。 +值得关注的是,两个传说中都提到了“空桑秽饭”。西晋学者 +江统的专论《酒诰》(《全晋文》卷一百六)为杜康造酒做了定论: +“酒之所兴,肇自上皇,五帝不过, +上溯三王,或曰仪狄,一曰杜康,有 +饭不尽,委余空桑, 郁积成味, 久蓄其 +芳,概出于此,不由奇方。” + 明朝宋翼中的《酒经》也说:“空 +桑秽饭,酝以稷麦,以成酒醪,酒之 +始也”(《太平御览》卷八百四十三 +饮食部 ·酒上) +空桑涧,位于伊河上游, 起始于杜康河源头。有一条“史志链” +可为其证: +《吕氏春秋 ·本味篇》载 :“有佚氏女子采桑,得婴儿于空桑 +之中,献之其君。其君令蜉人养之。察其所以然,曰: “其母居伊 +杜康为什么要造酒,在什么地方造酒,造的是什么酒?民间流 +传最久远的是两则传说。 + 传说一: +杜康原是黄帝麾下的牧羊人。有一次,他把吃剩的饭团倒入空 +桑涧一棵老桑树的腰洞之中。后来,突然发现装在树洞中的饭团胀 +满了树洞,且透着一股奇香。他沾指口尝,味道醇美,一连喝了几 +口,顿觉神清气爽,浑身是力。他意识到,此物非俗物,便顺手摘 +下腰间装水的皮囊,接了一袋“水”匆匆赶到“合宫”去见黄帝。 +黄帝听完杜康的报告,又仔细品尝了他带来的味道浓香的水, +高兴地说,此物乃粮食之元精也,遂命仓颉给这种香味很浓的水取 +个名字,仓颉略一沉思道,酉日得水,就叫个‘酉’(酒)吧。” +杜康把空桑树洞中的秽饭称为“酒母”。之后,边琢磨,边仿 +制,做出了人工酒母, 取名为“麯”,并在空桑涧建起了酿酒作坊, +做出了天底下第一坛玉液琼浆。 +后人为了纪念杜康,便尊其为酿酒鼻祖。 +传说二: +夏代,太康年间,因王朝内乱,太康失国。其弟仲康及仲康之 +子相先后被寒浞杀害。相之妻怀着身孕逃往娘家有仍氏后生少康。 +少康长大后得到有虞部落的支持,一边经营土地,一边操练兵 +马。终于夺回了大夏王朝的政权。史称“少康中兴”。 +大夏江山失而复得,少康感恩天地赐福,他要用最好的礼品祭 +8 9 +晋 江统《酒诰》文 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 8 =====\n始 , 而夏代杜康早于杜姓千年以上,这个“杜”作何解释 ? +此外,少康贵为一国之君,为何自谓“杜康”?就连古典巨著《世 +本》《说文解字》也都认定“少康即杜康”。以致后来,由此而衍 +生的“杜康村”、“杜康河”、“杜康庙”、“杜康泉”“杜康酒” +等地名、物名, 也被堂而皇之地写进了国家史志。这个因由是什么? +要回答这个问题得从夏朝的帝序关系及古文字说起: +夏朝从大禹开始立国, 禹传位于启,接下来太康至仲康至少康。 +“太康”“中康”“少康”,是大夏王朝的帝序排位,又因为他们 +同为有夏国君,历史上亦统称“夏康”。因夏朝来源于土方族,夏 +人尊“土”为神。远古时期, 土、杜相通。《经典释文》载 :“土, +音杜。《韩诗》作杜,义同。”《汉书.地理志》引土作杜。王引 +之说, “土读为杜”。这就是说,少康对于“土”(杜)的崇尚非 +同一般。 +“杜”,在远古时期并不代表姓氏,它的本意是杜梨树,代表 +的是部落祭祀神灵的“社木”,是人与神之间沟通的表达性信物。 +(见胡厚宣《甲骨文为夏民族考》)少康选杜康为名, 一是纪史, +二是崇敬。所以, 才赐王室酒坊为“杜康酒坊”,后来发展成为“杜 +康村”。 +杜康酒问世后,历代帝王均视为珍品。相传,周平王东迁洛 +邑以后,常为国土被外族所侵而忧愁,吃不好饭,睡不好觉,身体 +日渐消瘦。为解君忧,臣属们向他进献了杜康酒。平王饮后,便觉 +得气顺眉展,百忧尽解,精神陡振,遂追封杜康为‘酒仙’,赐封 +水之上……”。 +北魏郦道元《水经注》卷七《河水》注云: “(伊水)又东北 +过新城县南。”注云:“西北合康水。”。 +至今,空桑涧依然美丽如初; +杜康水依然悠悠北流;玄武岩石 +隙中的山泉依然汩汩有声,明珠 +四濺。尤其杜康河畔那株“空桑 +树”,糙皮暴根,肚腹空空, 内 +心已经枯朽,凭着一层薄薄的外 +皮却还枝繁叶茂地散发着生命的 +活力。 +这是空桑涧唯一 留下来的 +“活化石”。河南省人民政府将 +其认定为一级古树,授牌保护。 +中华民族是个有作为的民 +族,尤其发明创造举世瞩目。少康,这位中古时期的君主,在寄人 +篱下的环境中成长,在躲避追杀中成功逆袭,其智商自然是异于常 +人。他凭借自己做“庖正”的经验和灵感,让黍谷在特定的环境中 +发酵,依托人的智慧做出了“酒母”,开创了人工酿酒新纪元。后 +世的史学家多认可第二种说法,杜康就是夏朝的第五代君主少康。 +在这里,还需要讲清楚一个问题:少康为什么是杜康? +若按《通志 · 氏族略 · 以国为氏》的记载 , 杜姓当是从周朝起 +10 11 +位于杜康河畔的空桑酒树 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 9 =====\n二 | 杜康造酒 +中国在什么时候有了秫酒?几千年来,历史学家搜尽史籍去 +探源索隐,考古学界走向原野去发掘遗迹,酿酒行业用分析酿酒 +技术要素的方法判断始由,研究者从各个角度追溯秫酒的起源。 +于是,便出现了猿猴造酒说,酒星造酒说,黄帝造酒说,舜尧造 +酒说,杜康造酒说,仪狄造酒说等等说法。 +以至于后世一些学者对秫酒起源的古籍记载无所适从。如,宋 +代《事物纪原》的作者高承就在“卷九”中写道: “不知杜康何世 +人,而古今多言其始造酒也”。《本草衍义》的作者寇宗爽在卷二 +O“酒”条中写道“《本草》中已著酒名,信非仪狄明矣”。明代 +著名医药家李时珍编著的《本草纲目 · 二十五卷 ·谷部 ·酒 ·集解》 +一章中,更“指名道姓”地写道: “《本草》已著酒名, 《素问》 +亦有酒浆,则酒自黄帝始,非仪狄矣。” +说法林林总总,莫衷一是。 +据考古证实,我国在五千年前 ,甚至 9000 年前就已经出现了酒; +夏禹时期,仪狄造酒“甘而美”也是史实。但需要强调的是,远古 +时期在大自然状态下产生的“酒”和人工制曲酿制的“酒”是内容 +不同的两种“物”,这两个概念是不可混混淆肴的。 +杜康村为‘杜康仙庄’。至此,杜 +康超越了具体的历史人物形象,完 +成了从技术发明者到文化象征的蜕 +变,由人而仙。 +汉魏时期,光武帝刘秀中兴 +汉室,定都洛阳,兴土木建立“杜 +康庙”,杜康由仙而神。每逢重大 +节日,皇家还会下达“大醋”令, +让民间纪念酒神而“聚饮”。 +至今,杜康庙前还有一条名曰 +“大醋巷”的小街。 +三国时期, 魏武帝曹操“何以解忧, 唯有杜康”的《短歌行》, +更是把“杜康”铭刻在了“酒”的圣殿之上,使这位中国秫酒的创 +始者,从历史的传说人物升华为文化符号而代代相传,成为中华文 +明的精神遗产。 +12 13 +清末杜康村民家写有“杜康 +仙庄”印记的物品 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 10 =====\n《说文解字》曾明确记载:“少康,杜康也。古者仪狄做酒醪。 +杜康作秫酒”。 +宋·朱翼中《酒经·上》 +开篇就说 :“酒之作尚矣, +仪狄作酒醪,杜康秫酒。 +岂以善酿得名,盖抑始于 +此耶。” +对于“酒醪”和“秫 +酒”,古人区分得非常清 +楚: +《说文·酉部》:“醪, +汁滓酒也。”南朝顾野王 +著《玉篇》载: “醴醪, +甜酒也。”东汉刘熙著《释名》载: “醴,礼也。酿之一宿而成, +醴有酒味而已也。” +从夏代的文献中搜索酿酒痕迹,可以发现一个典型的形容酒味 +的字:“甘”。如《战国策》说,“仪狄造酒献于禹, 禹饮而甘之”。《夏 +书 ·五子之歌》说太康“甘酒嗜音”。甘即甜。 这说明,在少康之前, +酒的味道是甘甜的。 +看来, “醪”的特点是酿造时间很短,短至“一宿即成”,是 +汁渣相混的“食品”,而非“饮品”。 +明《天工开物》讲得更清楚: “凡酿酒必资曲药成信。无曲即 +佳米珍黍,空造不成。古来曲造酒, 蘖造醴,后世厌醴味薄,遂至 +失传,则并蘖法亦亡”。 +这段话的意思是:酿酒必须要用酒曲,没有酒曲,即便有好米 +好黍也酿不成酒。 +这里有必要科普一下,用现代科技术语来解释:酿酒发酵有 +两种形式,一是单发酵,二是复式发酵。单发酵是在天然状态下, +依靠自然界的微生物来完成,原料是谷物的芽,成品是味道甘甜的 +“醪”。而复式发酵是先将淀粉水解为葡萄糖,而后再将葡萄糖转 +化为乙醇,这种糖化加酒化过程必须依靠具有特殊糖化、酒化力的 +霉菌 , 即酒母,也就是“麯”。曲是人工制造的,这是我国独一无 +二的伟大发明,在世界酿酒科技史上占有重要的地位。 +正是以上原因,我国历史上最早记述秫酒起源的西晋尚书郎江 +统才在他的《酒诰》中认定,秫酒发源于上古之末期, 这和汉书《世 +本》《说文解字》的记载相吻合。至于秫酒创始者的认定,作者选 +词遣意十分严谨。他自己不敢定论, 却在仪狄名字之前冠以 “或曰”, +在杜康名字之前冠以 “一曰”。诚然, “一” 和 “或” 的文字 +定义是完全不同的。 +由此看来,古人通过区分“酒醪”和“秫酒”之概念,已经明 +明白白地道出了秫酒的起源:曲,源于天然存在,而完成于人工合 +成。杜康的功绩,正是发明了“酒麯”,酿出了“秫酒”,成为华 +夏酿酒第一人。 +明确了杜康造酒,接下来说说杜康怎么造酒。 +14 15 +《酒经》关于杜康和仪狄造酒的记载 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 11 =====\n古代制曲不仅神秘而且神 +圣。“曲”字,曾有“麯”“ 麴”“粬” +多种写法,《淮南子 主术训》 +记载“旋曲中规”,高诱注: +“曲,屈”。可见,制曲技艺 +是多么的精细繁多,曲折复杂 +(曲营村亦称屈营村即源于此)。 +《齐民要术》称酒曲为“神曲”, +意在告诉人们:神曲就是曲神, +不可不敬,不敢不敬。 +“五齐六法”通过对古代 +酿酒经验的总结。为后世酿酒技术的发展奠定了稳定的基础。 数 +千年来,这套科学的酿酒工艺,由初始的概念认知到实践运用,由 +感性认识到理性升华,由物理感觉到数字把控,一代一代地传承下 +来,推动了华夏民族酒业的发展。 +元朝建立后,西方的蒸馏法酿酒技术传向中土,给中国的酒文 +化增添了新的元素。《元史》卷二 0 五《卢世荣传》记载: “大都 +酒课, 日用米千石”。可见酿酒规模之大。蒙古人十分喜欢中土的 +谷物酒和谷物发酵技术,为了酿制上等细酒,官方还在光禄寺内盖 +了一座“杜康庙”,培养了一大批“杜康弟子”,专门酿制御酒供 +帝王享用。元人冯梦祥《析津志 ·祠庙仪祭》一章,对此作了详细 +记录:“杜康庙, 在(京城) 北城光禄寺内。居西偏, 内有天师宫。 +杜康古酿坊酿酒工艺碑廊 +五齐六法中的“黍稻必齐”,讲的是对酿酒原料的严格要求。 +杜康酒坊早在商周时期就在酒坊之南五里地之外选了一处土地专植 +黑黍。慢慢地形成了一个名叫“妙黍村”的自然村落。该村至今依 +然传承着种植高粱的习惯。 +“曲糵必时”,在六法中排位第二。杜康酒坊的制麯业在汉代 +已经专业化。酒坊北二里之外有个“曲营村”,早在千年前就是个 +制曲专业村。 +源自先秦文献的《周礼 ·天官 ·酒正》和《礼记 ·月令》曾有 +杜康造酒“五齐六法”的记载。五齐指的是酿酒过程中发酵液(酒 +醪)的五个不同阶段状态,六法指的是酿酒技术的六项核心要素。 +它们不仅见证了早期酿酒技术的规范化和科学化,同时还借此表达 +了古代“技以载道”的思想。 +16 17 +竖立在“妙黍村”村头的村碑 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 12 =====\n奉礼部摽拨道士一人, +在内提点看经,专 一 +焚修香火,盖为酿造 +御酒。” +明清两朝是秫酒 +酿造最为辉煌的阶段。 +杜康酒的酿酒工艺已 +经高度成熟。曾任户 +部主事和工部郎中等要职的田雯,留有一首《赭阳酒民歌》: “赭 +阳土风古罕有,潘水清甘酿作酒。此风不变已千年,传来疑是杜康 +后……”。把杜康酿酒工艺的传承明明白白地说了出来。 +杜康做酒的地望,历史也都有较为详细的记载: +元朝的国家志 +《大元大一统志》 +记载: “杜康水, +伊阙旧县东南三十 +里, 俗 传 造 酒 于 +此”。 +明万历二十四 +年, 汝 州 知 府 方 +应 选 编 纂《 汝 州 +志 ·卷一·古迹》载:“杜康石 ,城北五十里, 俗传杜康造酒于此”。 +编纂于清 · 顺 +治 十 六 年( 公 元 +1659 年) 的《伊阳 +县志》记载: “杜 +康笆,城北五十里, +俗 传 杜 康 造 酒 于 +此”。 +清道光二十年 +《伊阳县志》记载: +“杜康石 ,在城北五十里,俗传杜康造酒处,弟茅柴传其酿法。有 +杜水,水经注名康水。” +近年来,随着考古成果的出现,埋藏在地下的文物以无可辩驳 +的实据为杜康造酒的地望作了注。1988 年,在杜康祠以北 200 多 +米的杜康河畔,发现了一处古代酒窖。经考古专家鉴定,系建安 +时期的储酒窖,新 +华社通过传真向国 +内外报道了这则新 +闻。 +1990 年 至 +1991 年,河南省文 +物考古所对杜康河 +下游的伊川县彭婆 +18 19 +清 ·道光二十年《《伊阳县志》》关于杜 +康造酒遗址的记载 +明万历二十四年《直隶汝州全志》关于杜康 +村的记载 +元《大元大一统志》关于杜康水的记载 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 13 =====\n时代遗物。 +日月更替,沧海桑田。四千多年来,古老的杜康酒坊经过代 +代传承,现已成为“国酒之源”。进入新时代之后,大型杜康酿酒 +企业的建立,使散落在民间的酿造工艺开始了工业化生产,杜康人 +在和历史、自然、现实的互动中,从静态传承到活态发展,始终把 +握酒祖“根”的特色,在实践中逐步完善了酿制工艺: 1984 年, +杜康酒先后获得商业部金爵奖和轻工部银杯奖 ;1988 年 12 月,杜 +康酒获中华人民共和国质量评定委员会“中华人民共和国产品质量 +奖”。2007 年 2 月,杜康酿酒技艺入选“河南省非物质文化遗产 +保护名录”。2021 年 11 月,“12 区、15 区酒祖杜康”双获第 22 +届布鲁塞尔国际烈性酒大赛金奖。 +杜康是中国秫酒的创始者,他给我们留下的秫酒酿制技艺是一 +个可触摸、可感知的华夏酒文化的根和魂。承载的是中国酒文化的 +生长基因。如此珍贵的历史文化遗产已成为中华民族的无价瑰宝。 +随着社会的发展和酿酒工艺的推陈出新,酒祖杜康一定能够挺起中 +国酒文明的脊梁。 +镇南寨东坡的古文化 +遗址进行考古挖掘, +在 25 座古墓中,出 +土了一大批二里头文 +化类型的精美的夏代 +陶制酒器、酒具。 +2009 年 4 月, +第三次全国文物普查 +时,普查队根据杜康 +遗址的文化灰土层特 +征以及出土的石刀、 +石锥、泥质灰陶残片、 +泥质灰陶豆等文化遗 +存,认定杜康遗址为 +新石器时代至商、西 +周、东周古文化遗址。 +并对现状进行了描 +述:杜康遗址分布面 +积比较广,保存面积 +比较完整,文化内涵 +较为丰富。遗址区内 +发现有较多的新石器 +20 21 +第三次全国文物普查关于杜康遗址的记载 +1990 年,伊川彭婆南寨出土的夏代酒器 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 14 =====\n唐·王绩:祭杜康新庙文 +这个时代,您,极有智慧的杜康先生就 +发现了曲蘖,发明了酒 … … +杜康先生,您功高无量啊!今天, +我给先生盖的新庙宇已经落成,我虔敬 +地摆上供品来祭奠,请先生飨食 … … +王绩盖的这座杜康新庙在什么地方 +呢?《酒经》中有较为详细的记述:“所 +居东南有磐石, 立杜康祠祭之, 导为师, +以革配焉”。 +“所居东南”,自然是指王绩住所 +的东南。即绛州龙门(今山西河津镇) +宋·朱翼中《酒经》 +要探究这个问题,首先得从唐朝著名诗人王绩的《祭杜康新庙 +文》说起: +王绩,字无功,绛州龙门(今山西河津)人 , 一生爱酒。隋大 +业元年(公元 605 年)任职洛阳。他的一篇《祭杜康新庙文》(唐 +书)一直被传承至今。 +祭 杜康新 庙文(节 +选): +岁月日,敢以清酌之 +奠,敬祭先生之灵曰: +两仪判辟,万象森罗。 +都邑未见,鸟兽独多。茹 +位于杜康河畔的杜康祠 +三 | 杜康祠 +杜康祠,亦名杜康庙。最早见于史志记载的是《唐书》和《大 +元大一统志》。 +大凡到杜康造酒遗址参观游览的人,在感慨杜康文化博大 +精深的同时,心里总想探究一下杜康祠的历史渊源:酒祖杜康什 +么时候由人羽化为神?这座占地三十多亩的古建筑群什么时候建 +的?谁建的?为什么建在这里? +毛饮血, 巢居穴窠。天地不交, +人灵未和。智哉先生,爰作甘 +醴。 …… +这 段 文 字 的 意 思 是: 在 +很古很古的时候,天地阴阳刚 +刚辟开,世界万象还在原始阶 +段,大地上还没有城镇村庄, +到处鸟飞兽逐,我们的祖先有 +的还在树上筑巢而居,生食果 +腹,在洞里避雨安身……,就在 +22 23 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 15 =====\n隋唐五代“河南道”地图(中国地图出版社)关于伊阙县方位标示 +据《唐才子传》载,王绩“性简傲,好饮酒,能尽五斗”。举 +孝廉后,在洛阳任职,其间,多次到杜康酒坊觅酒,对杜康酒神虔 +敬之至,对杜康老庙自然了解甚多。后因醉酒误事被免职回到原籍。 +由此看来, “杜康老庙”的建造时间至少是在隋唐之前。这正 +好和民间传说相吻合。据民间相传,杜康庙始于东汉,为光武皇帝 +敕建。这虽属传说,但也有历史记载佐证。编纂于清 ·道光十八年 +(公元 1838 年)的《伊阳县志》第一卷“地理篇”中有这样的记载: +“杜康石 ,城北五十里,俗传杜康造酒处……”。在同一页相隔两行, +有一条关于“光武井”的记载:“光武井, 城北二十六里楼子庄西。 +元《大元大一统志》关于杜康庙的记载 +“伊阙旧县”,指原来的伊阙县。隋开皇十八年(公元 598 年) +置,治所在今河南伊川县城西南。经查《中国历史地图册(隋唐五 +代) 》图,在“河南道”域内,伊阙县东南三十里处正是今天的杜 +康造酒遗址杜康村。 +山西河津的王绩,怎么会对河南的杜康庙如此了解呢?这得查 +看王绩的履历: +之东南。 +王绩在所居东南处盖了一座新杜康庙。那么,老杜康庙又在何 +方呢?王绩的文中没说。但《大元大一统志》却说得清清楚楚。 +《大元大一统志》是元朝官修的地理总志。是中国古代最大的 +一部舆地书。在《庙宇祭祀》一章中记载: “杜康庙,伊阙旧县东 +南三十里,俗传制酒于此”。 +24 25 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 16 =====\n相传光武夜宿饮水处, 至今地无蝇螨。 +故,一名宿王庄”。这个楼子庄村和 +杜康村现今同属蔡店乡管辖,相距 8 +公里。由此看来,光武皇帝还真的到 +过这方宝地。 +当地还流传着一个美丽的传说: +西汉末年,王莽篡位称帝。他怕 +刘家东山再起,便追杀储君刘秀。刘 +秀闻风而逃。某日子夜,刘秀逃经河 +洛大地,夜宿一村头。黎明时分,突 +觉身上奇疼,起身一看,原来是被一 +只“蝼子蛄”咬了一口。他正要发怒,却听见杀声四起。啊!要不 +是蝼子蛄救驾,我命休矣!这个庄就赐名蝼子庄做个纪念吧。 +过了楼子庄,便是杜康村的“杜康酒坊”。刘秀看到通往洛邑 +的官道上,横七竖八地躺着莽军,不敢贸然前行。便下马向一老者 +问路。老者说: “王莽篡位,天当诛之!杜康酒坊久沐汉室皇恩, +这些贼寇喝了我杜康的‘老酒’,要醉三天三夜才能起身,您就轻 +身慢步去洛邑吧!”说罢,倏然不知去向! +“原来是杜康显灵了!待我登基之后定为酒神修庙宇、塑金身, +让其永远享祀人间香火!”刘秀对天起誓后,默然而去。 +几年后,刘秀中兴汉室, 定都洛阳, 建立东汉王朝, 做了皇帝。 +他不忘自己的承诺,亲下御诏,大兴土木,在杜康河畔建起了一座 +气势恢宏的杜康庙。 +从此,不仅酒坊、酒肆奉杜康为“酒神”。就连皇城内的光禄 +寺也敬奉杜康。元人冯梦祥《析津志 ·祠庙 ·仪祭》记载: “杜康 +庙,在(京城)北城光禄寺内。居西偏,内有天师宫。奉礼部摽拨 +道士一人,在内提点看经,专一焚修香火。盖为酿造御酒,每日于 +上位玉押槽内支酒一瓶,以供杜康。” +宋代著名文学家晁说之瞻仰杜康祠 +后,在一首《饮酒》诗中写道: “与君厌 +苦洛阳尘, 望断今朝那得亲。为问红旗白 +马客,何如左蔗右螯人。辜负景锺勋业志, +杜康庙里作忠臣”。 +明成化十二年(1476 年) ,朝廷析 +嵩县东、汝州西及鲁山北部分地区设立伊 +阳县。首任县长韦坚亲临杜康庙拜祖, 并 +通过募捐修葺了庙宇, 金塑了酒神, 还从 +岘山寺派来一名道士做监院。自此,杜康庙香火炽盛,每年都举办 +祭拜祖师、尊神开光、祈福迎祥等各类斋醮科仪及道场。至今,杜 +康祠内还保存着民国初年中原地区民众相互传抄的《杜康庙斋醮经 +谶录》, 记载着杜康庙为降请各路神真,酬神谢恩,祈求国泰民安 +而举行的斋醮科仪的经谶。 +明朝著名女作家周淑禧曾有一首名曰《杜康庙》的七言诗描述 +当时庙祭的盛况。诗曰: +26 27 +清《伊阳县志》记载的杜 +康造酒遗址和光武井位置 +宋·晁说之《饮酒》 +选自《景迂生集 卷九》 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 17 =====\n酺有新糟酸有醴, +杜康桥上客题诗。 最 +为苦相身为女, 千载 +曾无仪狄祠。 +这首《杜康庙 》 +透出了三个信息:一、 +酺。 即祠庙中的聚会 +饮酒。 说明杜康祠的 +祭祀饮酒活动已是盛 +况空前。二、 酸。祭 +酹也。 酒洒于地祭奠 +为酸。 说明人们祭奠 +酒神杜康是非常虔诚。 +三、“ 杜康桥上客题 +诗” 记述的是诗人在 +杜康庙凭吊杜康酒神 +之后在杜康桥上题诗 +答对的文化聚会。 +况空前,在豫西地区可谓家喻户晓。 +时光荏苒,一晃千载。杜康老庙也和其他所有庙宇一样,在 +风雨侵蚀中经历着荣辱兴替。尤其中原大地历经战火,破坏严重。 +清康熙年间,官家组织人力财力大修了一次,以后多由民间维修, +靠着当地酒坊、酒工的捐赠,维持着杜康祠的香火。 +20 世纪 80 年代初杜康仙庄的杜康庙会实况 +现在的杜康祠,占地三十多亩,为唐宋“廊院”制格局,高低 +错落,布局均衡,且纵横轴线分明。结构,造型,色彩集汉、唐、 +宋、明、清之萃。祠庙内的建筑包括十余个文化单元: +从这个侧面可看到其时的杜康祠是何等的辉煌。明代著名文学家冯 +梦龙《酒色财气歌》正是这种大辉煌的写照: “杜康造下万年春, +氤氲世界满乾坤”。 +由祭祀杜康酒神而兴起的杜康庙会,从明代后期,岁岁年年盛 +28 29 +杜康庙斋醮谶经文 +析津志记载杜康庙 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 18 =====\n明末诗人倪元璐有首瞻仰 +杜康祠的诗写道: “盘石山头止 +酒辞, 经年不到杜康祠。于今 +更走东皋路,为有无功是导师”。 +清代诗人刘大观也有一首 +赞美诗: “存液去其糟,酿此忘 +忧物。黄金铸杜康,胜拜西方佛”。 +酒祖殿前左右两侧坐卧着 +一对明代成化年间造型奇特、做 +工精细的“狮吼”,配座镌刻着 +“八仙醉酒”的浮雕,人物各具 +醉态,栩栩如生。 +杜康碑廊: +杜康文化名扬四海,海内外知名人士,专家学者,文人骚客 +多慕名而来,留下了珍贵的墨宝,为了展示书法艺术并弘扬杜康文 +化,地方文化学者在酒祖殿两侧的爬山廊中建起了“杜康碑廊”, +将六十七通书画碑刻珍藏其中。 +杜康墓园: +位于杜康祠南侧的“垂花门”内。宽阔的甬道从镌刻着“酒 +祖胜迹”的青石牌坊下直通杜康墓冢,牌坊上雕刻着“龙山凤岭千 +古巍峨标伟业,旌墓仙庄万方络绎拜神灵”的楹联。墓前,康熙 +二十八年的“酒祖杜康之墓”石碑立于赑屃背上,庄严肃穆。 +山门: +悬山式建筑的山门,明间立栏上悬挂着中国书画家李可染亲书 +的“杜康祠”匾额;檐柱上镌刻“芳逐康河千载誉,名返仙庄一杜 +魂”楹联。拾级步入山门, 乃是一尊三米高的仿青铜酒爵, “玉液” +自爵内汩汩溢出,象征杜康佳酿渊源流长。 +酒祖殿: +位于祠院后部,为全祠的主体建筑。砖木结构,歇山重檐, +二十根大柱构成四面回廊。明间前置抱厦,额枋上悬挂着中国末代 +皇帝之胞弟爱新觉罗 ·溥杰所书“酒祖殿”金匾。两边柱子上挂有 +“德存史策纵万事纷争称觞乃成礼义,功在人寰任百忧莫解借酒能 +长精神”楹联。殿内须弥座上神龛内的汉白玉杜康雕像, 鹤发银须, +神姿潇洒,温厚淳朴,聪慧俊拔,左手抱坛,右手举爵,稳坐于造 +酒保护神——龙头龟上。 +30 31 +明末清初倪元璐《吴长组征诗为 +村毅斋开酒禁 其二》 +选自《倪文贞集 诗集》卷下 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 19 =====\n杜康祠,现已被认定为文物保护单位。中国民协授牌为“杜康 +文化传承基地”对外开放。 +杜 +康 +造 +酒 +遗 +址 +杜康碑廊 +杜康墓园 +32 +| 酒祖承源 杜康留香 | +第 +二 +部 +分\n===== PAGE 20 =====\n第三次全国文物普查不可移动文物 +国家第三次文物普查确定:“杜康造酒遗址位于村西南。地 +处杜康河南岸的二级台地上。地势自北向南渐次隆起,该遗址东西 +250 米,南北 200 米,面积 50000 余平方米。东侧断崖上暴露的文 +化层厚度 1—2 米。在遗址地表和文化层中采集到 100 多件新石器 +时代的石刀、石錐、石斧、石铲以及陶罐、陶盆、陶壶等器物残片, +该遗址属于龙山文化和商周文化遗址” +杜康村是真正具有物化承载和传承记忆的杜康造酒遗址。1988 +年,村民们在杜康河下游搞水利工程施工时,意外发现了一处“地 +窖”。考古工作者把“地窖”小心翼翼地打开,提取了洞里的陶片 +等残留物,经化验发现,陶片以及土壤里含有酒精异化成分。经过 +进一步的科学鉴定,最后确定这个“地窖”是古代藏酒的酒窖。通 +过碳 14 检测,时间在 1100 年前的建安时期。新华社于 1988 年 12 +一 | 杜康村 +杜康村,又名杜康叭、杜康笆,位于汝阳县城北 25 公里处, +这里沟梁交织,岭豁错落。龙山、凤岭之间,杜康河蜿蜿蜒蜒一 +溪中流。在这里生活的“杜康村”人。自古以来造酒为业。 +杜康村始建于先秦。周朝时为王畿之地。战国时属楚,秦之后 +归梁县。西汉时由新城县辖 , 三国时属魏。隋时属伊阙。唐先天元 +年(公元 712 年)后归属汝州。明成化十二年(公元 1476 年) , +由汝州析出归属伊阳县(今汝阳)至今。 +34 35 +明万历二十四年《直隶汝州全志》卷一关于杜康村的记载 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 21 =====\n月 26 日用传真向中外发了专讯。这一发现,以事实证明了中国人 +发明的地穴式窖藏酒法,时间跨度超过了一千年,世界上还没有发 +现比中国此法藏酒更早的记载。依次推论,代表欧洲文明标志之一 +的古堡地穴藏酒法,应该是受中国地下酒窖藏酒之启发而后才风靡 +欧洲。 +杜康村是中国酒文化的摇篮。基于中国秫酒在此发源并世代传 +承而遐迩闻名。目前, 杜康河, 杜康泉, 杜康庙, 杜康墓,香醇苑, +杜康古酿坊等历史遗迹保存完好,已成为海内外人士敬祀酒祖,体 +悟中国酒文化之圣地。 +自古以来,酒乡百姓崇敬酒祖虔诚之至,祭祀酒神蔚然成俗。 +尤其魏晋之后, 民间兴起清明扫墓祭祖 +之风,酒乡民众在清明节之前的第一个 +“酉”日,不论坊号, 不分姓氏, 相约 +到杜康墓地祭祀酒祖。为什么选在“酉” +日,是因为甲骨文和金文中的“酉”和 +“酒”通假。大家约定俗成地把清明节 +之前的第一个“酉”日,视为酒祖杜康 +的“忌日”。明嘉靖年间, 进士王三聘 +承朝廷之命, 规范典章礼俗, 编写《古 +今事物考》, 便将这一祭祀酒祖的习俗 +写入其中, 文曰: “杜康善造酒, 以酉 +日死,故酉日不饮酒会客”。 +之后,清明节祭祀酒祖的规模逐年扩大,远在陕西、湖北的酿 +坊、酒号也不远千里赶赴中原参加祭拜。为了方便时间的记忆,明 +成化年间,杜康庙的道士将每年的三月三日固定为祭祀酒祖日, 一 +直延续至今。 +这些俗文化的形态,一代一代地赓续着人们对酒祖杜康的景仰。 +杜康村与酒相关的街道路名 +街道路名,不仅是指示区位的地标符号,而且还蕴含自然、人 +文、经济等文化底色。当地著名的历史事件、历史人物、名胜古迹 +等物质的或非物质的文化遗产都可能从街道路名中展示出来,尤其 +是传统的历史文化名村更是如此。 +杜康村是酒祖 +杜康的故乡,是中 +国秫酒的发源地, +历史悠久,文化底 +蕴深厚。仅从街道 +路名的沿革就可窥 +见其非同寻常的酒 +文化特征。 +36 37 +明《古今事物考》关于祭 +祀酒祖杜康的记载 +杜康村地标碑牌 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 22 =====\n相传,唐之前,杜康村的规模不大,仅有百余户人家,且大都 +以酿酒作坊存在。是时,没有街道路名,所有的区位都以“坊”来 +替代。 +所谓的“坊”即家族式酿酒作坊,以其“杜家坊”、“五福坊”、“康 +福坊”、“袁家坊”、 “仙酿坊”、 “孙家坊”……来表示其方位。 +明朝,是继汉唐之后的大一统王朝,手工业和商品经济比较繁 +荣,这个时期是杜康村酿酒业有史以来最鼎盛的时期。据《汝阳县 +志》记载, 当时,杜康村的“杜丰坊”和“康福坊”已具相当规模。 +酒业的发展繁荣,人口的增加,逐步拉大了杜康村的框架。为适应 +生活、生产需要,街道路名除保留了少部分“坊”的名称外,街巷 +有了专用的名字,诸如:上皇路、庙后街、康福坊街、铜觚巷、东 +坡巷等。 +数百年来,随着杜康村酿酒业的不断发展,村落规模的不断扩 +大,新的街道出现了,其名称也逐步“现代化”了。但独有的、带 +有浓郁酒文化色彩的酒望街、和香街、大酺巷、铜觚巷等古老的街 +道路名,仍然是杜康人忘不掉的“乡愁”。尤其是上皇路,始建于 +明末。纵贯杜康村南北,是杜康村著名的“酒路”。每年清明节祭 +祀酒祖日,信众在杜康祠内举办晋香、祭酒、诵祝文等仪式之后, +簇拥着杜康神轿在这条路上“踩街”。 +上皇路还是古代杜康村通往洛邑的必行之路,虽是一条“土马 +路”,但因驴驼车推,酒畅其流,历史上曾有“酒道”之称。 +2007 年 4 月 3 日, 中国民协发布公告,命名汝阳县为 “中国 +杜康文化之乡”和“中国杜康文化传承基地”。 +2012 年 2 月,河南省人民政府发布公告,认定杜康村为“河 +南省第五批历史文化名村”。 +2012 年4 月,国家住建部,文化部,财政部,文物总局联合发文, +认定汝阳县蔡店乡杜康村为“中国传统村落”。 +2014 年 7 月 24 日,洛阳市杜康村被列入 2014 年第一批中央 +财政支持的历史文化名村。 +2023 年 6 月,河南省人民政府公布杜康村为“河南省千年古 +村落”。 +中国杜康文化之乡授牌仪式 +38 39 +杜康古镇掠影 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 23 =====\n康祠时,对自然古泉用青石条进 +行了围砌。直径 2.85 米,对角 3.3 +米, 井深 2 米, 水深 1.5 米。 井 +口有 6 个立柱和石栏板围砌。井 +台六边形,直径 6 米,有六柱两 +层筒瓦琉璃屋面垂脊兽吻,攒尖 +顶,葫芦形,酒泉西侧有青石雕 +刻龙头与泉水相连,水从龙口中 +自然喷出。 +二十世纪八十年代初,中共 +中央政治局委员、国务委员李铁 +映还专程到此考察。 +《齐民要术》载:“酒之美恶, 系于水土”。造酒的关键是水。 +1990 年 11 月,中国地质矿产部地质环境管理司会同卫生部、 +轻工部组织了由地质矿产部地质环境管理司副司长李烈荣、卫生部 +食品卫生监督检验所所长许延聪、中国预防医学科学院室主任徐方 +等 13 位专家、教授组成评审组,对杜康泉水进行了科学考察并鉴 +定。之后下发了《国家地质矿产部地质环境管理司(1990) 116 号》 +文件,公布了鉴定数据:杜康泉水中含偏硅酸 45.76—65.0 毫克 / 升; +含锶 0.40—0.54 毫克 / 升;其他尚有 13 种对人体有益的微量元素。 +属含偏硅酸和锶的重碳酸钙型矿泉水。 +据专家组介绍,国家对矿泉水的认定是有严格标准的。尤其是 +杜康河的地理地貌和 +自然生态环境既奇特又神 +秘。地面上, 薄薄的土层下, +全部是黑色空状玄武岩结 +构。 河中游弋 的对虾两两 +相抱,卷腰横行,俗 称五 +彩鸳鸯虾; 鸭子吃 了鸳鸯 +虾,产的蛋蛋心呈霜红色, +且大多“双黄”。当地有这样一段民谣:杜康河五大怪,两脚一跺 +泉出来,鸳鸯虾抱一块,鸭生双黄蛋,人生龙凤胎,柳树的怀里抱 +着乖。 +“一里百泉”是杜康河的主要特征。最大的一眼古泉,水从河 +岸的石隙中汩汩流出,日涌水量达 3500 余立方米。且有“天愈旱 +则水更旺”的反常特征。清康熙二十八年(公元 1689 年)重修杜 +二 | 杜康泉 +杜康泉,位于杜康村西侧的杜康河畔。清·道光《伊阳县志·卷 +一地理志》载: “杜水河,城北五十里,源出牛山白元,经杜康 +石八,过仝沟至夹河镇, 会于伊,长十里,俗传杜康造酒于此, 故名”。 +40 41 +清道光十八年《伊阳县志》卷 +一 ·地理志 ·关于杜康河 +的记载 +位于杜康河源头的杜康泉 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 24 =====\n难得的是,杜康地区四大条件皆具备:首先,方圆 30 多平方 +公里地域全部为玄武岩地质结构;南向 3000 多米,有“老庄”火 +山口;东北向 6000 多米,有“大安”火山口。中心区域地貌呈凹形, +海拔只有 202 米。历史上, 经“老庄”、“大安”两次火山爆发后, +形成了以玄武岩为主体的断裂破碎带。玄武岩属基性火山岩,多为 +气孔构造和杏仁构造。含水层的主要储水空间是原生的宏、微观气 +孔,导水通道是原、次生裂隙。玄武岩中的硅被活化,深层岩石空 +隙中的硅酸盐,只要和水接触,就马上释放能量把水体吸收,生成 +偏硅酸型矿泉水储存于地下湖中,取之不尽,用之不竭。 +偏硅酸是人体必需的微量元素之一。具有软化血管、强化骨骼、 +强化生理功能、延缓衰老等功用,在德国称为“水中软体黄金”。 +在日本被称为“上佳水品”。 +1987 年 7 月,河南医科大学组织专家团深入杜康村六个多月, +对全部饮用杜康泉水的村民和另外三个地方生活习惯和生活水平与 +杜康村基本相同,但饮水不同的自然村的村民进行了普查。结论是: +杜康村民不仅长寿老人多, 双胞胎多, 而且近百年内, 癌患者为零。 +由此可见,杜康河的五彩鸳鸯虾、双黄蛋,杜康村民的双胞胎以及 +长寿因子,一定与杜康泉的水质有关。得天独厚的优质杜康矿泉水, +给杜康酒的酿造提供了无可替代的优势资源。 +关于杜康村的生态奇观,一直流传着一个凄美缠绵的爱情故事: +金童玉女遭贬记。 +相传,杜康河里的鸭和虾原是天上守瑶池的金童玉女,时间长 +偏硅酸的含量是刚 +性标准:每升水含 +偏硅酸达到 25 毫 +克以上才能被认定 +为“矿泉水”,杜 +康的泉水含偏硅酸 +达 到 46.3 至 63 毫 +克,按照国家认定 +标准,属于特优级 +矿泉水。所以地矿部才以红头文件的形式予以发布。目前,能和杜 +康矿泉水相媲美的也只有“广东热河源矿泉水”、“山东五莲山矿 +泉水”等为数不多的几家。 +偏硅酸是人体必需的微量成分。但人体自身不会合成,动物食 +品、植物食品内也都不含偏硅酸。 +偏硅酸只能通过非金属硅溶入水中才能被人体吸收。但硅本身 +不溶于水 , 也不能以人工形式添加到饮用水中。雨水经历滴水穿石, +能溶滤石头中的硅,但含量微乎其微,几乎忽略不计。所以,偏硅 +酸对于人体健康来说是个稀缺资源,但获得又十分不易。因为,形 +成矿泉水必须满足四个条件,缺一不可: 1、该地区必须是高品位 +的硅石地质结构。2、该地区必须经过一次以上火山爆发,由千度 +以上的高温将硅石熔化为岩浆。3、流域面积大, 源头活水丰富。4、 +地势低洼,具备生成地下湖的储水条件。 +42 43 +1990 年卫生部等单位的“杜康泉水化验单” +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 25 =====\n者名周昱,号依堂,乾隆丁卯举人。诗曰: +“放眼关河纷故垒,惊心风物逼新秋。杜康台在烟云里,一醉 +江头狎白鸥”。 +据《襄阳府志》载: “杜康台在县东。台西不远有一口井,名 +曰杜康井”。 +在“杜康井”的辞条下,记载了一个很有趣的故事:杜康井的 +传说。 +不知是哪个朝代,杜康井旁有一个穷老婆子,每日靠卖井水过 +日子。一天,来了一个白胡子白眉毛的老翁,笑着问卖水婆: “生 +意还好吧 ? ”老婆子听了哼了一声: “你真会开玩笑,这是水,又 +不是酒,能赚几个钱,要是打起来的都是酒,那就好了”。老翁听 +了微微一笑,就飘然去了。第二天,老婆婆照例又来打水卖,哪知 +刚一提起来,就闻到酒香扑鼻,满桶是上等好酒,老婆子高兴得不 +知所措,立即将水价改成酒价,不多久就成了大财主了。 +一天,老婆子正在井边清点银子,白胡子老翁不知什么时候又 +出现在她身旁,笑嘻嘻地问老婆子: “这下生意不错了吧 ?”老婆 +子一边不停地数银子,一边不屑一顾地对老翁说: “生意还可以, +只是我家的猪没有酒糟吃, 如果再将猪吃的酒糟解决了就好了 !”老 +翁听了,哈哈大笑,指着老婆子大声吟道: +“天高不为高,人心最为高,凉水当酒卖,还说猪无糟”。说 +罢,倏忽不见,而那口井里的水也再不会变成酒了。 +看来,酒神、酒泉的神功早已传遍四方,谁都想沾点杜康泉水 +了,传情递意有了爱情。有一次,趁王母不备,两人偷酒下界,来 +到中原大地,道不尽男欢女爱,绵绵痴情。 +想不到的是,事情败露。被护法神带上灵霄宝殿。王母娘娘恶 +毒地将她们推下九天,并以“弱肉强食”之法,贬金童为虾,玉女 +为鸭,让世世代代,鸭食虾,永相杀。但忠于爱情的鸭子尽管饿昏 +了头,也不忍心吞食情郎充饥。王母见此更是气上心头,顺手把一 +坛御酒倒进河中, 这里即刻成了“酒泉”。金童经不起美酒的诱惑, +懵懵懂懂中和同类小虾成婚生子。 +鸭子见薄情郎另找新欢, 一气之下,张口吞食起醉虾来。 +因为玉女吃的是情郎的骨血,生下的蛋蛋心如血,红若霜叶, +俗称“霜红蛋”,而且还是两个“黄”。一说是玉女赌气: “这婚 +事,你‘黄’,我也‘黄’”; 一说是“一个房中两颗心!”。 +自此,虾妻天天抱着丈夫躲在石缝里,水草下。久而久之,蜷 +了腰,驼了背,双双相抱再也分离不开了。直到现在,还是两两相 +抱,蜷腰横行。 +金童偷拿王母的那把桑葚,也在河边发了芽,生了根,繁衍起 +来,为下界造就了一处“空桑涧”。 +不过,这倒成全了杜康的好事。杜康在空桑涧中发现了桑泥, +发现了酒泉,酿出了世界上第一杯玉液琼浆——杜康酒。同时,也 +给华夏文明留下了一块圣地——杜康造酒遗址,供后人赏景游玩。 +自古以来,杜康泉水遐迩闻名。不少地方借“杜康水”蹭光。 +《清诗总集》中有首《登襄阳郡楼》的七言诗可见一斑,该诗的作 +44 45 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 26 =====\n杜康村住上一阵子,其愿望就能实现。 +杜康村双胞胎多的传言并非空穴来风,古代如此,现代亦然。 +据村中老人回忆,清朝宣统皇帝临朝的第一年(1909 年) ,清政 +府进行了一次人口抽查,当时的杜康村八百多口人,其中老少双胞 +胎十七对。为此,汝州知府还亲题了一块匾表示祝贺。 +古时候,先民们因受条件的限制, 不能用科学的理论去解释“喝 +了杜康泉水就能生双胞胎“的怪异现象,便觉得这是神的力量。他 +们认为,天地万物都有灵魂,都具有人所无法抗御的魔力,杜康村 +民的双胞胎多,是缘于“喝了杜康泉的水”。于是, “龟蛇相缠” +的图腾便被抬了出来。 +“龟蛇相缠”是由龟和蛇组合成的一尊灵物。《酉阳杂俎 ·支 +诺皋下》记载:“龟, 玄武之神”。《后汉书 ·王梁传》: “玄武, +水神之名”。因八卦图中, “坎水”的位置在北方,故,这位主宰 +北方的水神亦称“北宫玄武神”。 +“龟蛇相缠”,还关联着一个自然现象:生育。我国最古老的 +诗集《诗经》: “关关雎鸠,在河之洲,窈窕淑女,君子好逑,雄 +不独处, 雌不孤居, 玄武龟蛇, 纠盘相扶, 以明牝牡, 毕竟相胥”。 +寥寥四十个字便把古代的生殖崇拜解释得清清楚楚。 +据相关史料记载, 玄武乃大禹的父亲水神鲧。鲧为鳖氏族酋长, +死后化为三足鳖而成为其氏族图腾。鲧的妻子名“修巳”, “巳” +亦称“小龙”。鲧为龟,妻为蛇,龟蛇相交,成了我国古老的星象 +文化中的水神造像。《史记 ·天官书》载: “黄帝人首蛇身,尾交 +的仙气啊! +三 | 北宫玄武崇拜及双胞胎见闻 +在杜康造酒遗址“觞詠门”对面的“五行碑”左右两侧,各 +有一尊造型奇特的神兽:龙首龟身,五爪长须,犄角似鹿,尾若 +鲤鱼,背上驮着一尊三尺高的酒瓮。其名曰:北宫玄武。 +这是杜康地区有别于其他任何地区所敬奉的一尊神灵。 +北宫玄武担当着守 +护杜康泉的大任。同时也 +是杜康村酿酒作坊的护坊 +门神。 +自古以来,杜康河 +流域一直流传着这样的说 +法:只要喝下杜康泉中的 +水,女人就能怀上胎,如 +果心地虔诚的话,还能怀 +上双胞胎。更神奇的说法 +是,凡是想要孩子,尤其 +想要双胞胎的夫妇只要在 +46 47 +石雕:北宫玄武 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 27 =====\n首上”。 +在民间信仰中,玄武具有三种神性特征: 一是北方之神 ,二 +是护水之神 ,三是生殖之神。 +生殖崇拜,是古代社会普遍流行的一种风俗,是人们追求幸福, +希望人丁兴旺的一种表示。“喝杜康泉水,生双胞胎”的传说,其 +初衷不过是古人对生命的赞美和祈盼。 +另据考证,杜康民谣中“柳树怀里抱个乖”一说,也是源于古 +代的生殖崇拜。 +杜康河沿岸,植有百余棵大大小小的柳树,这些柳树有个共同 +的特征, 每棵树的树干中间都有一个“包”,大树大包, 小树小包, +好像妈妈怀里抱着一个孩子。自古以来,人们对这道奇观一直迷惑 +不解。 +古人善于观察,在长期和柳树打交道的过程中,观察到柳树具 +有强大的生殖力,折取一枝纵横倒顺插之,皆能够强势生长。因此 +便对柳树萌动宗教的感情。《汉书 ·睦弘传》将柳定义为“阴类”。 +“柳信花情”、“眠花宿柳”、“寻花问柳”等成语更是用拟人手 +法,把柳比拟为和生殖有关的女性或“两性行为”。 +原始文化从本质上讲,是对大自然的敬畏,是对幸福的渴望。 +这种敬畏和渴望作为一种意识形态进一步丰富了杜康文化。 +名 +人 +与 +杜 +康 +48 +| 酒祖承源 杜康留香 | +第 +三 +部 +分\n===== PAGE 28 =====\n眼看自己年过半百,短暂的人生“譬如朝露”,转瞬即逝,如 +不抓紧时间,将会遗恨千秋。此时,最令他忧愁不安的是人才的不足。 +麾下没有像赵子龙、关羽、张飞那样的猛将,像孔明、鲁肃那样的 +谋士,因此,他急于招纳一些能佐国辅政、出谋划策的奇士高才。 +用什么来消解心中这个“忧思” 呢 ? 只有最古老的佳酿杜康酒了 ! +据史料记载,一代枭雄曹操不仅酒量惊人,且爱酒,懂酒,并 +常常拿酒说事。脍炙人口的《青梅煮酒论英雄》便是一例。但曹操 +为什么专用“杜康”来解忧呢?这自然与当时的历史、地理和风物 +有关 . +曹操,今安徽亳州人。二十岁时,通过“举孝廉”走上政治舞 +台。从公元 175 年任洛阳北部尉到公元 196 年率军奉迎汉献帝,此 +21 年间, 一直居住在都城洛阳。 +洛阳,这是中华民族的酒祖圣地,秫酒之源。杜康村,距洛阳 +古城不足百里路程, “烧房连爿,酒旗招风”的酒乡韵致在秦汉之 +前就已经声名远播。这位善于运筹演谋的一代枭雄自然对杜康了如 +指掌。所以,在赤壁激战前夕,面对三军将士,他慷慨陈述自己匡 +复天下的决心,并横槊成赋,吟出了 “何以解忧,唯有杜康” 这 +一热情洋溢、千古不朽的绝唱。 +最后,还诚挚地表示: “山不厌高,水不厌深。周公吐哺,天 +下归心。”意思是:为了天下, 他要像“一饭三吐哺”的周公那样, +热情欢迎天下贤士归心。用什么来表达我的诚意,只有让佳酿杜康 +助我了。因此说,曹操举杯杜康的真正目的是天下同心。 +一 | 三曹与杜康 +三曹者,曹操,曹植,曹叡也。 +但凡提到曹操,人们自然而然地会想到那首脍炙人口的《短 +歌行》:“对酒当歌,人生几何?譬如朝露,去日苦多。慨当以慷, +忧思难忘。何以解忧?唯有杜康”。这首感情深挚,气韵沉雄的 +千古绝唱将杜康文化推向了极致。然而,却很少有人知道曹操的 +儿子曹植也是一个杜康 “粉丝”,他不和他父亲一样爱杜康,喝 +杜康,而且还深谙杜康造酒技艺。尤其值得一提的是曹操的孙子、 +曹丕的儿子、魏明帝曹睿,从儿时就结缘杜康,直到驾崩前留下 +遗诏,死后和酒祖杜康比邻而居,两个墓冢相距只有十里之遥。 +人们不禁要问:曹操、曹植、曹睿这三曹父子怎么会与杜康 +有着如此的瓜葛? +凡事皆有缘。曹氏三代结缘杜康,各有其因。 +曹操:举杯杜康之天下同心。 +曹操这首迎宾曲《短歌行》是建安时期杰出的名篇。时年,曹 +操已五十三岁。在经过官渡之战, 北征乌桓,基本完成了中国北 +方的统一之后,便运筹帷幄准备征战江南,完成一统大业。 +50 51 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 29 =====\n可以说,曹植用“杜康酒”酿出了中国文学史上最醇厚的诗篇, +当我们捧读“此肴馔之妙,子能从我而食之乎 ?”的诗句时,听到 +的不仅是建安风骨的呼唤,更是诗者在历史长河中的永恒吟唱。 +明面上看,曹植写的是“饮酒”,且用了一连串的美妙语言来 +赞美杜康。但也有不少研究历史的学者称《七启》另有所指。他们 +认为,诗的点睛之笔在“应化则变,感气而成”八个字上。是借曹 +操发布《求贤令》之机,用杜康“应化则变,感气而成”的酿制秫 +酒工艺作比,启示志士贤达不要遁俗而遗名,背世而灭勋,而应该 +追随曹操,辅君济世,建功立业。就像那一粒粒的粱黍,通过杜康 +“应化之变”而得道,成为传世之珍品。无论何种意思, 《七启》 +足以见证曹植的诗酒人生。 +曹叡:举杯杜康之相邀江山。 +曹睿,字元仲,魏文帝曹丕长子,曹魏第二位皇帝,公元 238 +年病逝于洛阳,葬于高平陵。 +要讲曹叡与杜康的关系,得先从高平陵说起。因为这里曾经发 +生过改朝换代的“高平陵政变”,因此名载史册。据民国五年(公 +元 1916 年) 出版的 石印本《洛阳县志》记载: “魏明帝曹睿陵, +在茹店东二里许霸陵山下”( 即今汝阳县内埠镇茹店村) 。墓冢 +长 64 米、宽 36 米,地面夯土层高约 1.5 米。现已被中华人民共和 +国文物局列为全国重点文物保护的帝王陵。 +曹植 : 举杯杜康之诗酒人生。 +曹操的儿子、陈王曹植, 有一首名诗《七启(选)》。诗曰:“乃 +有春清缥酒 , 康狄所营。应化则变 , 感气而成。弹徵则苦发 叩宫则 +甘生。于是, 盛以翠樽, 酌以雕觞,浮蚁鼎沸,酷烈馨香。可以和神, +可以娱肠。此肴馔之妙,子能从我而食之乎 ? ” +诗的意思是:呈上清醇美酒,这是按照杜康(仪狄)之法酿制 +的。应时变之,感气化之。美酒苦中有甜,用玉樽盛酒,用瑶杯饮 +酒,酒泛起的泡沫,仿佛开水沸腾,散发着浓烈的馨香。饮之精神 +和乐,肠胃舒适。这么奇妙的美酒,您能跟我一起品饮吗 ? +《七启》(选)描述了魏晋时代文人的狂欢:当“浮蚁鼎沸, +酷烈馨香”的句子从酒樽中溢出时,诗人已陶醉在酒与诗的美学之 +中。此时的“杜康”对曹植而言早已超越了简单的感官享受,已成 +为独特的生命美学。“盛以翠樽,酌以雕觞”的过程,实则是将生 +命体验艺术化的过程。这既是对诗酒生活的追慕,也是对生命的礼 +赞。酒催化了他的创作冲动,使他的诗在酒意中获得了超越时空的 +生命力,从而达到美学巅峰。 +“弹徵则苦发,叩宫则甘生”。曹植对酒的细腻描摹,展现了 +他对酒的审美化观照。他将酒气融入诗魂, 构筑出虚缈的时空幻境, +使饮酒升华为诗意。当“浮蚁鼎沸,酷烈馨香”醉眼朦胧之时,酒 +成了逃避现实的方舟。作者的放达与困顿,都在酒樽中淬炼成永恒 +的艺术结晶。 +52 53 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 30 =====\n不慌不忙地说道: “我爷爷既爱酒,更懂酒,以酒平其心,论天下 +大事,以酒定其心,应天下之变。当年, ‘青梅煮酒论英雄’,吓 +得刘玄德撒了筷子, 那是十二分的智慧;后来,爷爷把“九酝春酒” +晋献皇上,以酒侍君,那是十二分的忠诚;赤壁大战,爷爷‘何以 +解忧,唯有杜康’的《短歌行》,唱得千军将士热血喷涌,豪气凌 +云。爷爷的杯中, 盛的何止是酒, 那盛的是忠诚, 是智慧, 是信念, +是担当,是经天纬地,是世道沧桑!安天下者,曹操也!” +六岁的曹睿语惊四座,全场肃然。曹操击掌而起,脱口说道: +“曹门龙虎也!” +自此,朝野皆知:曹睿的储君之位是板上钉钉的事了。 +曹操、曹丕死后,曹睿继位做了皇帝。他继承先辈的遗志,御 +驾亲征,拒孙抗刘,被史学界称为三国时期最有作为的年轻君王。 +闲暇之余,爷爷五十五岁寿诞的情景,历历如在目前。每每这时, +他耳边都会响起‘何以解忧唯有杜康’那首千古绝唱。曹睿深知, +当年,是自己的一番“酒论”打动了爷爷,冥冥之中,酒神相助, +杜康功莫大焉!他忽然动了一个念想:阳间不能守望杜康,那就到 +阴间去拜会吧。他把这个念想告诉了皇子重臣,将来自己要葬在酒 +神杜康身边, 一来守望酒祖,二来为仙逝的爷爷守酒坊,尽孝心。 +于是,朝廷派人到杜康仙庄一带访察龙脉,果然发现,一条蜿 +蜿蜒蜒的杜康河,左依龙山,右系凤岭,一溪中流,百泉喷涌,好 +一方风水宝地!东行十余里, 有座霸陵山, 它由五纵山峰连接而成, +远远望去若巨龙腾跃,气势非凡,和其遥遥相对的是气势磅礴的二 +相距墓冢十几里路的杜康河畔,便是杜康造酒遗址和酒祖杜康 +墓园。 +一方不大的土地,雄伏着两丘巨人的墓冢,栉风沐雨,遥相守 +望。人们不禁疑惑,一个是大夏王朝的”君主”,一个是三国时期 +的帝王,两人相隔千年,怎么会同占一段地脉,共戴一片蓝天?还 +有,作为天子的曹睿,死后为什么不入洛阳北邙的皇陵,也不随父 +葬首阳陵而独卧洛南? +民间流传着一个有趣的故事: +史传,曹睿聪颖过人,两岁就开始读《论语》,学兵法。深得 +祖父曹操的喜爱,常令他伴于左右。在朝会宴席上,也让他与侍中 +近臣并列。十五岁时,便被封为武德侯。 +建安十六年,对曹氏来说,可谓三喜临门: 一是其子曹丕被提 +升为五官中郎将;二是曹操征讨汉中,击败马超,大获全胜;三是 +曹操正值五十五岁寿辰。三喜临门,举府欢庆,鼓乐震天,宾客如 +云,众人争相为曹丞相歌功颂德。曹操在兴头上突然问道: “诸位 +为老夫唱功,领情了,领情了!不过,各位贤达说说,我曹孟德是 +以什么方略安定的天下? ”话音刚落,席间便争相回答,有说,丞 +相是勤政爱民安天下,有说是金戈铁马安天下,也有人说是整肃军 +纪安天下,还有人说是千古文章安天下。这时,人群中突然闪出了 +一个幼童,他双手叉腰,铿锵有力地说道: “我爷爷是一坛美酒安 +天下! ”大家一看,竟是六岁的曹睿。曹操招手说道: “来来来, +让我孙子说说,爷爷是如何一坛美酒安天下的! ”曹睿面对群臣竟 +54 55 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 31 =====\n二 | 苏轼与杜康 +苏轼,号东坡居士,北宋文学家,长词赋,其词风雄健清新, +明白畅达,为“唐宋八大家”之一。 +自古诗酒一家。苏轼一生爱酒,爱杜康。北宋绍圣四年(公元 +1097 年) ,官至礼部尚书的苏轼,因新旧党争被朝廷贬谪到海南 +琼州。当时, 他已经六十二岁。据史料记载, 四月十七日他接到诏旨, +两天后便离别惠州。这时,他的弟弟苏辙也被贬谪到海南岛北岸的 +化州。五月十一日,兄弟两人相遇于藤州。苏东坡吟诵了一首《和 +陶 < 止酒 > 并引》与弟弟告别。诗曰:“时来与物逝, 路穷非我止, +与子各意行,同落百蛮里……,望道虽未济,隐约见津诶。从今东 +坡室,不立杜康祀。” +时运和政事的急速变化,使东坡陷于世路的穷厄。“望道虽未 +济,隐约见津诶”,望着面前即将摆渡的波涛滚滚的琼州海峡思绪 +万千:我从哪里来?神州深处,中原汴京啊!一生曾西来东去,北 +迁南徙,射密州虎,蹲乌台狱,种西湖柳,羡黄州鱼,赏赤壁月的 +苏公,至此越岭过海,也许就要到终点了。 +苏东坡毕竟是旷达之人,道路皆有尽头,结束的总将结束。流 +放,何尝不是件好事呢!官是当到头了,没什么留恋的,但是杜康 +马山,两座山调和有致,负阴抱阳,宛若天然的屏障,环抱着这片 +台地,实在是一处难得的龙脉。 +《三国志 ·魏书 · 明帝纪》载: “景初三年(公元 239 年)正 +月丁亥……帝崩于嘉福殿,时年三十六。癸丑,葬高平陵”。高平 +陵的具体位置,在《三国志 ·魏书四 ·三少帝纪》中记载: “高平 +陵在洛水南大石山,去洛城九十里”。清顺治十六年编撰的《伊阳 +县志》载:“魏明帝高平陵在茹店东二里许霸陵山下。” +为了守护帝陵,朝廷还从军中拨出 100 多名将士,御赐曹姓, +留守此地守墓。不久这个地方便形成了一个村落“曹留庄”。2013 +年 5 月,魏明帝高平陵入选第七批全国重点文物保护单位名录。 +56 57 +全国重点文物保护单位魏明帝 +高平陵墓碑 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 32 =====\n呢,酒神呢,杜康酒呢?那可是一个放不下的心结。 +“从今东坡室,不立杜康祀”。我什么都可放弃,唯一遗憾的 +是失去了杜康的相伴啊!表面看,此话随意平淡,但仔细品读却感 +到苍凉凄惨。这当是诗人的无奈之笔:一生爱酒、善酒,一直把杜 +康作为神灵敬奉室内的诗人,此时,远离中原,栖身孤岛,病魔缠 +身,再也喝不到杜康了,心情能不悲哀吗! +好在苏轼一生坎坷,经历过贬了又贬的仕途,本就豁达开朗的 +性格,更加大放大畅。放逐海南后,他把儋州当成了自己的第二故乡, +“我本儋耳氏,寄生西蜀州”。他在这里办学堂,介学风,以致许 +多人不远千里, 追至儋州。苏轼有个文友, 名叫秦观, 江苏高邮人。 +此人博览群书,抱负远大,苏轼曾经引荐他担任太学博士。后因追 +随苏轼, 支持王安石变法也被贬谪海南。元符二年 ( 公元 1099 年 ), +两人在儋州相见,相同的命运、相同的处境、相同的爱好,使这对 +师生泪眼相对。为解羁旅异乡的孤单,打发艰辛的岁月,两人赋诗 +唱酬,相互勉励。苏轼一口气吟诗四首,其四是专为秦观所作。诗 +曰: “雷觞淡于水,经年不濡唇。爰有扰龙裔,为造英灵春。英灵 +韵甚高,蒲萄难与邻。他年血食汝,当配杜康神。”诗的大意是, +这个地方的“英灵春”酒,味道太淡了,我经年都不喝一口。是酒 +真的不好吗?非也!人们都说它比葡萄酒还好呢,这是为什么呢? +“他年血食汝,当配杜康神”,是我心里念念不忘杜康啊!表面上 +这是在慰劝朋友秦观,实则是诗人自己解劝自己:我们还能喝到杜 +康的,一定能喝到的!啥时候呢?死了以后, 儿女们自然要来祭奠, +要来上坟的,孩子们知道老人爱喝杜康酒,他们在坟头摆“血食” +的时候, 一定也会洒“杜康”于坟前,这不是又喝到杜康酒了么! +此首诗作当是《和陶〈止酒〉》的续篇。虽说“从今东坡室, +不立杜康祀”了,但“他年血食汝,当配杜康神”。死后祭奠,仍 +然会有“杜康”相陪。诗人的洒脱豪爽以及对美酒杜康的挚爱跃然 +纸上。 +58 59 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 33 =====\n中国文人自古就与酒结下了不解之缘 , 诗与酒成为文人生活中 +重要的组成部分 , 形成具有独特审美意味的诗酒文化。陶雍的诸多 +作品中,最惬意的当数那首脍炙人口的《逍遥游》,这首诗道出了 +他对人生真谛的认知和对“杜康老酒”的痴爱。诗曰: “茅屋任意 +自逍遥,山径崎岖宾客少。看的是无名花草,听的是牧野禽声叫。 +喜的是青山隐隐,乐的是绿水滔滔。春花开得早,夏蝉枝头闹。黄 +叶飘飘秋来了,白雪纷纷冬又到。叹人生容易老,总不如盖一所安 +乐窝,上有琴棋书画,下有渔读耕樵。闲来了,河边钓;闷来了, +把琴敲。吃一杯杜康酒,醉乐陶陶”。 +该诗借庄子《逍遥游》之题,阐述了作者继承道祖,一年四季 +过着闻花香,听蝉鸣,望秋叶飘落,看冬雪纷飞,在茅屋里琴棋书 +画,在田塘渔读耕樵,与杜康酒相伴,醉乐陶陶”的无拘无束之理 +想生活。 +诗歌传达的是一种快乐诗学 , 没有无病呻吟 , 没有怨天尤人 , +也没有一般文人普遍的怀才不遇之感。 +酒文化的主体离不开人 , 所谓“酒有别肠 , 唯文者近”, 文人用 +自己的行为方式和作品赋予了酒多重的审美意义 , 使酒文化广泛而 +深入地渗透在作品中。“杜康”是老邵真正的知音 , 自然要醉乐陶 +陶了。 +该诗通俗易懂, 语言诙谐,不仅读来朗朗上口, 而且贴近生活, +朴实地表达了文人雅士的追求,问世后流传甚广。 +今日的“安乐窝”已形成一定规模,成为洛阳地区一大文化重 +三 | 邵雍 ·安乐窝 ·杜康 +在河南洛阳市洛水河畔,有一个闻名遐迩的村庄“安乐窝”。 +这是北宋著名理学、哲学、教育家及诗人邵雍的故居。邵雍,字 +尧夫。一生厌恶功名,向往隐逸的生活。幼年随父居住共城的苏 +门山 ( 今河南辉县 ),潜心治学,著述颇丰。嘉佑年间,朝廷诏 +求天下遗逸名士,地方官绅荐他为官,他以种种理由推脱。当时 +的社会名流富弼、司马光、吕公著等人十分敬仰他,常与之饮酒 +作诗,并将原五代节度使安审琦的故宅 30 余间园宅买来送他居 +住。他把这个地方题名曰“安乐窝”,自号“安乐先生”。自 +38 岁起 , 著书立说 , 优闲度日。诗情画意般地经营着自己的隐居 +生活。 +60 61 +位于洛阳市安乐区的邵雍故居 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 34 =====\n四 | 周恩来总理和田中首相与杜康 +在杜康造酒遗址公园内,有一个叫“樱花园”的景点。每年 +的春末夏初,樱花绽放,满园飘芬,馨香四溢。这满园的樱花, +是日本国前首相田中角荣于 1979 年赠送给杜康酒厂的礼物。 +日本的首相和中国的杜康美酒怎么会牵在一起呢?这里有个 +关键人物——中华人民共和国国务院首任总理周恩来先生。 +2013 年初春,洛阳杜康控股有限公司迎来了一位从北京来的 +“贵客”——中国外交部原纪委书记、部长助理万永祥先生。万先 +镇。邵雍文化已成为该地区的主流文化之一。 +邵雍卒于北宋熙宁十年(1077 年) ,享年 66 岁。卜葬于洛南 +荆山之下,与“国花杜康”为邻。噫嘻!邵公九泉之下真正要“醉 +乐陶陶”了。 +62 63 +万永祥先生视察杜康 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 35 =====\n稍贪杯了,略感醉意。”接着,他对总理说,我非常喜欢中国的酒 +和中国的酒文化,今日尝了茅台酒,美妙啊!中国酒,好!说着, +竟煞有介事地用中文疙里疙瘩地背诵起“慨当以慷,忧思难忘,何 +以解忧,唯有杜康”的《短歌行》来。周恩来总理听了很是高兴, +连忙说: “既然首相喜欢杜康,下次来中国, 一定让您喝个够。” +田中听了,连连感谢。 +经过数日的会谈,9 月 29 日, 《中日两国政府联合声明》签 +字仪式在人民大会堂隆重举行,中日关系从此翻开了新的一页。签 +字结束,自然是举杯庆祝,宴会的气氛格外融洽、热烈。周恩来总 +理流露出近些年来少有的喜悦,频频举杯向客人们敬酒。田中也是 +谈笑风生, 兴致勃勃, 连连和周总理碰杯, 并风趣地说:“总理啊, +天下美酒,唯有杜康,太妙了!” +言者故言之,闻者自有心。对于田中首相之于杜康的感情,周 +恩来总理深表理解。但日理万机的国家总理对于杜康目前的发展状 +况却知之不多。转身后,悄声地问陪同的郭沫若: “杜康这个知名 +世界的品牌,怎么没有做大呢? ”郭沫若不无诙谐地回答说: “杜 +康做大做不大是你总理的事,我咋会知道? ”周总理笑了笑,然后 +点了点头郑重地说:“复兴杜康,为国争光!”。 +郭沫若听后,不敢怠慢,忙招手让出席接待宴会的河南省委书 +记刘建勋同志到跟前,当面传达了周总理的指示。 +复兴杜康,为国争光!酒乡迎来了春天。 +宴会之后,刘建勋同志回到省会郑州, 立马落实周总理的指示。 +生在参观了杜康造酒遗址的杜康泉、杜康祠、华夏第一酒窖后,来 +到了樱花园,导游员认真介绍起当年日本首相田中角荣访华,在北 +京人民大会堂招待宴会上,引用魏武帝曹操“何以解忧唯有杜康” +之名句,并向周恩来总理讨要“杜康酒”的趣闻。万先生听着笑着, +最后说,这段趣闻还是由我来讲给你听吧!田中访华时,我是后勤 +接待组的负责人,我应该是这段往事的见证人了。 +万先生介绍说, 1972 年 9 月 25 日,田中首相乘坐日航专机踏 +上了前往中国的征程。周恩来总理亲自接机,并陪同田中一行驱车 +到钓鱼台国宾馆 18 号楼。 +可谁也没有料到,正式会谈竟是以酒开篇的。当周恩来向田中 +道一声“辛苦了”时,田中便开口说: “不累不累,今天中午我稍 +64 65 +周恩来同田中角荣会谈后,提及杜康酒。“复兴杜复,为国争光” +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 36 =====\n政府特使,与中国政府磋商日程和细节。二是研究中国的传奇人物 +毛泽东和周恩来。三是研究中国的酒文化。 +父亲为什么要在紧要关头研究中国的酒文化呢?因为他知道, +中国是酒的故乡,酒文化作为一种特殊的文化形式,在中国有其独 +特的地位。古老的文明国度,饮酒的意义远不止口腹之乐,它是一 +种礼仪,也是一种气氛,更是一种媒介。出访中国,酒宴是免不了 +的, “以酒说事”据说是周恩来先生的强项,他不得不把研究博大 +精深的中国酒文化,作为他访华前的必修之课,而研究中国的酒及 +酒文化, 自然而然地当首推酒祖杜康。况且, 首相行前曾连续失眠, +的确是“忧思难忘”:他知道,中日建交要面对日本政治家们的发 +难。因为,日本与中国的台湾签订有《日华和平条约》,日本的亲 +台派,在日本当政的自民党内占据主流力量。建立中日邦交正常化, +日本政府就必须与台湾断交,这无疑会遭到日本自民党内一大部分 +人的反对。访华之前,右翼分子曾经打电话给他,警告他不要去中 +国,否则浅沼稻次郎就是他的前车之鉴。 +浅沼稻次郎是日本社会党委员长,曾经两度访华。1960 年 10 +月 12 日,浅沼稻次郎在东京发表呼吁“尽快使日中邦交正常化” +的演说时,一名右翼分子突然跳上台, 用一把利刃刺入浅沼的心脏, +浅沼稻次郎当即倒在血泊之中。 +怎样完成这个历史使命,怎么能多获一些既得利益,这需要磨 +合,需要沟通。在中国,有个很好的沟通媒介,那就是酒。所以, +曹公的“慨当以慷,忧思难忘,何以解忧,唯有杜康”对此时的首 +他了解到现在杜康村的多家酿坊,还是沿袭几千年来的家族作坊式 +生产,生产量根本供不应求。便马上召集商业、轻工和洛阳专员公 +署等部门领导, 召开了一个联合会议, 落实周总理复兴杜康的指示。 +几个月后,洛阳地区(当时为洛阳专区)在整合多家民间酿酒 +作坊的基础上,建立起了汝阳、伊川两家国营杜康酒厂。 +1979 年,杜康酒厂听说冶金部组团访日,便想借此机会答谢 +一下田中先生,委托该团给田中角荣带去两箱杜康酒。代表团到日 +本后,拜访了田中先生。这位精通中国文化的政治家熟知中国礼仪, +当即捧出 60 粒日本樱花种子作为礼物回赠,并解释说,樱花是日 +本国的国花,愿日中友谊像樱花一样,缤纷灿烂,永远盛开。 +又一晃,三十多年过去了。杜康已今非昔比。2012 年 2 月, +洛阳杜康控股公司应邀参加由“日中韩经济贸易促进协会”等单位 +在日本东京举办的“第二届孔子文化奖、中日友好合作奖颁奖仪式”。 +28 日晚,与会的公司总经理吴书青先生代表洛阳杜康控股公司接 +受“中日友好合作奖”。在谈到田中原首相时,才知田中先生已于 +1993 年 12 月逝世。便与中国驻日大使政治参赞孙美娇一起,邀请 +田中的儿子田中京代父领取了“中日友好最高荣誉奖”,并赠予“酒 +祖杜康 12 窖区”美酒两坛。 +年轻的田先生一直继承父亲的遗志,从事中日友好活动。在颁 +奖后的宴会厅,田中京先生向大家详细介绍了其父的生平以及当年 +访问中国引出杜康美酒的往事: +他介绍说,父亲出访中国前,办了三件事:一是派出先遣组和 +66 67 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 37 =====\n酒道馆。并将 1972 年日本首相田中角荣访华时, 周总理“复兴杜康, +为国争光”的指示敬录一遍赠予杜康。勉励杜康人要永远铭记周恩 +来总理指示,肩负起“复兴杜康,为国争光”的历史使命和责任, +早日实现复兴杜康的梦想。 +五 | 卢展工的“大杜康”情结 +卢展工,中共十八届中央委员,十二届全国政协副主席。 +2009 至 2013 年任河南省委书记时, “三推两察杜康酒”被传为 +佳话。 +相来说,真实而亲切。因此,才有了首相向周总理讨要杜康酒的故 +事…… +然而,周总理与杜康的故事到此还没有结束—— +2020 年 8 月 23 日 , 又一位尊贵的客人风尘仆仆地来到杜康控 +股公司访问。他是周恩来总理生前的秘书纪东将军。 +纪东将军 1968 年 8 月 15 日从中央警卫团 8341 部队调到中南 +海西花厅周总理身边做秘书工作, 直到 1976 年周总理逝世。退休 +后担任“中共中央文献研究会周恩来思想生平研究分会”副会长和 +“周恩来邓颖超研究中心顾问”。 +纪东将军到杜康控股后,首先参观了华夏第一窖、生产现场和 +68 69 +卢展工书记在杜康控股公司生产基地视察 +纪东将军访问杜康 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 38 =====\n2010 年 3 月 6 日下午,是十一届全国人大三次会议河南代表 +团的对外开放日,70 余家中外媒体记者赶到北京河南大厦四楼国 +际会议厅,“聚焦”河南。 +2 时 55 分,河南代表团的代表到齐,记者们也都找到了属于 +自己的座位。此时,主持会议的河南代表团团长、省委书记卢展工 +看了一下全场,微笑着说: “很多代表团对媒体开放的讨论,都在 +人民大会堂举行,这次这么多媒体专程到我们河南大厦来,说明记 +者朋友们对我们河南是很有感情的。” +5 时 30 分, 当天的审议结束。主持会议的卢展工对在场的记 +者说, “感谢大家关注河南,请大家多到河南走走看看,希望大家 +喝喝河南的胡辣汤,喝喝我们的国酒杜康。”话音未落,现场已是 +掌声一片。 +“你们的卢书记真接地气,不但详答记者提问,还不时地推销 +河南的知名产品,真让人佩服。”美国道琼斯通讯社记者徐婉连连 +赞叹。 +又是一年芳草绿。2011 年 3 月 7 日,又是全国“两会”河南 +代表团联组讨论政府工作报告的“开放日”,面对中外众多媒体记 +者,作为“特殊”主持人的省委书记卢展工,上午 9 时,便提前到 +了会场。 +“上次开会我就说,各位媒体朋友能够到河南大厦来,就是对 +河南的一种感情。河南大厦在北京的东南角, 从市区走到河南大厦, +要历尽千辛万苦。”卢展工说, “我们不仅要表达河南人的感情, +还要感谢记者朋友。” +接着,卢书记以开玩笑的方式,在现场说了一段“顺口溜”, +以此推销河南的土特产品。 +“我们代表团为了表达对新闻媒体朋友的感谢之情,给大家准 +备了一些土特产品。除了去年讲过的,忧虑的事情比较多,何以解 +忧呢?唯有‘杜康’;对河南感情很深, 怎么表达呢? ‘好想你’; +现在天气很冷,所以大家喝点‘信阳红’,暖暖身。‘解解忧,想 +想你,暖暖身,我觉得挺好’。” +会场一片掌声。 +会后,卢书记依然记挂着杜康的发展。4 月 8 日,在省市相关 +部门领导的陪同下,深入到洛阳杜康控股有限公司生产基地考察。 +在原酒储备库,卢书记风趣地说: “闻着酒香也醉人啊!我可是给 +你们这个杜康酒做了好多宣传!去年的全国人代会,今年的全国人 +代会,我都给你们做了广告”。然后和企业负责人说: “河南的品 +牌,我们是全力支持的。杜康酒历史悠久,你们要好好珍惜、好好 +研究,把品牌价值真正体现出来。 +时隔一个多月的 6 月 3 日, “河南省与中央企业 2011 年合作 +重点项目签约仪式”在北京人民大会堂举行。国家有关部委领导、 +120 多家中央企业和国内知名企业参加。在招待午宴上, 作为领队, +卢书记频频举杯“杜康”和嘉宾们交流。同时,又认真地对杜康控 +股公司的领队说, 我又一次给你们推介杜康酒, 你们可要好好运作, +把杜康的品牌价值充分挖掘出来,做强做大杜康事业,支援中原经 +70 71 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 39 =====\n济建设。 +转眼到了 2012 年的全国“两会”,这是卢书记任职河南省委 +书记的第三个年头。又是 2 月 7 日的下午,卢书记早早地来到了会 +场。代表到齐后,他环视了一下四周,微笑着说: “这么多媒体专 +程到我们河南大厦来,说明对我们河南是很有感情的。待会儿你们 +走的时候,每个人带一份礼品,别忘了,何以解忧唯有杜康”。 +时隔三个多月的 6 月 5 日,卢展工再次深入洛阳杜康控股公司 +生产基地考察。他对杜康的负责人说: “我连续三年在全国两会推 +介杜康酒,你们做得咋样了?我要来检查验收。”在得知杜康控股 +目前的销售收入与三年前整合时相比已翻了数番后,连连说道:“好, +好!进步很大,这已经不得了了。不错,不错!” +在成装车间,当看到展台上摆放的红色“酒祖杜康 12 窖区” +和蓝色“酒祖杜康 15 窖区”时,他指着瓶子对随行的杜康负责人说, +杜康有品牌优势,但在包装上也要多下功夫,比如可以借鉴茅台的 +经验,中高档产品的颜色做成红色和蓝色,即红杜和蓝杜。他建议 +说: “杜康是一个历史文化底蕴深厚的品牌,包装要突出文化味, +要简单,要厚重,不能太张扬,可以借红杜、蓝杜对不同档次产品 +进行区分,让消费者很容易记住并且印象深刻。 +在成装车间的自动化生产线前,听取陪同人员介绍酒祖杜康大 +师级原浆酒后,卢书记连加赞许,他说这个产品的设计和概念都很 +好。他建议,除了 30 年的原浆酒,杜康还可以再出一款价位相对 +较低的坛装原浆酒,推出大坛和小坛两种规格,满足不同消费群体 +的收藏需求。 +在产品展台前, 卢书记看了杜康的核心产品“酒祖杜康”后说: +“杜康是国酒!我连续三年推杜康,就是认准杜康的品牌好。”在 +详细询问了杜康酒目前的产品结构后,卢书记指着酒祖杜康系列产 +品说: “不错,一个蓝瓷,一个红瓷,价位也不错,很适合市场的 +需求。要是再有一个白瓷,再加上这个大师级的原浆杜康,就更好 +了!” +随后,卢书记再次语重心长地嘱托:“你们要与历史结合起来, +突出厚重的文化,把国酒杜康这个民族品牌好好做起来”。 +72 73 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 40 =====\n题记 +欲知大道,必先为史。任何一个企业的今天都来自昨天。《杜 +康大事记》浓缩了杜康酒业发展的古今大事一百余条以飨诸君。 +西晋 ·永嘉四年(公元 310 年)江统著《酒诰》载: “酒之 +所兴,肇自上皇。五帝不过,上溯三王。或云仪狄,一曰杜康。 +有饭不尽,委余空桑。郁积成味,久蓄气芳。本出于此,不由奇 +方” 。 +唐 ·显庆元年(公元 656 年)《隋书 经籍志》载:曹操《短 +歌行》:“何以解忧,唯有杜康……” +元 · 世祖至元二十二年(公元 1303 年)版《大元大一统 +志 ·三百三十八卷》记载:“杜康水,伊阙旧县东南三十里,俗 +传制酒于此”。 +元 ·至正二十八年(公元 1368 年)版《析津志 ·祠庙仪祭》 +载:“杜康庙,在(京城)北城光禄寺内。居西偏, 内有天师宫。 +奉礼部標拨道士一人,在内提点看经,专一焚修香火。盖为酿造 +御酒,每日于上位玉押槽内支酒一瓶,以供杜康”。 +明神宗万历二十四年(公元 1596 年),汝州知州方应选纂《汝 +州志 ·卷一 · 古迹》载 : “杜康石八,在城北五十里,俗传杜康造 +酒处,弟茅柴传其酿法,有杜水,《水经注》名康水”。 +清 ·顺治十六年(公元 1659 年版)《伊阳县志》载:“杜康笆 +,城北五十里,俗传杜康造酒处”。 +杜 +康 +大 +事 +记 +75 +| 酒祖杜康 ·诗酒文化品牌 | +第 +四 +部 +分\n===== PAGE 41 =====\n先后在中央电视台及全国 20 多家省台播映。 +1988 年 9 月,52 度杜康酒被外交部定为国宴用酒和馈赠外宾 +礼品用酒。 +1988 年,杜康酒厂荣获中华人民共和国轻工业部出口创汇先 +进企业称号。 +1988 年 12 月,杜康酒获中华人民共和国质量评定委员会“中 +华人民共和国产品质量奖”。 +1988 年 12 月 26 日,新华社发布电讯 : 近日,河南省汝阳县杜 +康村发现一古代酒窖,经专家鉴定为建安时期的储酒窖。 +1988 年,杜康酒获首届中国食品博览会金奖。 +1989 年 1 月, 52 度、55 度杜康酒在第五届全国白酒评比中荣 +获第三名,进入国优行列。 +1989 年 3 月,杜康酒厂被国家计划委员会认定为国家大型二 +类企业。 +1990 年,河南省社科院考古所在古纶氏地区西部的伊川南寨 +发掘出大批夏代文物,其中有大量精美的陶制酒具。 +1990 年 10 月, 国家地质矿产部环境管理司发布【1990】116 +号文件,认定“杜康泉水属含锶、偏硅酸盐,低矿化度的优质天然 +矿泉水”。 +1990 年 9 月 8 日,首届洛阳杜康节开幕, 国家商业部、轻工部, +时任国务院副总理谷牧发来贺电;商业部、轻工部、省商业厅、轻 +工厅分别派代表参加。两家酒厂来自全国的一千多家客商云集洛阳。 +| 杜康大事记 +1972 年,按照周恩来总理 :“复兴杜康,为国争光”的指示。 +汝阳、伊川两县在整合民间酿酒作坊和县办白酒厂的基础上分别注 +册成立国营杜康酒厂。 +1979 年 10 月,中国食品工业协会在全国范围内首次通过考试 +选拔国家白酒评委,伊川杜康酒厂张建有被录取为第三届国家白酒 +评委。 +1980 年 10 月,杜康酒经河南省进出口公司经销,开始出口马 +来西亚、日本、新加坡、泰国、香港等国家和地区。 +1981 年 12 月 15 日, 杜康牌”商标由伊川杜康酒厂正式在国 +家工商总局商标局注册。 +1984 年 5 月,原中国书协副主席、著名书画家李可染为杜康 +题词:“佳酿之祖 世传杜康”。 +1984 年 12 月,杜康酒在轻工部全国酒类质量大赛中获银杯奖。 +1984 年,52 度杜康牌杜康酒,获国家商业部金爵奖。 +1985 年 10 月 20 日,中共中央总书记胡耀邦视察伊川,给杜 +康酒厂题词鼓励。 +1986 至 1989 年,河南电影制片厂、河北电影制片厂分别拍摄 +电视音乐艺术片《酒乡行》、电视剧《酒仙杜康》和电视剧《酒宗》, +76 77 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 42 =====\n2005 年 4 月,河南省财政厅拨付文物保护专项资金 30 万元, +用于杜康造酒遗址酒祖殿等古建筑修葺工程。 +2005 年 12 月 29 日,杜康牌商标被“济法字 137 号”认定为 +中国驰名商标。 +2007 年 2 月,杜康酒酿制技艺入选“河南省非物质文化遗产 +保护名录”。 +2007 年 4 月 3 日, 中国民协发布公告,命名汝阳县为 “中国 +杜康文化之乡”和“中国杜康文化传承基地”。 +2007 年 11 月 13 日,洛阳市人民政府 洛政(2007)125 号文 +件认定杜康遗址为洛阳市第三批文物保护单位。 +2008 年 6 月 22 日, 汝阳杜康酒厂破产拍卖。郑州百瑞信托有 +限公司竞拍成功。新组建汝阳杜康酿酒有限公司。 +2009年 3月,杜康酒被河南省商务厅认定为“河南老字号”产品。 +2009 年 10 月,洛阳杜康控股有限公司正式成立,当月收购伊 +川杜康实业有限公司, 12 月收购汝阳杜康酿酒有限公司。公司注 +册资本 6 亿人民币;占地 1700 余亩;拥有“杜康”和“汝阳杜康” +两个商标的专用权。 +2009 年 11 月 5 日, 杜 康 酒 通 过 中 国 质 量 认 证 中 心 +ISO9001:2008 考核认证。 +2010 年 3 月 6 日,河南省委书记卢展工在十一届全国人大三 +次会议的河南代表团对外开放日上推介河南产品 :“希望大家喝喝 +我们的国酒杜康”。之后,连续两年在全国“两会”上推介杜康。 +歌唱家刘欢、范琳琳、影星胡亚捷现场献艺。 +1990 年 11 月 11 日,国务委员李铁映参观杜康酒厂,专门观 +看了杜康河的“五彩鸳鸯虾”和“霜红鸭蛋”,指示说: “要开发 +利用好杜康矿泉水,变资源优势为商品优势”。 +1991 年 5 月,杨成武将军在北京为杜康题词:酒之源。 1992 +年 4 月 20 日,伍修权将军为杜康题词: 酒祖故乡。 +1992 年 11 月 20 日,河南省社会科学院在杜康造酒遗址举行 +奠基仪式,投资兴建“中国杜康酒文化博览中心”。 +1995 年 2 月 , 中华人民共和国统计局根据 1994 年全国主要经 +济指标排序 , 授予杜康酒厂“中国行业 100 强”匾牌。 +1996 年 12 月 14 日,汝阳杜康酒厂在国家工商行政管理总局 +正式注册“汝阳杜康”商标。 +2000 年 10 月,中国食品工业协会组织第六届国家白酒评委考 +聘工作,汝阳杜康集团公司副总经理兼总工程师张献敏被录取为第 +六届国家白酒评委。之后 , 在每五年的换届考聘中,连续被录取为 +第七、八、九、十届国家白酒评委。 +2001 年 9 月,杜康酒被中国食品工业协会白酒专业委员会评 +为“中国十大文化名酒”。 +2002 年 3 月,杜康酒被国家质量监督检疫总局命名为河南省 +第一批“原产地标记”产品,受到了原产地注册保护。 +2004 年 3 月,杜康酒厂被授予 2003 年度中国白酒工业百强企 +业。 +78 79 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 43 =====\n2010 年 3 月 6 日,洛阳市委、市政府决定:2010 年牡丹花会 +宣传口号为: “乘高铁,游洛阳,赏牡丹,品杜康”。并要求花卉 +办公室在洛阳市主干道上开辟“洛阳杜康宣传专区”。 +2010 年 8 月 27 日,通过北京大陆航星质量认证中心,洛阳杜 +康控股公司质量管理体系通过 ISO9001:2008 体系认证。 +2010 年 9 月 28 日,由中国歌舞剧院主导排练的大型歌舞剧《酒 +祖杜康》在省会郑州“香玉大舞台”隆重上演。 +2010 年 10 月 26 日,洛阳市科学技术局下发文件,认定洛阳 +杜康控股公司汝阳生产基地为“洛阳市浓香型白酒技术研发中心”。 +2010 年 11 月 24 日,杜康酒被授予“最具竞争力名牌名酒” +金像奖。和宋河、宝丰、仰韶、张弓、赊店被授予豫酒“六朵金花” +称号。 +2010 年 11 月,杜康控股调酒师张志强被中国酒业协会聘任为 +“2010 届国家级白酒评酒委员”。 +2011 年 3 月 9 日,杜康控股公司以每单位 18.65 元的价格在台 +湾证券交易所挂牌上市。即日起,“杜康控股台湾办事处”正式揭牌。 +2011 年 4 月 26 日,首届“杜康酒文化国际研讨会暨酒祖杜康 +新品发布会”在省会郑州“黄河大观”举行。来自俄罗斯、新西兰 +等 9 个国家的驻华大使馆经济参赞和国内酒文化专家、学者以及全 +国各省市 1500 余位酒企代表与会。 +2011 年 4 月 26 日, “中国洛阳‘酒祖杜康杯’围棋国际大师 +邀请赛”落下帷幕,中国聂卫平九段胜日本武宫正树九段,夺得本 +次比赛的冠军。 +2011 年 6 月 23 日,洛阳杜康控股有限公司向洛阳公交集团捐 +赠两辆价值 80 多万元的豪华公交车。 +2011 年 9 月 6 日,洛阳市人民政府科学技术局下发了洛市科 +(2011)93 号文件,认定杜康控股公司为“洛阳市浓香型白酒工 +程技术研究中心”。 +2011 年 11 月 16 日,杜康获得“金樽奖 ·2011 中国酒业最具 +成长力企业”。 +2011 年 12 月 6 日,杜康酒入选河南省民间文化遗产抢救工程 +工作委员会公布的首批“中原贡品”名录。 +2012 年 1 月 2 日,由中国收藏家协会票证收藏委员会等联合 +发行的《中国酒文化——杜康造酒》藏书票面世,全套 1 枚,志号 +为 2011-12T,发行量 5000 枚。 +2012 年 1 月,杜康酒业高酯化力微生物选育项目获河南省科 +技进步奖。 +2012 年 2 月 15 日,杜康造酒遗址环湖景观、杜康文化广场、 +华夏第一窖等基建工程开始施工。承建单位:河南建科实业有限公 +司。 +2012 年 2 月,汝阳县杜康村被河南省政府公布为第五批历史 +文化名村。 +2012 年 3 月 20 日,成都春季糖酒会,洛阳杜康与 1200 余名 +经销商现场签约,首批进货打款超过 2000 万元的就有 9 家,总金 +80 81 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 44 =====\n额超 2 亿元。 +2012 年 3 月 24 日,在新郑举行的“壬辰年黄帝故里拜祖大典” +上,“酒祖杜康”成为祭祀黄帝唯一供奉用酒。 +2012 年 4 月 10 日,由中华人民共和国文化部和河南省人民政 +府联合主办的,由“酒祖杜康” 冠名的第 30 届中国洛阳牡丹文化 +节开幕式在洛阳新区体育场隆重举行。 +2012 年 9 月 29 日,酒祖大道全线贯通。该项目总投资 7000 +余万元,全长 10.344 公里,东起二广高速(汝阳)入口,途经洛 +阳杜康控股有限公司生产基地,终点于杜康造酒遗址公园。路宽 +23 米,双向四车道,为二级公路标准,设计行车时速 80 公里。 +2012 年 11 月 18 日,以“华夏酒祖,名仕封坛”为主题的“2012 +壬辰年酒祖杜康名仕封坛大典”,在杜康文化广场隆重举行。著名 +相声表演艺术家侯耀华和河南电视台知名主持人陈坤共同主持。中 +国酒类流通协会会长王新国,中国诗酒文化协会会长蒋秋霞,中国 +著名酿酒大师赖登燡、梁邦昌,著名经济学家钟朋荣,北京大学文 +化资源研究中心主任张颐武,国内影视巨星陈建斌,以及来自全国 +各地 1000 多位杜康酒的核心经销商、投资商等嘉宾出席。 +2012 年 12 月 11 日,国家住建部、文化部、文物总局、财政 +部联合发文:洛阳市汝阳县蔡店乡杜康村列入第一批《中国传统村 +落名录》。 +2012 年 12 月 28 日,洛阳杜康控股有限公司入驻新办公大楼。 +2013 年 1 月 27 日,由大河报社、洛阳杜康控股有限公司联合 +出品的微电影《爱,就要回家》,在郑州中影国际影城华彩城店隆 +重举行首映式。 +2013 年 3 月 2 日,洛阳杜康控股有限公司与江南大学、河南 +省酒业协会在郑州签署合作协议。建立中国杜康白酒工程研究院。 +2013 年 4 月 18 日, “2013 癸巳年国花杜康封坛大典暨首坛封 +坛原浆酒收藏仪式”在伊川生产基地举行。 +2013 年 5 月 17 日,由洛阳杜康控股有限公司、河南省人民政 +府外事办公室联合主办,新加坡中国白酒协会协办的“2013‘酒祖 +杜康’中国白酒文化全球行”首场活动在新加坡举行。 +2013 年 5 月 19 日, “2013 癸巳年杜康故里敬拜酒祖大典”在 +洛阳杜康控股有限公司杜康文化广场举行。来自全国各地的 3000 +多名经销商、供应商代表共同拜谒中华酿酒始祖杜康。中央教育电 +视台的主持人张子涵现场主持。 +2013 年 10 月,杜康控股公司被第三届中国酒业营销金爵奖评 +审委员会评为“中国酒业最具成长性企业”。 +2013 年 10 月 10 日,数千箱杜康酒顺利通过洛阳市商检局商 +检之后,陆续发往加拿大和新加坡。这是时隔 20 年后,杜康酒再 +度出口美国、澳大利亚、新加坡等海外市场,成为河南白酒行业唯 +一出口品牌。 +2013 年 10 月 11 日,杜康控股举办“封坛开讲·名仕论语”讲座。 +河南豫商联合会会长陈义初,中国著名收藏大师、观复博物馆创始 +人马未都,中国入世首席谈判代表、博鳌亚洲论坛秘书长龙永图, +82 83 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 45 =====\n2016 年 5 月 13 日,杜康古镇开发建设签约仪式在杜康控股公 +司举行,中共汝阳县委副书记、县长潘峰和洛阳旅游发展集团董事 +长吕宗乐分别在协议书上签字。 +2016 年 12 月 28 日,河南省人民政府颁发《豫政[ 2016]67 号》 +文件,表彰了河南省农业产业化省重点龙头企业。杜康控股生产基 +地被授予“河南省(2016——2018)农业产业化省重点龙头企业。 +2017 年 3 月,酒祖杜康被选为第十一届中国(河南)国际投 +洽会唯一白酒指定用酒。 +2017 年 7 月 12 日 ( 农历六月十九 ),全国各地 600 余名经销 +商代表和服务于杜康品牌的合作伙伴在杜康造酒遗址的杜康祠,举 +行敬拜中华酒祖大典。 +2017 年 9 月 9 日,在“第七届中国(贵州) 国际酒类博览会” +上, “酒祖杜康”被授予“河南省十大名酒”称号,中国酒类流通 +协会会长王兴国为杜康颁发奖牌。 +2017 年 10 月 17 日 , 洛阳杜康控股和江南大学“技术创新合作 +交流会”成功举办。双方就白酒生产的技术创新、品质升级达成了 +合作意向。 +2017 年 12 月 11 日,洛阳市人民政府 洛政(2017)54 号文件 +认定杜康墓为洛阳市第四批文物保护单位。 +2017 年 12 月 29 日,杜康生产基地顺利通过 9001:2015 国际 +质量管理体系换版外部审核。 +2018 年 4 月,酒祖杜康被选为外交部河南全球推介活动招待 +北京大学文化资源研究中心主任、文学院教授张颐武先后登台演讲。 +2014 年 3 月 5 日,通过北京大陆航星质量认证中心,洛阳杜 +康控股公司环境管理体系通过 ISO14001:2004 体系认证。 +2014 年 6 月 4 日,国家质量监督检验检疫总局发布公告,批 +准洛阳杜康控股公司“酒祖杜康”为生态原产地保护产品,准予其 +使用生态原产地产品保护标志,自即日起实施保护。 +生态原产地产品是绿色、健康、环保的最有力证明,河南仅有 +2 项产品获此殊荣。“酒祖杜康”,则是全国唯一荣膺“生态原产 +地保护产品”的酒类产品。 +2014 年 7 月 24 日,洛阳市杜康村被列入 2014 年第一批中央 +财政支持的历史文化名村。 +2014 年 12 月 25 日,河南省人民政府下发通知文件,认定杜 +康控股公司的“白酒生物发酵工程技术研究中心”为“河南省白酒 +生物发酵工程技术研究中心”。 +2015 年 1 月,中国食品工业协会在全国范围内首次评审中国 +白酒大师,杜康控股总工程师张献敏获“中国白酒大师”称号。 +2015 年 3 月 25 日,由华西都市报、台湾旺报等十大主流都市 +报共同举办的“2015 两岸白酒研讨会”上, “酒祖杜康”获“2015 +年度最具投资价值的白酒品牌”。 +2015 年 6 月 18 日, “2015 杜康新品发布暨合作伙伴峰会”在 +洛阳隆重举行。来自全国各地的一千多位专家学者、名人政要、核 +心经销商结队到杜康祠敬拜酒祖。 +84 85 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 46 =====\n用酒。“酒祖杜康 12 窖区”被评为 "2017 河南市场畅销酒 "。 +2018 年 4 月 10 日 20 时, “杜康之夜”第 36 届中国洛阳牡丹 +文化节开幕式在定鼎门遗址广场精彩上演。 +2018 年 4 月 17 日,第十二届中国(河南)国际投资贸易洽谈 +会在郑州开幕, 酒祖杜康小封坛被作为服务一带一路的“河南制造” +豫酒代表在出口商品展区精彩亮相。 +2018 年 4 月,河南省高级人民法院就洛阳杜康控股有限公司 +诉陕西白水杜康酒业有限公司商标侵权一案做出终审判决:白水杜 +康对洛阳杜康构成商标侵权,判令前者立即停止侵权行为,并向洛 +阳杜康公司赔付 1500 万元。 +2018 年 5 月, “河南省纯粮固态发酵白酒酿造生产示范企业” +现场认定评审组经过审核,评定杜康控股公司为“河南省纯粮固态 +发酵白酒酿造生产示范企业”。 +2018 年 8 月,杜康被授予豫酒“五朵金花”荣誉称号。 +2018 年 8 月 12 日,河南省工商业联合会认定杜康控股为“2018 +河南民营企业现代农业 100 强企业”。 +2018 年 8 月 20 日, 由香港贸发局主办的为期 5 天的第二十九 +届香港美食博览会在香港会议展览中心圆满闭幕。“酒祖杜康小封 +坛”为唯一获得参展资格的河南酒品。 +2018 年 8 月 24 日,第 22 届中国 (郑州)国际糖酒食品交易 +会在郑州国际会展中心盛大开幕。杜康控股斩获金牛奖“杰出企业”; +“酒祖杜康小封坛”, “酒祖杜康 12 窖区”分别夺得金牛奖“优 +秀品牌”等四项奖项。 +2018 年 9 月,洛阳杜康控股有限公司荣膺“改革开放 40 年—— +中国酒业风云企业”和“改革开放 40 年——中国酒业风云品牌” +荣誉称号。 +2018 年 9 月 21 日,杜康控股荣获“2018 河南民营企业现代农 +业 100 强”。 +2018 年 10 月 17 日(农历九月九日),“2018戊戌年酒祖杜康·封 +坛大典”在古都洛阳举行。来自全国各地的诸多名人政要、商界精 +英、专家学者聚首洛阳,同拜酒祖杜康。 +2018 年,四川省、江西省食品协会及江苏、安徽、河北等 +地 42 家白酒企业先后到杜康造酒遗址祭拜酒祖并开展交流活动。 +2019 年 3 月 15 日,洛阳杜康冠名第 37 届中国洛阳牡丹文化 +节开幕式和经贸合作签约仪式。 +2019 年 4 月 8 日, “中国韩国人会 · 洛阳杜康控股战略合作 +签约仪式”在郑州举行。 +2019 年 4 月 11 日,十届全国政协副主席李蒙莅临杜康视察。 +2019 年 4 月 12 日,酒祖杜康获选中国——中东欧国家遗产论 +坛指定用酒。 +2019 年 9 月 3 日, “ 2019 河南民营企业百强发布会”在郑州 +举行,洛阳杜康控股有限公司荣获“2019 河南民营企业现代农业 +100 强”。 +2020 年 1 月 25 日, “酒祖杜康”荣耀当选央视春晚郑州分会 +86 87 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 47 =====\n约仪式在洛阳隆重举行。 +2021 年 10 月 14 日。农历九九重阳节, 杜康控股公司首次“线 +上”举行“辛丑年敬拜酒祖大典”。 +2021 年 11 月,“12 区、15 区酒祖杜康”双获第 22 届布鲁塞 +尔国际烈性酒大赛金奖。 +2022 年 4 月 15 日,洛阳市杜康转型发展工作推进会在杜康控 +股汝阳生产基地召开,市发展改革委、财政局、金融工作局等 15 +个局委及汝阳、伊川两县有关领导 30 余人参加了会议。 +2022 年 7 月 17 日,洛阳市委副书记、市长徐衣显带领洛阳市 +推进白酒转型发展攻坚领导小组专班成员在伊川县召开全市杜康转 +型升级电视电话会议 , 推进杜康转型升级。 +2022 年 7 月 28 日,洛阳市市场监管局局长吉建宾带领市场监 +管局有关科室负责人到杜康控股生产基地调研。 +2022 年 8 月 3 日,洛阳杜康控股白酒研究中心签约揭牌仪式 +在汝阳县先进制造业开发区科创大厦举行。 +2022 年 12 月 17 日,洛阳市市长徐衣显主持召开洛阳市杜康 +转型发展、杜康酒市场推广专题视频会议。 +2023 年 2 月 1 日,中国酒类流通协会副会长、河南省酒业协 +会会长熊玉亮一行 8 人到杜康控股汝阳生产基地调研。 +2023 年 3 月 4 日,洛阳市作家协会 50 余名作家相聚杜康采风, +助力杜康复兴。 +2023 年 4 月,在仁怀市招商引资推荐会上,遵义市委常委、 +场庆功晚宴唯一指定用酒。 +2020 年 2 月 26 日至 3 月 1 日,北京大陆航星质量认证中心专 +家组对杜康控股公司伊川生产基地进行了质量管理体系现场审核。 +伊川生产基地顺利通过 LSO900130901 质量管理体系认证。 +2020 年 8 月 23 日,中华人民共和国国务院原总理周恩来的秘 +书纪东将军一行访问杜康控股公司。纪将军先后参观了杜康造酒遗 +址、华夏第一窖和杜康展品馆,并在现场将 1972 年日本首相田中 +角荣访华时,周总理“复兴杜康为国争光”的指示敬书了一遍赠与 +杜康。 +2020 年 9 月 18 日至 21 日,“酒祖杜康 12 窖区”荣获“2020ISGC +国际烈酒(中国)大奖赛金奖”。 +2020 年 9 月 19 日, “买遍中国 ·助力美好生活——央视新闻 +全国 31 省份巡回带货直播”河南站在洛阳举行,杜康作为唯一一 +个豫酒品牌进入央视直播间。 +2020 年 9 月 19 日,洛阳杜康控股有限公司荣获“2019 年度河 +南省白酒业转型发展十强企业”。 +2020 年 10 月,52 度“杜康 1 号”在中国食品工业协会苏鲁豫 +皖峰会上获“标志产品”称号。 +2021年2月,中共中央宣传部“学习强国APP”学习平台音频“讲 +故事”专栏, 《大禹治水》《杜康酿酒》等 11 个故事入选。《杜 +康酿酒》排位第二,音频时长 7 分 22 秒钟。 +2021 年 4 月,杜康控股总冠名第 39 届中国洛阳牡丹文化节签 +88 89 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 48 =====\n仁怀市委书记芦忠于代表仁怀市人民政府与杜康集团签订战略合作 +协议,贵州杜康酒业股份有限公司正式成立。 +2023 年 4 月 22 日,癸卯年黄帝故里拜祖大典在新郑黄帝故里 +隆重举行,酒祖杜康获选专用供奉用酒。 +2023 年 4 月 26 日,河南省委书记楼阳生到洛阳杜康控股公司 +考察调研。楼书记先后察看了地下酒窖,成装生产线、产品展厅, +详细询问了品质发展和市场情况。听取公司负责人关于企业产品布 +局,品质产能提升, 营销推广策略等方面的工作汇报。指示说, “杜 +康有历史底蕴、有文化渊源、有地域特色,我视之如宝, ”嘱托杜 +康要做好“百亿计划、上市计划”的长期规划,为豫酒振兴做出积 +极贡献。 +2023 年 5 月 10 日 , 第 40 届酒祖杜康 · 中国洛阳牡丹文化节纪 +念酒高票当选“洛阳十佳伴手礼”。作为洛阳礼物,与全世界人民 +共鉴中国酒文化之美! +2023 年 6 月 11 日, 今日资本集团合伙人戴丽丹女士一行 10 +人到杜康控股伊川生产基地实地考察。市县有关领导陪同考察。 +2023 年 7 月 29 日,由大河报、河南省酒业协会和河南省糖酒 +食品流通协会共同主办的“2022 年河南酒业金象奖颁奖典礼”在 +郑州天地粤海酒店隆重举行。共颁出了人物奖、产品奖、企业奖 3 +个版块 9 个奖项。洛阳杜康控股凭借卓越的酒水品质、过硬的自身 +实力以及享誉千年的品牌声量,力揽四项大奖。 +2023 年 7 月 31 日,由河南省豫酒振兴领导小组、河南日报社、 +河南广播电视台主办的“豫酒大师”推评启动仪式暨豫酒创新宣传 +活动颁奖仪式在郑州举行。洛阳杜康控股勾调技术部经理张志强被 +授予第三届“最美豫酒工匠”荣誉称号。 +2023 年 8 月 1 日,金东投资集团、华致酒行、珍酒李渡董事 +长吴向东一行走进杜康控股参观交流,杜康控股相关负责人全程陪 +同。 +2023 年 9 月,由杜康集团控股入资的贵州杜康酒业股份有限 +公司成立。公司坐落于“中国白酒金三角”的茅台镇 7.5 平方公里 +核心产区, 占地面积 200 余亩,年库存系列年份酱香原酒 20000 余 +吨。是杜康控股集团旗下以酱酒品类为主营业务的控股子公司。 +2023 年 9 月 8 日下午,全国“百名记者看洛阳乡村振兴”采访团 +120 余人走进杜康控股伊川生产基地采风。 +2023 年 9 月 10 日,“醉美杜康 共赢中秋”2024 杜康客户中 +秋答谢盛典在绿城郑州盛大举行。杜康控股郑州市区销售团队及来 +自一线市场的合作伙伴 1000 余人参会。 +2023 年 9 月 22 日,杜康控股顺利通过中检科创“纯粮固态发 +酵白酒”现场审核,成为河南省首家“纯粮固态发酵白酒”企业。 +2023 年 10 月 23 日,“癸卯年酒祖杜康 • 封坛大典”在杜康 +控股汝阳酿酒基地举办。 +2023 年 10 月 31 日, 中原大虎岭体育小镇暨杜康温泉文旅项 +目签约仪式在汝阳举行。汝阳县委副书记、县长姬素娟,县领导李杰、 +张跃伟、孙跃伟、王晓辉及杜康控股相关负责人等参加签约仪式。 +90 91 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 49 =====\n2023 年 11 月 15 日,河南省政协副主席朱焕然一行到洛阳杜 +康控股,就加快推进杜康高质量转型发展和“豫酒振兴、杜康先行” +目标要求进行调研指导。 +2023 年 12 月,贵州杜康制定首个五年规划,提出“三步走” +产业建设发展战略:通过打造贵州杜康酒庄、精品酒庄及贵州杜康 +产业园区的长线部署,稳步提升酱香酒产业规模,致力构建对标国 +际的产区新业态。 +2023 年 12 月 31 日,由中共洛阳市委宣传部、洛阳市文化广 +电和旅游局、洛阳市文学艺术界联合会主办,杜康冠名的“杜康之 +夜”音乐会在洛阳正大文化交流中心开幕,数十万人多地观赏。 +2024 年 1 月,作为仁怀市重点招商引资项目,贵州杜康与仁 +怀市自然资源管理局签署《国有建设用地使用权出让合同》,获得 +茅台镇沿河村工业用地,规划占地面积 200 亩。 +2024 年 1 月 26 日,贵州杜康通过中检科创 ( 北京 ) 测试认证 +有限责任公司实地检验,获得“纯粮固态发酵白酒” 认证证书。 +2024 年 2 月 1 日,商务部、文化和旅游部、国家市场监管总局、 +国家知识产权局、国家文物局等 5 部门联合发文,认定“杜康酒” +为中华老字号品牌。 +2024年2月 11 日,(龙年正月初一)由杜康控股冠名赞助的“穿 +越盛唐洛阳年 ·杜康之夜”新春焰火晚会在神都洛阳 · 隋唐洛阳城 +天街宁人坊璀璨绽放,精彩上演! +2024 年 2 月 28 日, “酒祖杜康 酱香启航”贵州杜康酱香新 +品专家品评会在酒都仁怀举行,专家组对贵州杜康产品高度评价, +现场出具综合品评意见。 +2024 年 2 月 28 日,2024 赛季河南足球俱乐部出征仪式在郑 +州航海体育场圆满举行,洛阳杜康控股与河南足球俱乐部正式签署 +冠名合作协议。 +2024 年 3 月 15 日,贵州杜康与仁怀市政府在四川成都签署《仁 +怀市杜康酒业 5000 吨酱酒生产项目投资协议》。杜康酱酒生态工 +业园正式立项。 +2024 年 3 月 18 日,贵州杜康在成都举办“酒祖杜康 酱香启 +航——2024 贵州杜康酱香新品发布会”,杜康酱酒全线产品正式 +面向行业发布。 +2024 年 3 月 21 日,贵州杜康获得中国出入境检验检疫协会 +“生态原产地产品保护认证” 证书。 +2024 年 4 月 21 日,河南酒祖杜康队 2024 赛季中超联赛第 7 +轮赛事在郑州航海体育场火热打响,河南酒祖杜康队以 1:0 战胜青 +岛海牛荣耀主场,摘得首胜。 +2024 年 9 月 10 日,贵州杜康全国运营中心启动暨酒祖杜康酱 +酒文化馆开业仪式在郑州盛大举办,杜康酱酒落地中原。 +2024年9 月 15 日,为纪念 1988年杜康酒荣获“国宴用酒”和“国 +家质量奖”,杜康全新复制畅销名酒“花脸杜康”,重磅推出核心 +战略新品“杜康酒 · 国优 1988”。 +2024 年 9 月 26 日,东方古典院落式的“杜康酒文馆”在郑州 +92 93 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 50 =====\n康控股有限公司”荣耀登榜。 +2024 年 12 月 30 日,河南省工业和信息化厅发布“2024 年河 +南省省级工业遗产认定名单”,杜康酿酒车间及桑泥窖池成功入选。 +2025 年 1 月 6 日, “贵州杜康 · 感恩豫见”国都印象销售有 +限公司成立暨杜康酱酒运营中心开业庆典在平顶山市举行,为品牌 +在豫中市场的发展注入动能。 +2025 年 2 月 19 日,洛阳杜康控股再度正式冠名河南足球,以 +一场颇具“河南骄傲”的 2025 赛季出征及冠名授牌仪式,叩开河 +南俱乐部酒祖杜康队 2025 中超新赛季的大门。 +2025 年 3 月 1 日,洛阳杜康控股“向下扎根 澎湃向上”2024 +总结表彰暨 2025 共启大会在洛阳 ·杜康玄武庄温泉酒店隆重举行。 +2025 年 3 月 15 日至 17 日,由洛阳杜康控股冠名赞助的 “杜 +康之夜”四十年戏曲名家经典汇演,在河南中州影剧院连演三场。 +杜康以 “经典致敬经典” 的品牌主张,携手许昌市戏曲艺术发展 +中心,用传统戏曲的魅力点燃中原文化的璀璨星光。 +2025 年 3 月 25 日,贵州杜康在第 112 届全国糖酒商品交易会 +酱酒大会上蝉联 “价值酱香白酒”称号(该奖项已连续两届获得)。 +2025 年 4 月 1 日,由河南省人民政府主办,河南省文化和旅 +游厅、洛阳市人民政府承办的第 42 届中国洛阳牡丹文化节盛大启 +幕,酒祖杜康, 再度以“官方唯一指定用酒”的特殊身份惊艳亮相。 +2025 年 5 月 ,杜康集团在原山西汾酒集团宝泉涌公司的基础 +上,成立山西杜康酒厂有限公司,正式进军清香酒业务。 +揭幕开馆。 +2024 年 9 月 29 日,为庆祝中华人民共和国 75 岁华诞。洛阳 +市总工会和杜康控股联合举办的“爱家乡喝杜康 ·杜康之夜”演唱 +会在汝阳县刘伶广场隆重举行。杜康控股数百名员工和千余名观众 +现场观赏。 +2024 年 10 月,贵州杜康迎宾酒系列产品发布,标志着贵州杜 +康面向全国市场、全渠道的“1+3+N”产品线策略全面布局完成。 +2024 年 10 月 24 日至 26 日,在洛阳举办的“世界客属第 33 +届恳亲大会”,指定杜康酒为专用接待酒。 +2024 年 11 月 15 日,河南省政协副主席朱焕然一行到洛阳杜 +康控股公司,就加快推进杜康高质量转型发展,积极响应“豫酒振 +兴、杜康先行”目标要求进行调研指导。 +2024 年 12 月 16 日, “酒祖杜康,冀酱启航”——保定运营 +中心启动暨酒祖杜康酱酒文化馆开业典礼圆满礼成,成为贵州杜康 +布局华北市场的关键一笔。 +2024 年 12 月 16 日, “豫农优品天下行”启动仪式暨上海展 +销活动开启,杜康作为豫农优品代表品牌,精彩亮相上海滩。 +2024 年 12 月 27 日, “酒祖杜康 · 卓粤启航”酒祖杜康广东 +平台启动暨酱酒产品上市发布会举行,标志着杜康酱酒向华南市场 +踏出了关键一步。 +2024 年 12 月 27 日,河南省质量强省战略工作领导小组办公 +室对外公示了拟授权使用“美豫名品”的企业名单,其中“洛阳杜 +94 95 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 51 =====\n洛 贵 山 +阳 州 西 +杜 杜 杜 +康 康 康 +控 股 酒 +股 份 厂 +酒 +厂 +介 +绍 + 贵州杜康酒业股份有限公司是酒祖杜康集团旗下以酱酒品类为 +主营业务的控股子公司,集生产、经营、销售于一体。公司生产基 +地位于贵州仁怀酱酒核心产区,常年库存系列年份酱香原酒 20000 +余吨,新规划厂区位于茅台镇7.5平方公里核心产区,占地面积200 +余亩,依托茅台镇核心产区地域优势,致力于为消费者打造具有杜 +康品牌特色的高品质酱香型白酒。 + 贵州杜康将牢记周恩来总理“复兴杜康,为国争光”的伟大指 +示,以“酒祖杜康”品牌为核心,扎根贵州,传承地道酱香酿酒工 +艺,严控产品每道工序和每个工艺细节,凭借雄厚的技术力量及严 +格的质量保证体系,打造酱酒领域具有全国化知名度的酒类品牌。 +| 1 、贵州杜康介绍 +贵州杜康酒业股份有限公司 +96 97 +| 酒祖杜康 ·诗酒文化品牌 | +第 +五 +部 +分\n===== PAGE 52 =====\n2024年1月,贵州杜康与仁怀市自然资源管理局签署《国有建设用 +地使用权出让合同》,获得茅台镇沿河村工业用地。 +98 99 +新规划用地位于茅台镇沿河村工业用地,紧邻赤水河畔,区域位 +置优越,与茅台酒厂规划用地相邻,共享独特的茅香生物菌群。 +2024年3月18日,仁怀市副市长赵久毅出席会议并与贵州杜康签署 +战略投资协议。 +2024年3月18日,在成都举办的“酒祖杜康 酱香启航——2024贵 +州杜康酱香新品发布会”上,仁怀市副市长赵久毅出席会议。 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 53 =====\n100 101 +采用公司+农户模式,公司在仁怀市有近万 +亩优质糯高粱种植基地,从源头确保品质。 +杜康酱酒的优质基因 +公司在茅台酒厂2公里处建有1家制曲厂, +有制曲发酵室100多间,年制曲1万多吨。 +公司现有陶坛藏酒馆6栋,常年库存系列年 +份酱香原酒20000余吨 +公司现在制酒车间12栋,酒庄1家,窖 +池999个,年产优质酱香酒10000余吨。 +通过将贮酒容器埋入种有四季常青植物的 +土壤中,加速氧化反应,让酒在低温、高湿、 +富氧的植物根系环境下陈酿数年而自然老 +熟,从而使酒质更加细腻 +提升了酱酒的健康属性,加速相关物 +质的相互转化,酒体更加醇厚,香味 +更加优雅。 +茅台酒厂原技术 +科负责人;酒业 +泰斗季克良嫡传 +弟子;中国酿酒 +大师 质量总顾问 +国家特邀白酒评 +委;贵州省政协 +委员。 +梁明锋 +茅台酒厂原高级 +工程师;国家白 +酒评委;贵州省 +酿酒工业协会专 +家委员会主任; +仁怀市酒业协会 +会长。 +吕云怀 +茅台酒厂原副厂 +长;茅台酒厂原 +制曲专家; +高级经济师、酿 +酒师、贵州省劳 +动模范。 +丁德杭 +茅台酒厂唯一脱 +产制曲师; +茅台酒厂原制曲 +副主任; +国家一级技师。 +陶和平 +茅台酒厂原副总 +工程师; +茅台酒厂原总经 +理助理; +兼生产技术处处 +长;仁怀市政府 +白酒专家成员。 +张世华 +茅台酒厂原生产 +主任; +高级酿酒师、工 +程师; +茅台酒厂工作43 +年获茅台酒厂60 +周年突出贡献奖。 +邓万波 +中国酱香酿酒大 +师;遵义酒业协 +会专家; +仁怀市酱香白酒 +评估认证专家库 +成员。 +雷显仲 +国家一级品酒师 +贵州省白酒评委; +仁怀市酱香白酒 +评估认证专家库 +成员。 +张明松 +八位大师只为一瓶好酒 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 54 =====\n102 103 + 山西杜康酒厂有限公司位于闻名遐迩的千年酒都——山西杏花 +村,与生产驰名中外的中国四大名酒——汾酒的山西杏花村汾酒集 +团有限责任公司仅一墙之隔。公司前身是汾阳市杏花村杏蕊酒厂, +始创于1986年,2025年初更名为“山西杜康酒厂有限公司”,是酒 +祖杜康集团旗下以清香酒品类为主营业务,集生产、经营、销售于 +一体的全资股份制公司。公司现占地面积105600㎡,建筑面积36800 +㎡,注册资本980万元,员工580名(其中大中专以上学历的121名,中 +级技术职称以上的29名),年生产清香型大曲白酒5000吨以上,基 +酒储量达16000吨。 + +| 2 、山西杜康介绍 +山西杜康酒厂有限公司 +公司酿造车间与汾酒厂仅一墙之隔,距800 +多年的汾酒之源(汾酒老酒坊博物馆)仅 +千米。共享得天独厚的微生物菌群环境, +完整保留了"地缸发酵、 +杜康清香“7321”工艺 +清香三曲是清茬曲、红心曲和后火曲 。这 +三种大曲是清香型白酒(如汾酒)的核心 +工艺要素,通过不同制曲工艺控制温度与 +菌群,赋予酒体纯净、协调的香气层次。 +三曲 +两甑是指大茬酒和二茬酒。大茬酒:高粱 +破碎,开水润粮,上甑蒸80分钟,八缸发 +酵28天。二茬酒:大茬蒸馏后的酒糟,作 +为二茬发酵的材料,纯糟发酵,不再续粮。 +两甑 +清香型白酒用的是地缸,每次原料入缸发 +酵前用花椒水杀菌,确保干净的发酵环境。 +原料是“清蒸二次清”,清香酒口感更清 +纯,全部都在一个清字下功夫,一清到底! +一清到底 +七必清 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 55 =====\n| 酒祖承源 杜康留香 | +“曲为酒之骨”,杜康清香大曲是杜康清 +香专属大麦、豌豆和深层岩溶井水为原料 +踩制而成,不同于其他香型酒的只用一种 +曲,杜康清香酿制时采用三种特有“酒 +曲”,即清茬曲、红心曲、后火曲。 +同酒曲 +杜康清香延承杏花村一脉相承的酿造智慧, +由与汾酒同源的技术大师团队倾心掌舵。 +深谙清香型白酒的精髓,从制曲、发酵到 +勾调,每一步都由大师领衔严苛把关,确 +保酒体风格清香纯正、余味爽净。 +同匠心 +杜康清香采用富含多种微量元素的陶器小 +缸精酿,坚持“粮”、“士”分离的高成 +本“贵族”发酵方式,洁净的地缸发挥其 +陶制“微氧”环境的呼吸作用,提供更纯 +净、更本真的微生物发酵环境。 +同技艺 +大楂酒、二楂酒送入地下酒库,倒入陶缸分 +别储存。经过一定时间的储存,杜康清香调 +酒师进行口感调制,小样调酒,大样养制, +合入大缸养酒半年以上,再通过品评、化验, +符合国家食品法标准才能装瓶出厂。 +同勾调 +公司酿造车间与汾酒厂仅一墙之隔,距800 +多年的汾酒之源(汾酒老酒坊博物馆)仅 +千米。共享得天独厚的微生物菌群环境, +完整保留了"地缸发酵、清蒸二次清"等7项 +国家级非遗工艺。 +同宗源 +杜康清香公司位于北纬37°世界名酒带上, +闻名遐迩的千年酒都,中华白酒第一村— +—中国杏花村,与生产驰名中外的中国四 +大名酒——汾酒的山西杏花村汾酒集团有 +限责任公司仅一墙之隔。 +同产区 +杜康清香酿造用水取自杏花村地下的深层 +岩溶矿泉水,深层深井深度层层过滤,富 +含多种有益矿物质,水质清冽甘甜无污染, +无需处理可直接饮用和用于生产,更是适 +合清香杜康清香酿造的天然矿泉水。 +同水源 +“好粮酿好酒、粮为酒之肉”,品质卓越 +的原粮是酿造美酒的基础。酿酒精选优质 +汾州红高粱为原料,选用新疆奇台县的大 +麦、本地优质小麦和河北张北坝麻豌豆制 +曲,从源头上决定了杜康清香纯正。 +同原粮 +104 105 +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 56 =====\n洛阳杜康控股有限公司是 “杜康”商标的独家持有者,旗下 +拥有河南杜康酒业股份有限公司(原伊川杜康)和汝阳杜康酿酒有 +限公司两家全资控股子公司。 +公司注册资本 6 亿人民币, 占地 2100 余亩, 员工 2000 余人, +拥有国家级白酒大师 1 名,国家级评酒委员 5 名、省酿酒大师 5 人, +省级白酒评委 16人 ,其他工程师及技术人员近400 名。公司建成“华 +夏第一窖”地下酒窖、总面积 16000 多平方米,拥有 9 个酿酒车间 +和 10 个包装车间,21 条自动化生产线。酒祖杜康、杜康造酒为本 +集团核心品牌资产。 +| 3 、杜康控股介绍 +洛阳杜康控股有限公司 +华夏第一窖: +2009 年杜康控股成立后,投入巨资,历时 3 年,亚洲第一大 +地下酒窖建成投入使用。总面积 16000 平方米、总容积 60000 立方 +米。设有私人封坛小坛区及公司封坛大坛区。 +地下酒窖掠影 +106 107 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 57 =====\n杜康酒酿造车间 +杜康酒厂的传统工艺与现代技术相结合,是确保每一瓶杜康酒 +品质合格的关键。 +酿造车间内的古老窖池,传承着千年的酿酒文化,每一块石板 +上都镌刻着斑驳岁月的痕迹。发酵车间内的微生物菌群丰富多样, +为酒的醇化提供了得天独厚的自然条件。制曲车间则是一片繁忙的 +景象,工人们熟练地操作着各种制曲设备,确保着曲料的规范和品 +质。罐装与包装车间更注重每一个细节,从瓶子的清洗、酒液的灌 +装到标签的粘贴,每一步都严格把关,力求完美。 +酿造车间: +杜康酒厂内的“杜康工业遗产生产基地”是其核心生产区域, +涵盖了酿造、发酵、制曲、灌装和包装等全系列生产流程。 +108 109 +杜康酒酿造车间 +杜康遗址公园: +公园占地 206 亩,是祭祀酒祖, 观光旅游, 品酒休闲的绝佳去 +处。这座公园是全国唯一一家由中宣部委托中国民协颁发“中国杜 +康文化之乡”和“中国杜康文化传承基地”牌匾和证书的酒文化公 +园。也是全国唯一一个具有历史和考古认证的“酒文化主题公园”。 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 58 =====\n杜康遗址公园鸟瞰图 +站在山门的台阶上,可以一览杜康造酒遗址的风景:杜康河, +杜康泉;杜康村,杜康祠;杜康仙庄和九曲二仙桥;可以游仙庄, +祭酒祖,赏美景,品杜康。 +杜康造酒遗址内杜康祠、酒泉等众多景点,浓缩了杜康文化精 +髓、吸引各地人士前来打卡参观、爱酒人士前来祭拜酒祖。 +110 111 +杜康遗址公园大门 +杜康祠 +在美丽的杜康造酒遗址公园内,有一棵历经千年变迁的空桑 +树,枝繁叶茂,这棵空桑树龄已达 2000 多年、被河南省人民政府 +认定为一级古树,授牌保护,也是杜康造酒文化的活化石。杜康品 +牌根基源于西晋江统的(酒诰): +酒之所兴,肇自上皇,或云夷狄,一曰杜康,有饭不尽,委 +余空桑,郁积成味,久蓄气芳,本出于此,不由奇方。 +杜康空桑造酒故事由此而来。 +空桑树 +酒 泉 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 |\n===== PAGE 59 =====\n杜康庄园 +杜康玄武莊温泉度假区包含曲水花坊餐厅、食野宴会厅、海西 +别棠四合院、盈海景观湖、尘山轻奢公寓、十二见山木屋别墅、铜 +雀台白酒文化品鉴中心、玄武莊文化创意中心暨河洛艺术家村落、 +西风马术俱乐部、驭风山卡丁俱乐部、玄武温泉主楼、大草坪、玄 +武石阵等 20 余个休闲体验场景。 +杜康庄园: +杜康玄武庄园温泉度假区,依托大虎岭得天独厚的自然环境以 +及杜康深厚的历史文化,以“轻松自然,空间美学,沉浸旅游”为 +运营理念,将自然美景与人文历史融为一体,打造出一处集温泉度假、 +文化创意、旅游观光、住宿娱乐为一体的综合性休闲旅游胜地。 +112 113 +杜康玄武莊温泉度假区 +| 酒祖承源 杜康留香 | +| 酒祖杜康 ·诗酒文化品牌 | \ No newline at end of file diff --git a/scripts/_pdf_extract/poetry.txt b/scripts/_pdf_extract/poetry.txt new file mode 100644 index 0000000..7b97e1b --- /dev/null +++ b/scripts/_pdf_extract/poetry.txt @@ -0,0 +1,2217 @@ +\n===== PAGE 1 =====\n酒祖杜康诗酒文化 +(杜康古诗词曲赋译注) +陈武戟 李玉强\n===== PAGE 2 =====\n序 言 +酒香醉天下,千年诗未央 +“诗酒”在汉语中是一个让人怦然心动的词汇。人的喜怒哀乐, +借诗借酒,总能达到酣畅的境界。生活中缺少了诗与酒,就像大海 +没有波涛起伏, 就像大地没有群岭逶迤, 平淡了许多, 寡味了许多。 +于是,饮酒赋诗就成了文人墨客的最爱,一篇篇关于酒的名篇佳什 +就此诞生。在千载光阴里,最为耀眼的当数那沉淀着诗人的凝望, +镌刻着墨客沉吟,将一抹醇香融入华夏文明的杜康古诗词曲赋。 +以杜康为意象创作的诗词曲赋,名家荟萃:有曹操、曹植、杜 +甫、白居易、苏轼、辛弃疾、陆游、汤显祖、冯梦龙、王世贞等。 +这些文坛泰斗,将智慧与情感意寄酒祖,他们的作品已成为东方美 +学的文化符号,醇香可沁史册。 +走进杜康诗词曲赋的世界,感受历代先贤的心跳与脉搏,才能 +体味他们对生命、对创造、对宿命的感悟:“对酒当歌, 人生几何” +是魏武帝对生命的感喟; “肇基曲糵,光开祀飨”是王绩对古人匠 +心的礼赞; “杜康初筮,正得云雷”是辛弃疾对宿命的嘲弄;而冯\n===== PAGE 3 =====\n目录 +短歌行………………………………………… 东汉 · 曹操(02) +七启(节选)………………………………… 东汉 · 曹植(04) +酒 诰 …………………………………………… 晋 · 江统(06) +酃酒〔1〕 + 赋(节选) …………………………… 晋 · 张载(07) +祭杜康新庙文…………………………………… 唐 ·王绩(09) +题张氏隐居二首(其二)……………………… 唐 ·杜甫( 12) +酬梦得比萱草见赠…………………………… 唐 · 白居易( 14) +镜换杯………………………………………… 唐 · 白居易( 15) +酒中十咏并序 · 酒床………………………… 唐 ·皮日休( 16) +酒 赋 …………………………………………… 宋 · 吴淑( 17) +和陶《止酒》并引……………………………… 宋 · 苏轼( 19) +饮酒四首(其四)……………………………… 宋 · 苏轼(22) +次韵渊明饮酒诗(节选)……………………… 宋 · 张耒(23) +饮 酒 ………………………………………… 宋 · 晁说之(24) +和资道读王绩传……………………………… 宋 · 晁说之(26) +梦龙“杜康哥,我把你做恩人叫”则是对酒祖的亲昵。曹公吞吐风 +云的豪气,杜甫庄谐杂陈的风趣,苏东坡海天澄澈的达观,冯梦龙 +狂语娇嗔的率真,皆以其特有的内涵诠释着杜康文化的真谛。 +《杜康古诗词曲赋译注》精选了汉代至清代关于杜康的韵文作 +品 76 篇。由于时空流转 , 文字递嬗,后人阅读会有一定困难。为 +了提高其可读性和普及性, 我们在编著时一方面按照朝代顺序排列, +利于读者溯源查考。另一方面,通过“解字”和“溯典”,对生僻 +文句及典故标明出处和释义, 并按照现代语义对原文进行逐句翻译, +以加深读者对内容的理解。 +《杜康古诗词曲赋译注》就要出版了。在这个信息碎片化的时 +代,我们期待这部带着墨香与酒香的选注本,能成为读者案头的一 +方诗意净土。当夜幕降临时,斟半盏清醑,展卷轻吟,让杜康的芬 +芳携着古人的魂魄,穿越千年与我们共醉 , 使我们在共沐酒香中感 +受泱泱中华酒文化的魅力,并以此儒雅传承文明,以此经典丰富人 +生。 +衷心希望《杜康古诗词曲赋译注》能对广大读友有所裨益。 +是为序。 +作者 +二〇二五年初春于杜康村\n===== PAGE 4 =====\n觅神霄道士古铜爵……………………金末元初 · 元好问( 59) +酒……………………………………………… 元 ·黄复圭( 61) +上巳日〔1〕 + 吴野人烹蟹及吴化父兄弟宴集 … 明 ·王叔承( 62) +酒色财气歌…………………………………… 明 · 冯梦龙( 65) +骂杜康………………………………………… 明 · 冯梦龙( 66) +杜康庙………………………………………… 明 ·周淑禧( 67) +和陶诗《止酒》………………………………… 明 ·李贤( 68) +对酒 ·其二……………………………………… 明 · 冯裕(70) +酒房戏为长庆体示四郎侄…………………… 明 ·王世贞(72) +雁来红………………………………………… 明 · 汤显祖(75) +过俞羡长小饮二首 其二 …………………… 明 ·胡应麟(76) +宣城饮王舍人家留别………………………… 明 ·袁宏道(78) +东风引 ·瓶山〔1〕 + …………………………… 明 · 归淑芬(79) +饮酒歌………………………………… 明末清初 ·黎景义(81) +吴长组征诗为杜毅斋开酒禁 其二 … 明末清初 ·倪元璐(83) +杜康桥………………………………… 明末清初 · 陈函辉(84) +寄于皇(其二)……………………… 明末清初 ·龚鼎孳(85) +初夏闲居 其二 ……………………… 明末清初 · 彭孙贻(86) +满宫花(冬饮)……………………… 明末清初 · 陆求可(87) +逍遥游…………………………………………… 宋 ·邵雍(27) +送友人丧二绝…………………………………… 宋 · 陈东(29) +酒诗(节选)…………………………………… 宋 ·胡寅(30) +珊瑚钩诗话(选)…………………………… 宋 · 张表臣(32) +醉 赋 …………………………………………… 宋 · 陆游(33) +一春无日不饮遂作肺嗽效乐天体…………… 宋 ·李流谦(34) +沁园春 ·杯汝知乎…………………………… 宋 ·辛弃疾(38) +与张提点共饮席间作………………………… 宋 ·释道济(41) +颂古二十八首………………………………… 宋 ·释道川(42) +夜步天街书所见………………………………… 宋 · 高翥(44) +感古十首(其十)…………………………… 宋 ·胡仲弓(45) +沁园春 ·客山阳偕诸公游杜康庄刘伶台醉吟… 宋 ·王奕(46) +鹧鸪天 ·孟津作……………………………… 金 ·元好问(48) +行香子…………………………………………… 金 ·许古( 50) +酹江月 ·题酒………………………………… 金 ·谭处端( 52) +送魏叔华归杭州得行字……………………… 元 · 陆文圭( 54) +次韵吴成季〔1〕 + 宗师赤城阻雨 ………………… 元 ·虞集( 55) +折桂令 · 羊羔酒〔1〕 + ………………………… 元 ·王举之( 57) +既和乐天诗,独饮戏作……………………… 金 ·李奎报( 58)\n===== PAGE 5 =====\n粉蝶儿(咏酒)……………………… 明末清初 · 陆求可(89) +醉公子 ·本意…………………………… 明末清初 ·尤侗(90) +伤 春 ………………………………… 明末清初 ·王鸣雷(91) +赭阳酒民歌……………………………………… 清 · 田雯(92) +摸鱼儿 · 万华亭招同陆以宁张桂岩葛菱溪唐柘田汪绣谷小饮 +寓斋醉后作…………………………………… 清 ·凌廷堪(96) +铜雀台瓦砚歌………………………………… 清 · 宋书升(98) +登襄阳郡楼………………………………………清 ·周昱(100) +消寒十咏 思佳客 其八 煮酒 …………………清 ·鲍之芬(101) +杜康墓踏秋谢高荦生招饮……………………清 · 汪廷桂(102) +遣 兴 …………………………………………清 · 刘慎荣(104) +和夫子酬江太守原韵即以写怀 其二 ………清 ·姚倚云(106) +居赤嵌一载矣 计日有感 ……………………清 ·孙元衡(107) +饮潭西精舍……………………………………清 · 刘大观(108) +辽东方物十咏 其七 回糟酒 ………………清 · 刘大观(110) +余寄钱容斋以新构之诗,容斋报余以夙储之酒,事何韵也! +更赋截句八首,驰往夷门 其二 ……………清 · 刘大观(111) +壶园春晚杂兴五章呈徐编修师宝善 其二 ……清 ·姚燮(112) +杜康宅……………………………………………清 · 缪新(114) +过钱玉友河亭话旧二首 时已收身奉佛但未废饮耳( 其二 ) +………………………………………………清初 ·查愼行(115) +薄薄酒…………………………………………清 ·赵执信(116) +沁园春 题罗两峰《鬼趣图》 其四 第四幅, 一鬼台背折腰, +捧斗酒,一鬼卓杖立…………………………清 · 汪端光(118) +经典十首劝酒诗 +《短歌行》……………………………………东汉 · 曹操(120) +《送元二使安西》………………………………唐 ·王维(120) +《将进酒》………………………………………唐 ·李白(121) +《问刘十九》…………………………………唐 · 白居易(122) +《月下独酌四首 ·其一》………………………唐 ·李白(122) +《简卢陟》……………………………………唐 · 韦应物(123) +《凉州词》………………………………………唐 ·王翰(123) +《水调歌头 · 明月几时有》……………………宋 · 苏轼(124) +《寄黄几复》…………………………………宋 ·黄庭坚(124) +《望江南 ·超然台作》…………………………宋 · 苏轼(125)\n===== PAGE 6 =====\n山不厌高,海不厌深。 +周公吐哺,天下归心。 +——选自《汉魏六朝百三家集》卷二十三 +【注释】 +〔1〕青青子衿:典出《诗经·郑风·子衿》。子, 对对方的尊称。 +衿,古式的衣领,系指读书人的服装。这里用来比喻有才学的人。 +〔2〕何时可掇:掇,拾取,摘取。意指得到。 +〔3〕越陌度阡,枉用相存:陌,东西向的小路。阡,南北向 +的小路。指穿过纵横交错的小路。枉,屈驾来访。 +【译文】 +一边喝酒唱歌,一边感喟叹息:人生的岁月有多少呢,好比晨 +露转瞬即逝啊!宴会上歌声慷慨激昂,心中的忧愁却难以祛除。靠 +什么来排解忧闷呢?唯有杜康美酒! +有学识的才子们,你们令我朝夕思慕。因为你们的缘故,让我 +念叨至今。看吧,阳光下的鹿群呦呦欢鸣,聚在丰茂的草地上啃食 +绿草。 一旦四方贤才光临舍下,我将奏瑟吹笙,把你们热情相迎。 +当空悬挂的皓月哟,什么时候可以摘取呢?心中深深的忧思, +喷涌而出不能停止啊!远方宾客穿越纵横交错的田间小路,屈驾前 +| 酒祖承源 杜康留香 | +短歌行 +东汉·曹操 +【原文】 +对酒当歌,人生几何? +譬如朝露,去日苦多。 +慨当以慷,忧思难忘。 +何以解忧?唯有杜康。 +青青子衿〔1〕 ,悠悠我心。 +但为君故,沉吟至今。 +呦呦鹿鸣,食野之苹。 +我有嘉宾,鼓瑟吹笙。 +明明如月,何时可掇〔2〕 +忧从中来,不可断绝。 +越陌度阡,枉用相存〔3〕 。 +契阔谈讌,心念旧恩。 +月明星稀,乌鹊南飞。 +绕树三匝,何枝可依。 +2 | 酒祖杜康·诗酒文化品牌 | 3\n===== PAGE 7 =====\n| 酒祖承源 杜康留香 | +来探望我,彼此久别重逢谈心宴饮,重温那往日的恩情是我的真诚 +期盼! +月光明亮 , 星光稀疏,一群寻巢的喜鹊绕树飞了三周却没敛翅。 +为什么?它们在寻找最满意栖身之所啊! +高山不辞土石才见巍峨,大海不弃涓流才见壮阔。我愿如周公 +一般礼贤下士,愿天下的英杰真心归顺于我。 +七启(节选) +东汉·曹植 +【原文】 +乃有春清缥酒〔1〕 ,康狄所营。 +应化则变,感气而成。 +弹徵〔2〕 则苦发,叩宫则甘生。 +于是盛以翠樽〔3〕 ,酌以雕觞〔4〕。 +浮蚁鼎沸〔5〕 ,酷烈〔6〕 馨香。 +可以和神,可以娱肠。 +此肴馔之妙也,子能从我而食之乎? +—— 选自《汉魏六朝百三家集》卷九 +【注释】 +〔1〕春清缥酒 : 最早见于《诗经 ·豳风 ·七月》: “为此春酒, +以介眉寿”《周礼 ·酒正》载: “辨三酒之物,一曰事酒,二曰昔 +酒,三曰清酒。缥酒,指酒色绿而微白。 +〔2〕弹徵:弹,即弹奏乐器。“徵”与“宫”皆为五音之一。 +这里,作者借音域之高低, 形象地区别酒味的苦与甜。典出《月令》: +“季夏之月,其音徵,其味苦。中央土,其音宫,其味甘”。 +〔3〕翠樽:以翠玉雕刻或装饰的盛酒器。 +〔4〕雕觞:有雕饰图案的饮酒器。 +〔5〕浮蚁鼎沸:酒杯里浮于酒水表面的泡沫如鼎里沸腾之水 +状。 +〔6〕酷烈:形容醇香浓郁。 +【译文】 +呈上春天酿造的绿而泛白的清醇之酒,这是采用杜康与仪狄之 +法酿制的。用麦黍作糊,应时变之,感气化之。弹徵则酒味苦,奏 +宫则酒味甜。用玉樽盛酒,用瑶杯饮酒,酒泛起一层泡沫,仿佛开 +水沸腾,散发出浓烈的馨香。饮之,精神和乐,肠胃舒适。尘世上 +最好的美味佳肴,您能跟我一起吃喝吗? +4 | 酒祖杜康·诗酒文化品牌 | 5\n===== PAGE 8 =====\n| 酒祖承源 杜康留香 | +酒诰 +晋· 江统 +【原文】 +酒之所兴,肇自上皇。 +五帝〔1〕 + 不过,上邈三王〔2〕 + 。 +或云仪狄,一曰杜康。 +历代悠远,经载弥长。 +虽曰贤圣,亦咸斯尝。 +有饭不尽,委馀空桑。 +郁积生味,久蓄气芳。 +本出于此,不由奇方。 +——选自《西晋文纪》卷十九 +【注释】 +〔1〕五帝:指黄帝、颛顼、帝喾、尧、舜。 +〔2〕三王:指禹王、汤王、周武王(周文王)。 +【译文】 +中国的酒肇始于远古的五帝之后,三王时期。酒的创始人一说 +是杜康,或说是仪狄。 +中国的酒,历代久远,千载飘香,古代的王者、贤者、圣人都 +喜欢饮酒。 +酒的发现很简单,是杜康把没吃完的剩饭倾倒入空桑树洞之中, +在自然的状态下,郁积生味,蓄发出了香液。杜康受此启发,开始 +了人工造酒。秫酒由此而生,并没有什么秘方,奇方。 +酃酒〔1〕 赋(节选) +晋·张载 +【原文】 +惟圣贤之兴作,贵垂功而不泯。 +嘉康狄之先识,亦应天而顺人。 +拟酒旗于玄象,造甘醴以颐神。 +虽贤愚之同好,似大化之齐均〔2〕 。 +物无往而不变,独居旧而弥新。 +6 | 酒祖杜康·诗酒文化品牌 | 7\n===== PAGE 9 =====\n| 酒祖承源 杜康留香 | +经盛衰而无废,历百代而作珍。 +——选自《汉魏六朝百三家集》卷五十三 +【注释】 +〔1〕酃酒:古代名酒。北魏郦道元《水经注 ·耒水》:“酃县 +有酃湖 ,湖中有洲,洲上民居,彼人资以酿酒甚醇美, 谓之酃酒” +〔2〕大化之齐均:大化指大自然。齐均指一视同仁。 +【译文】 +唯有圣贤的经典之作能够功垂千古而不泯灭。具有先见远识的 +杜康与仪狄发明了酒,天神喜欢,世人也喜欢。天上有酒旗之宿, +制成甘甜美酒愉悦神灵。 +人虽然才德不同, 但爱酒则同,就像大自然对人那样一视同仁。 +世间的很多东西,时间一久人们就把它抛弃了,但对酒的爱好却不 +一样,经历了千秋万代,无论盛世还是乱世,人们也没有抛弃酒。 +酒永远都是人间的珍贵之物,且随着时间的延伸人们越来越喜欢它。 +祭杜康新庙文 +唐·王绩 +【原文】 +岁月日,敢以清酌之奠,敬祭先生之灵曰: +两仪判辟,万象森罗。 都邑未建,鸟兽独多。 +茹毛饮血,巢居穴窠。 天地不交,人灵未和。 +智哉先生,爰作甘醴。 上配百牢〔1〕 ,下主五齐〔2〕 。 +以晏以祷,为樽先洗。 +万神以降,三献成礼。 法成必弊,文盛则华。 +奚仲〔3〕 斷轮,焉知覆车。 桀纣亡国,羲和丧家。 +周公作诰,乃防厥邪。 我闻古时,王道正直。 +贤人君子,澡身浴德。 降及中世,昏主作式。 +刑罚不中,谗淫罔极。 吁嗟世道,一至于此。 +达人大观,贵和其礼。 与制於物,宁在于已。 +乘流则逝〔4〕 ,遇坎则止。 眷此酒德,可以全身。 +杜明塞智,蒙垢受尘。 阮籍遂性,刘伶保真。 +以此避世,于今几人? 我瞻前说,功高受赏。 +8 | 酒祖杜康·诗酒文化品牌 | 9\n===== PAGE 10 =====\n| 酒祖承源 杜康留香 | +嗟嗟先生,其义可想。 肇基曲糵,光开祀飨。 +大礼斯备,群贤就养。 敢依河曲,建尔灵祠。 +前临极岸,却就长矶。 茅茨不翦,采椽不治〔5〕 。 +扫地而祭,神其享之。 +——选自《王无功集》卷下 +【注释】 +〔1〕牢:古代祭祀用的牲畜、牺牲。太牢为古代帝王、诸侯 +祭祀社稷时, 牛、羊、豕三牲全备之称;少牢为诸侯祭祀宗庙用羊、 +豕之称。 +〔2〕五齐(jī):五种细切的冷食肉菜。典出《周礼·天官 ·醢 +人》:“掌供五齐、七菹。” +〔3〕奚仲:鲁国人,传说中的造车鼻祖,因造车有功,被夏 +王禹封为“车服大夫”。 +〔4〕乘流则逝:顺流而行,遇险即止。比喻行止进退视境况 +而定。典出汉 ·贾谊《鵬鸟赋》 “乘流则逝, 得坎则止。纵躯委命, +不私与己。” +〔5〕茅茨不翦,采椽不治:引自《韩非子 ·五蠹》。 意思是 +说盖的房屋没有修饰,粗糙简陋。 +【译文】 +在很古很古的时候,天地阴阳刚刚辟开,世界万象还在原始阶 +段,大地上还没有城镇村庄,到处鸟飞兽逐,我们的祖先有的还在 +树上筑巢而居,生食果腹,在洞里避雨安身。就在这个时代,极有 +智慧的杜康先生您就发现了曲糵,发明了酒。今天,我把牛、羊、 +猪三牲和冷食细菜已经备齐,金樽内已盛上洁净的酒液 , 宴席齐备, +诚以三献之礼敬请万神降临。 +法因于弊而成于过。一种倾向发展到后来必然会走向自己的反 +面 , 优点发展到极点 , 也会产生流弊。鲁国的奚仲, 斫木造出了车轮, +曾被夏王禹封为“车服大夫”,誉称造车的鼻祖。但他却没有想到, +车虽然利于运输,但也常有“翻车”事故,而致车毁人伤。 +酒虽然是好东西,但历史上夏桀和商纣这两个暴君曾荒淫奢侈, +酗酒滥饮而亡国,羲和也因酒而丧家。为此,西周的开国元勋周公 +才发布《酒诰》,定下饮酒的律令,极尽全力阻止“酒邪”。 +我听说上古时期,王道正直,贤人君子非常注重修养身心,纯 +洁清廉。而到了中古时期,昏庸的皇帝破坏了道德准则和行为规矩,刑 +法形同摆设,失去效力,邪恶的行为无所不用其极。可叹这个世道 +啊,竟败落到了这个地步! +通达事理的人明德辨义,他们以修养和教化为本,以尚德为价 +值取向,以包容的君子之风协调各种关系,而不是堵塞言路,愚国 +愚民。他们以制度驾驭物欲,而不为物欲所驱使。在约束别人的同 +时,自然地也约束了自己。人的行止进退应当视境况而定,顺流而 +10 | 酒祖杜康 ·诗酒文化品牌 | 11\n===== PAGE 11 =====\n| 酒祖承源 杜康留香 | +行,遇险即止。纵躯委命,不私于己。饮酒有这样的德行,自然也 +就保全自身了。如果堵塞言路,不听劝告,那就必然会被人诟病, +遭人唾弃。西晋时,竹林七贤的阮籍,道德高尚,乐道安贫,不慕 +荣利富贵,谨慎避祸;刘伶追求自由逍遥, 无为而治,躲避朝廷征召, +拒绝入朝为官。如此随性保真的避世者,今天还有几人呢?我前边 +说了这么多,还是先生您功高当赏。先生啊, 其意思是不是这样呢? +杜康先生,您发明了麯,奠基了中华酒业,开启了祭祀天地宗 +亲的礼仪先河,培养出了众多德才兼备的贤才,功高无量啊!为了 +彰显您的功绩, 我在家乡河津县为您建了一座祠堂,祠堂前临河岸, +根基在一块巨型石上,因没有修饰装点而显得有点简陋。今天我把 +它打扫得干干净净,敢以清酌之奠祈祷先生飨供吧。 +题张氏隐居二首(其二) +唐·杜甫 +【原文】 +之子〔1〕 时相见,邀人晚兴留。 +霁潭嬗发发〔2〕 ,春草鹿呦呦。 +杜酒偏劳劝,张梨不外求。 +前村山路险,归醉每无愁。 +——选自《九家集注杜诗》 +【注释】 +〔1〕之子:指这个人。本文系指“竹溪六逸”之一的张叔明。 +〔2〕鳣发发: 鳣,近似鲤鱼的一种鱼。发发:鱼跳跃活泼的 +样子。引自《诗经 ·卫风 ·硕人》“鳣鲔发发”的典故。 +【译文】 +张先生啊,您经常和我相见, 眼下天色已晚, 却仍邀请我留下, +以尽晚间雅兴。清澈的潭水上,鳣鱼游跃,弄出“发发”之响。春 +天草野间,传来“呦呦”鹿鸣。酒是杜康做的,本是我杜家的,我 +们是一个杜字掰不开啊,却偏偏劳您来劝我;梨本是你张府上的, +自然在园中边摘边吃。自家的酒自家的菜,当然要喝个痛快。前村 +的山路虽然艰险,却已在醉中走熟了。让我们尽情地喝吧,来一个 +一醉方休。 +12 | 酒祖杜康 ·诗酒文化品牌 | 13\n===== PAGE 12 =====\n| 酒祖承源 杜康留香 | +酬梦得比萱草见赠 +唐·白居易 +【原文】 +杜康能散闷,萱草〔1〕 解忘忧。 +借问萱逢杜,何如白见刘〔2〕? +老衰胜少夭,闲乐笑忙愁。 +试问同年内,何人得白头? +——选自《白香山诗集》卷三十五 +【注释】 +〔1〕萱草:亦称“金针”、“黄花菜”“忘忧草”。出自三 +国文学家嵇康《养生论》:“合欢蠲忿,萱草忘忧,愚智所共知也”。 +〔2〕白见刘:白:作者自称。刘:指刘禹锡,唐代文学家, +字梦得,洛阳人。白居易晚年与刘禹锡唱和甚多,人称“白刘”。 +【译文】 +杜康酒可以排解烦闷,萱草能够使人忘掉忧愁;但是,萱草遇 +上杜康,还不如我白居易遇见你刘禹锡。 +时光易逝,即便是老年衰弱了也强过年少夭折。消闲享乐之人 +自然笑话那些繁忙忧愁的人们。没办法啊,我就是这样想的,看看 +与我们一起中进士的人,有几个活到了现在? +镜 换 杯 +唐·白居易 +【原文】 +欲将珠匣青铜镜,换取金尊白玉卮〔1〕 。 +镜里老来无避处,樽前愁至有消时。 +茶能散闷为功浅,萱纵忘忧得力迟。 +不似杜康神用速,十分一盏便开眉。 +——选自《白香山诗集》卷二十九 +【注释】 +〔1〕卮:古代盛酒的圆形器皿。 +14 | 酒祖杜康 ·诗酒文化品牌 | 15\n===== PAGE 13 =====\n| 酒祖承源 杜康留香 | +【译文】 +想把妆匣里面的青铜宝镜,拿来换一只镶金白玉杯。老了就怕 +看到镜子里的自己,对着茶杯还可以消愁,茶也能醉人 , 但饮茶比 +饮酒简单,后劲小,来得慢,可以像萱草那样令人忘却忧愁。不像 +杜康酒,因醇香而容易惹人贪杯,喝不到茶的十分之一人就醉了。 +酒中十咏并序 · 酒床 +唐·皮日休 +【原文】 +糟床〔1〕 带松节,酒腻肥如羚〔2〕 。 +滴滴连有声,空疑杜康语。 +开眉既压后,染指偷尝处。 +自此得公田,不过浑种黍。 +——选自《松陵集》卷四 +【注释】 +〔1〕糟床:用松木做成的用于过滤酒醅的压酒木架。 +〔2〕拧 :出生五个月的小羔羊。 +【译文】 +用松木做成的压酒架,过滤着出窖的酒醅,那股醇香比刚刚出 +锅的五月羔羊的味道还要诱人。酒液发出的滴滴嗒嗒声,仿佛杜康 +在耳边窃窃私语。 +随着酒液泡沫的变化压滤结束,迫不及待地染指品尝。心想, +今后我要把所得的公田全部种植为高粱,用来酿酒享用。 +酒 赋 +宋·吴淑 +【原文】 +君子〔1〕 + 有酒,旨〔2〕 + 且有。 +若夫仪狄初制,少康〔3〕 始造。 +九投〔4〕 + 百品之精,一宿〔5〕 + 三重〔6〕 + 之美。 +——选自《事词赋》卷十七 +16 | 酒祖杜康 ·诗酒文化品牌 | 17\n===== PAGE 14 =====\n| 酒祖承源 杜康留香 | +【注释】 +〔1〕君子:在先秦典籍中多指“君王之子”,着重强调地位 +的崇高。而后“君子”一词被赋予了道德的含义。 +〔2〕旨:美味。 +〔3〕少康:即杜康。《说文解字 ·巾部》:“古者,少康初作箕、 +帚、秫酒。少康,杜康也”。 +〔4〕九投:亦作“九酸”,指多次酿制, 系秫酒酿造工艺之一。 +典出宋·梅尧臣《依韵四和正仲》:“四和还如九酸醅,更醇更美未 +嫌来” +〔5〕宿:古文中“宿”通“肃”。肃静、肃然的意思。 +〔6〕三重: 古代祭祀礼仪。典出《礼记·祭统》:“夫祭有 +三重焉”。 +【译文】 +“君子有酒,旨且多”典出《诗经·小雅·鱼丽》。在先秦古籍 +中,酒被誉为“君子之王”,可见地位之崇高。它是由杜康创造、仪 +狄初制而成,是粱秫的精华,需要经过多次的酿制才能获得。是古 +代祭祀神灵三重仪式中的必备之品。 +和陶《止酒》并引 +宋·苏轼 +【原文】 +丁丑岁,予谪〔1〕 海南,子由〔2〕 亦贬雷州。 +五月十一日,相遇于藤〔3〕 ,同行至雷。 +六月十一日,相别,渡海。 +余时病痔呻吟,子由亦终夕不寐。 +因诵渊明诗,劝余止酒,乃和原韵, +因以赠别,庶几〔4〕 真止矣。 +时来与物逝,路穷非我止。 +与子〔5〕 各意行,同落百蛮里。 +萧然两别驾〔6〕 ,各携一稚子。 +子室有孟光〔7〕 ,我室唯法喜〔8〕 。 +相逢山谷间,一月同卧起。 +茫茫海南北,粗亦足生理。 +劝我师渊明,力薄且为己。 +微疴坐杯酌,止酒则瘳矣。 +望道虽未济,隐约见津诶。 +18 | 酒祖杜康 ·诗酒文化品牌 | 19\n===== PAGE 15 =====\n| 酒祖承源 杜康留香 | +从今东坡室,不立杜康祀。 +——选自《施注苏诗》卷四十二 +【注释】 +〔1〕予谪:予指苏轼本人。谪:封建时代把高级官吏降职并 +调到边远地区任官。 +〔2〕子由:苏轼之弟苏辙的字 +〔3〕藤:古滕州,今广西藤县。 +〔4〕庶几:也许,希望。 +〔5〕子:你,指代子由。 +〔6〕别驾:州刺史的副职,宋代州通判亦称别驾。 +〔7〕孟光:东汉隐士梁鸿之妻,古代贤妻的典型,典出《后 +汉书 ·逸民传 ·梁鸿》。 +〔8〕法喜:佛教语,语出《维摩经 ·佛道品》: “法喜以为妻, +慈悲以为女”。 +【译文】 +绍圣四年,我被贬往海南,兄弟苏辙也被贬至雷州。五月十一 +日,兄弟相会于滕州。六月十一日在雷州相别准备渡海。其时,我 +的痔疮病犯了,疼得连声呻吟,兄弟愁得彻夜不眠,他吟诵陶渊明 +先生的诗劝我止酒。我就和陶的原韵,写首《止酒》作为赠别。 +时运来的时候,就跟着好运一直不停地往前走,没有路的时候 +就停下来;无论前进还是停留,都不是我主观上能够控制的,只是 +顺其自然,随运而已。比如你我,现在就必须面对现实,去到南方 +蛮族聚居的地方。那是个空荡荡的蛮荒之地啊! +咱们两人现在都被贬为“别驾”,各带着自己的未成年儿子远 +赴贬所。您的家里留着妻子,她就像汉代梁鸿的妻子那样,对丈夫 +举案齐眉,是个贤妻的典范。而我的夫人、侍妾俱已过世,只能闻 +佛法而生欢喜之心,以“法喜为妻”,与佛为伴了。 +咱们兄弟在山间相会,一个月来朝夕相伴,现在要分别了 , 我 +去儋州,你去雷州,两州分别在琼州海峡的南北,以后只能隔海相 +望,各自尽力而为地打理自己的生活吧。 +您劝我学习陶渊明, “穷则独善其身”,我的痔疮是个小病, +可能是喝酒多引起的,不喝酒即可病愈。 前边的路波涛滚滚,一 +望无际。何处是归途呢?从今以后,苏东坡再也喝不到杜康酒了, +室内再也见不到“酒神”了。 +20 | 酒祖杜康 ·诗酒文化品牌 | 21\n===== PAGE 16 =====\n| 酒祖承源 杜康留香 | +饮酒四首(其四) +宋·苏轼 +【原文】 +雷觞〔1〕 淡于水,经年不濡唇。 +爰有扰龙裔〔2〕 ,为造英灵春。 +英灵韵甚高,蒲萄难与邻。 +他年血食〔3〕 汝,当配杜康神。 +——选自《苏诗续补遗》卷上 +【注释】 +〔1〕雷觞:刻有雷纹图饰的酒器。借指酒。 +〔2〕扰龙裔:雷州半岛的原住民。 +〔3〕血食:受享祭品。古代杀牲取血以祭,故称。 +【译文】 +这里的酒淡的就像水一样,我经年也不会去尝一口。海南有个 +古老的“扰龙裔”土著族,他们自己做一款名叫“英灵春”的酒, +口碑很好,都说葡萄酒也比不上它。我为啥不愿喝它,是因为忘不 +掉杜康啊! +兄弟啊,咱们还能喝到“杜康”的。“百年”之后,孩子们自 +然要来上坟祭奠,当他们摆上供品时,不会忘记他的老祖宗喜欢杜 +康,一定会在坟头洒上杜康老酒,这不是又喝到了吗? +次韵渊明饮酒诗(节选) +宋·张耒 +【原文】 +买金铸杜康,百拜誓归依〔1〕 。 +晋陶与康伯〔2〕 ,九原〔3〕 吾与归。 +涉世苦不谙,多病身早衰。 +惟有尊中酒,不与我心违〔4〕 。 +——选自《柯山集》卷七 +【注释】 +〔1〕归依:投靠依附。 +22 | 酒祖杜康 ·诗酒文化品牌 | 23\n===== PAGE 17 =====\n| 酒祖承源 杜康留香 | +〔2〕晋陶与康伯:分别指陶渊明和后汉隐士韩康。 +〔3〕九原:指墓地。因春秋时晋国卿大夫的墓地在九原,后 +人多用“九原”替代死亡。 +〔4〕心违:心愿没有达到。 +【译文】 +用手中的钱买来黄金,铸成一尊杜康像,从此远离官场,侍奉 +酒神。像晋朝的陶渊明,汉代的隐士韩康那样,过闲云野鹤般自由 +自在的生活。最后与志同道合的人一同归西。 +自己经历世事太浅,没有涉世经验,多年的奔波劳碌,落得个 +疾病满身, 未老先衰。最心仪的也只有尊中美酒,与我长相厮守了。 +饮 酒 + 宋·晁说之 +【原文】 +与君厌苦洛阳尘,望断今朝那得亲。 +为问红旗白马〔1〕 + 客,何如左蔗右螯〔2〕人。 +醉来无意诛谗鬼,醒后倾身事麴神。 +辜负景锺〔3〕 勋业志,杜康庙里作忠臣。 +——选自《景迂生集》卷九 +【注释】 +〔1〕红旗白马:指文武官员。 +〔2〕左蔗右螯:指平民百姓的自由生活。典出苏轼《和穆父 +新凉》:“紫螯应已肥,白酒谁能劝”。 +〔3〕景鐘:褒功。典出《国语 · 晋语七》: “昔克潞之役, +秦来图败晋功,魏颗以身退秦师于辅氏, 亲止杜回,其勋铭於景鐘”。 +后以“景鐘”为褒功的典实。 +【译文】 +我和你都厌倦了官场的尔虞我诈,争名夺利,看不到任何和善 +和友谊的希望,左盼右盼,也盼不到亲近皇帝、为国效力的机会。 +与其在朝为官为将, 不如做一介平民百姓, 享受平和与美食。醉了, +挡不住酒香的诱惑,喝了还想再喝;醒了,无所事事,喝酒是唯一 +的选择。我虽然在官场失意,但在喝酒这一点上可谓功勋卓著,我 +应当是酒神杜康最虔诚的信徒。 +24 | 酒祖杜康 ·诗酒文化品牌 | 25\n===== PAGE 18 =====\n| 酒祖承源 杜康留香 | +和资道读王绩传 +宋· 晁说之 +【原文】 +飞廉〔1〕 有骏马,卒岁得壮游。 +先生〔2〕 用自况,散发〔3〕 汾水头。 +时时到醉乡,万汇〔4〕 如蜗牛。 +板筑〔5〕 杜康庙,配飨酒家流。 +此意谁能解,空令儿女羞。 +为问关夫子,若何为献酬〔6〕 。 +——选自《景迂生集》卷四 +【注释】 +〔1〕飞廉:古代传说中的神兽。出自《淮南子》。 +〔2〕先生:指王绩,唐代著名诗人。有《祭杜康新庙文》传世。 +〔3〕散发:解冠隐居。 +〔4〕万汇:万物。 +〔5〕板筑:代指隐逸,典出《孟子 ·告子下》。 +〔6〕献酬:敬酒为献,回敬为酬。 +【译文】 +我就像神话传说中那个浑身长毛、双翼如鹏的“飞廉神兽”。 +一年四季漫无目的地骑牛乘马四处转悠。 +我崇尚王绩先生的自知之明,弃官为民后隐居在汾水之陬,不 +问世事,以酒为友。我呢,把自己隐逸在杜康庙里,配享着酒客们 +敬奉酒祖的供品。喝醉之后昏昏沉沉,迷迷糊糊,忘记了尘世间的 +一切喧嚣。 +谁能知道我内心的苦楚,了解真正的我呢?我的德行让我的儿 +女都感到羞耻!真想问问关夫子,喝酒就是喝酒呗,为什么要用礼 +仪法度去限制呢? +逍遥游 +宋· 邵雍 +【原文】 +茅屋任意自逍遥,山径崎岖宾客少。 +看的是无名花草,听的是牧野禽声叫。 +喜的是青山隐隐,乐的是绿水滔滔。 +26 | 酒祖杜康 ·诗酒文化品牌 | 27\n===== PAGE 19 =====\n| 酒祖承源 杜康留香 | +春花开得早,夏蝉枝头闹。 +黄叶飘飘秋来了,白雪纷纷冬又到。 +叹人生容易老,总不如盖一所安乐窝〔1〕 。 +上有琴棋书画,下有渔读耕樵。 +闲来了,河边钓;闷来了,把琴敲。 +吃一杯杜康酒,醉乐陶陶。 +——选自《山村咏怀》 +【注释】 +〔1〕安乐窝:安乐窝位于洛阳市郊的洛河南岸, 为邵雍故居。 +《易经》上说: “君子所居而安者,易之序也;所乐而玩者,爻之 +辞也。”意思是说,君子处世,所以能够心安理得,不烦不躁,是 +因为他能效法《易经》的精神、条理和次序;而君子所能得到快乐, +并且玩味欣赏的,就是《易经》中的爻辞了。邵雍根据这种“安” +与“乐”的含义把自己读书居住的地方称作“安乐窝”。 +【译文】 +住在茅草盖的屋子里, 想怎么逍遥就怎么逍遥。门前山路崎岖, +来访的客人自然很少。每天看的是遍野的无名花草,听的是山间野 +禽的鸣叫 , 青山绿水让人高兴快乐。 +看着春夏秋冬四季景色的幻变,突然感到人生苦短 , 什么功名 +利禄都是身外之物, 总不如自己盖一座“安乐窝”, 闲了,河边钓鱼; +闷了,抚琴唱歌,天天和杜康酒相伴,醉中取乐!哪里还有比这更 +好的日子呢 ! +送友人丧二绝 +宋· 陈东 +【原文】 +其一 +欲认青帘〔1〕 + 索酒尝,俄惊丹旎〔2〕 + 送君丧。 +吕庄编户伤心切,愁对清风想杜康。 +其二 +初成大厦势巍巍,有意于门驷马车。 +未乾壁土君先已,贺燕翻随吊鹤〔3〕 飞。 +——选自《少阳集》卷五 +28 | 酒祖杜康 ·诗酒文化品牌 | 29\n===== PAGE 20 =====\n| 酒祖承源 杜康留香 | +【注释】 +〔1〕青帘:酒店门口挂的幌子,多用青布织成。 +〔2〕丹旎:旧时出丧所用的引魂幡。 +〔3〕吊鹤:颂扬死者之祭品。典出《世说新语·贤媛》:“及侃 +丁母忧,在墓下,忽有二客来吊,不哭而退,仪服鲜异,知非常人。 +遣随视之,但见双鹤冲天而去”。 +【译文】 +我本来想找你喝酒,谁知却突然得到你去世的消息。一想到你,我 +就感到伤心欲绝。现在您人走了,我只能对着亡灵,回忆咱们举杯 +杜康,指点江山的豪壮过往。贵府的高大宅院刚刚落成,各路达官 +贵人本来都想来庆贺。可谁能料到,墙壁上的泥土还没有干,你就 +去世了。庆贺还没来得及,又变成向你吊丧了。 +酒诗(节选) +宋· 胡寅 +【原文】 +头上巾频漉,腰间锸〔1〕 自随。 +谅难操北斗,且复坐东篱。 +西海桃垂实,南山豆落萁。 +无违商士诰〔2〕 ,宜葺杜康祠。 +——选自《斐然集》卷三 +【注释】 +〔1〕锸:铁锹。 +〔2〕商士诰:指《尚书 ·周书 ·酒诰》中告诫殷民们不要过 +度饮酒的文告。 +【译文】 +拿遮冠的头巾频繁用来过滤酒,腰间一直携带着铁锹,要效法 +刘伶,什么时候死了,让人挖个坑随地把自己给埋了。 +没有力量把北斗星那个大酒勺从天上搬下来舀酒,那就权且像 +陶渊明一样在院子的篱笆边喝酒赏菊吧。 +自己一直向往“栽栽桃,种种豆”那样的隐居生活。不想违背 +《酒诰》中的劝诫, 把杜康祠好好地修缮一下,陪着酒神,快乐自己。 +30 | 酒祖杜康 ·诗酒文化品牌 | 31\n===== PAGE 21 =====\n醉 赋 +宋· 陆游 +【原文】 +我疾多自愈,初非遇奇方。 +我生固多难,欲虑忽已忘。 +颓然乱书中,不知岁月忙。 +有时或得意,炙冷不暇尝。 +乃今又大悟,万事付一觞。 +书中友王绩,堂上祠杜康。 +——选自《剑南诗稿》卷八十一 +【译文】 +我得的病大多都是自己痊愈,可不是遇到了什么奇妙的药方。 +一生本来就多灾多难,有时也考虑着用什么办法去消灾避难,可眨 +眼之间就给忘记了。沉醉书中,忘记了日月飞驰的岁月。遇上顺心 +的事情,高兴起来连热冷都不知道应对了。 +如今大彻大悟,对一切都看开了,即使有万般忧愁,一杯酒下 +| 酒祖承源 杜康留香 | +珊瑚钩诗话(选) +宋· 张表臣 +【原文】 +中古之时,未知曲糵〔1〕 + 。 +杜康肇造,爰做酒醴。 +可为酒后〔2〕 。 +——选自《珊瑚钩诗话》卷三 +【注释】 +〔1〕曲糵:“蘖”是用发芽的谷物为原料,用糖化法酿成的 +甜味饮品,亦名“醴”。“麯”是以谷物为原料制成的可培养微生 +物的载体。杜康用“曲”将谷物的糖化和酒化一气呵成,肇始了秫 +酒酿造之法,遂成为酒祖。 +〔2〕酒后:酒祖。 +32 | 酒祖杜康 ·诗酒文化品牌 | 33\n===== PAGE 22 =====\n| 酒祖承源 杜康留香 | +肚,什么烦恼都化为乌有。一生最惬意的事当是效法“诗言心声” +的王绩,厅堂上供奉着杜康,与酒神相伴乐其终生。 +一春无日不饮遂作肺嗽效乐天体 +宋· 李流谦 +【原文】 +生与酒俱生,长与酒俱长。 +行时酒在樽,坐时酒在盎。 +一日不举酒,一日眉不放。 +春来身无事,结客鏖胜赏〔1〕 。 +南山步新堤,西湖撑彩舫。 +或飞名园盖,或祖都门帐〔2〕 。 +大酌须淋淳,小酌犹酣畅。 +家山忽入梦,江头问两桨。 +友社惜我去,共和骊驹〔3〕 唱。 +剧饮连昼夜,大似灌鼠壤。 +不往愠眉须,好意难弃忘。 +平生无肺病,因兹作微恙。 +终夕劳喘呀,如吹竹筒样。 +积痰动盈缶,嚥吐不停吭。 +童奴更谒谏〔4〕 ,浸恐伤府藏。 +万里寄一身,节宣〔5〕 岂宜爽。 +蒭荛〔6〕 不可遗,予心默云当。 +饮食著圣经,观颐〔7〕 识爻象。 +惯习未易夺,刚制乃所尚。 +初如键弩牙,又类遏溪涨。 +稍稍撤觞斝〔8〕 ,久之绝怅望。 +肠枯与吻燥,但当吸瀣沆〔9〕 。 +宵枕〔10〕 遂小康,其效疾影响。 +遽言终止之,未敢保其往。 +酒颂我文章,酒徒我钩党。 +有时倚危楼,搔首独惆怅。 +大药不可求,此物足凭仗。 +陶谢〔11〕 + 匪沈酗,遗意觇佛彷。 +下士闻道笑,识者眉睫上。 +更欲买黄金,归铸杜康像。 +——选自《澹斋集》卷二 +34 | 酒祖杜康 ·诗酒文化品牌 | 35\n===== PAGE 23 =====\n| 酒祖承源 杜康留香 | +【注释】 +〔1〕鏖胜赏:尽情快意地欣赏。 +〔2〕都门帐:古代送人远行, 在郊外路旁为饯别而设的帷帐。 +亦指送行的酒筵。 +〔3〕骊驹:散失的《诗经》篇名。指古代告别时所赋的歌词。 +〔4〕谒谏:规劝。 +〔5〕节宣:指调适之,使气不散漫,不壅闭。 +〔6〕翦荛:本意为割草砍柴。后来引申为地位低下或见识浅 +陋的人的意见。 +〔7〕观颐:观察研究养生之道。典出《易 · 颐》: “观颐, +自求口实。” 孔颖达 疏:“观颐者,颐,养也,观此圣人所养物也。 +〔8〕觞斝:酒器。 +〔9〕瀣沆:夜间的水气。此处指酒。 +〔10〕宵枕:夜里睡觉。 +〔11〕陶谢:指陶渊明和谢灵运。 +【译文】 +命犯酒星,与酒同生共长。行走坐卧,酒不离身。哪一天不举 +杯饮酒,哪一天的眉头就不会舒展。春天到来,一身无事可做的时 +候,就招邀亲朋好友尽情地寻胜赏幽。有时漫步新堤,登南屏山; +有时在西湖里划船,有时在著名的园囿里与宾客们驱车追随;有时 +在都门外,饮酒送行。要么大喝一场,喝得天旋地转;要么小喝一 +场,喝得心酣气畅。晚上做梦梦到了家乡,在江边买船准备回家。 +诗社中的朋友们为我离去而遗憾,纷纷赋诗送别。 +没日没夜地痛快畅饮, 喝酒就像往老鼠洞里灌水。不去赴酒宴, +朋友们怪罪,他们的盛情我难以忘记。往常我没有肺病,这次因为 +喝多了,患上了肺咳小病,整夜张口喘息,就像吹竹筒一样,喉咙 +里的痰动不动就吐一瓦罐。不停地咳嗽,不停地喘息。 +服侍我的童子来规劝我少喝酒,恐怕这样喝会逐渐伤了五脏六 +腑。离家万里,一身如寄,少喝酒多调理,身体就能舒适吗?我奴 +仆的建议值得考虑,内心深处我知道他说得对。“饮食醉饱”这话 +可是见于圣人所著的《尚书》,观察研究养生之道可以认识吉凶祸 +福,按照“饮食醉饱”之意,喝醉吃饱应该是高尚的事啊? +饮酒已经成了习惯, 不容易改变,起初戒酒的时候就像拉强弓, +又像阻拦暴涨的溪流。逐渐撤走酒具, 时间一长,就不再想喝酒了。 +但离开了酒,就肠胃枯淡,唇舌干燥,好想大喝一场。 +不喝酒时夜里睡觉稍稍安稳一些,戒酒对我肺咳的影响也立竿 +见影。 +匆匆忙忙说要戒酒,不敢保证以后不再喝。我写的文章是赞颂 +酒的,我的死党是喝酒的。我能离开酒吗?有时站在高楼上,靠着 +栏杆,挠着头独自惆怅:成仙的丹药找不到,这酒完全可以代替仙 +丹。陶渊明、谢灵运哪一个不沉溺于酒?这从他们的诗作中大致可 +以体察到。不识酒趣的人听到别人谈论喝酒的趣味就会嘲笑,识酒 +36 | 酒祖杜康 ·诗酒文化品牌 | 37\n===== PAGE 24 =====\n| 酒祖承源 杜康留香 | +趣的人听到了喝酒的趣味两眼放光。 +我缺少戒酒的自信,心里还想着买一些黄金,回到家铸造一尊 +杜康像,酒祖佑护,这酒我还是要继续喝的。 +沁园春 ·杯汝知乎 +宋· 辛弃疾 +【原文】 +城中诸公载酒入山,余不得以止酒为解, +遂破戒一醉,再用韵。 +杯汝知乎:酒泉罢侯,鸱夷〔1〕 + 乞骸〔2〕 + 。 +更高阳〔3〕 入谒,都称齑臼〔4〕; +杜康初筮〔5〕 + ,正得云雷。 +细数从前,不堪余恨,岁月都将曲糵埋。 +君诗好,似提壶〔6〕 却劝,沽酒何哉? +君言病岂无媒,似壁上雕弓蛇暗猜。 +记醉眠陶令〔7〕 ,终全至乐; +独醒屈子〔8〕 + ,未免沈菑。 +欲听公言,惭非勇者,司马家儿解覆杯。 +还堪笑,借今宵一醉,为故人来。 +——选自《御选历代诗余》卷八十九 +【注释】 +〔1〕鸱夷:古代盛酒的腹大如壶的兽皮袋。 +〔2〕乞骸:古代官吏请求退职。 +〔3〕高阳:指酒徒。典出《史记 · 郦生传》: “儒生郦食其 +嗜好饮酒,常混迹于酒肆中,自称为高阳酒徒。” +〔4〕齑臼:“齑”指的是姜、蒜、韭菜等带有辛辣味的调味品; +“臼”指的是用石头或木头制成、中部凹下的捣舂器具; “齑臼” +合起来就是用来接受“辛辣”味的器皿。 +〔5〕初筮:第一次用卦象占卜吉凶。 +〔6〕提壶:鸟形斟酒壶。典出梅圣俞《四禽言》: “提壶芦, +沽美酒。” +〔7〕陶令:指陶渊明。 +〔8〕屈子:指屈原。 +【译文】 +酒友们带着酒来找我,我不能以戒酒为借口把它们拒之门外。 +38 | 酒祖杜康 ·诗酒文化品牌 | 39\n===== PAGE 25 =====\n与张提点共饮席间作 +宋·释道济 +【原文】 +每日终朝醉似泥,未尝一日不昏迷。 +细君〔1〕 发怒将言骂,道是人间吃酒儿。 +莫要管,你休痴,人生能有几多时。 +杜康曾唱莲花落〔2〕 ,刘伶好饮舞啰哩, +陶渊明赏菊醉东篱。 +今日皆归去,留得好名儿。 +——选自《济滇道济禅师语录》 +【注释】 +〔1〕细君:妻妇的代称,语出《汉书 ·东方朔传》:“归遗细君, +又何仁也”颜师古注:“细君,朔妻之名。 +〔2〕莲花落:亦称“ 莲华乐 ”。民间曲艺的一种。旧时本为 +乞丐所唱。后出现专业演员,演唱者一二人,仅用竹板按拍击节。 +| 酒祖承源 杜康留香 | +今天得破了我戒酒的戒令,让自己一醉了事。 +酒杯,你知道吗?我已经请辞了酒泉郡的郡侯,用来装酒的皮 +囊也让它“退休”了。那些爱喝酒的朋友来找我,都吃了闭门羹。 +我用“杜康”两字占了一 卜 , 卦象是《易 · 屯卦》。“云雷屯”是 +个不吉利的险卦,意思是不喝酒是不行的。这是让我继续喝酒的示 +兆。 +细数过去,恨自己把时间都浪费在酒里虚度了。 +你的诗写得真好,就像那提壶鸟在劝我:买酒!买酒!朋友说 +我生病一定有原因,不该杯弓蛇影地瞎猜是喝酒造成的。陶渊明整 +天醉醺醺的,终生自得其乐,而那个众人皆醉我独醒的屈原,却落 +得个投水自尽的下场。 +酒杯啊,想听您的话戒酒, 但很惭愧, 我不是一个有勇气的人, +不能像司马睿那样果断戒酒。 +不怕你们笑话,今天为你们这些老朋友远道而来相聚的情谊, +即使不胜酒力,也要一醉方休。 +40 | 酒祖杜康 ·诗酒文化品牌 | 41\n===== PAGE 26 =====\n| 酒祖承源 杜康留香 | +【译文】 +每天从早到晚都是烂醉如泥 , 糊糊涂涂,没有一天是清醒的, +连女人看见我都发怒谩骂,说我是天底下“吃酒货”。 +别管我!你们都不要再犯傻了。人生能有多少时日啊!看看 +吧,那些“莲花落”里唱的是杜康;舞台上演的是刘伶;大文豪陶 +渊明给官都不干,却跑到乡下天天赏菊饮酒。今日有酒今日醉,就 +是死了,也落个潇洒的名声。 +颂古二十八首 +宋·释道川 +【原文】 +水中捉月〔1〕 + ,镜里寻头。 +刻舟求剑,骑牛觅牛〔2〕 + 。 +空花阳焰〔3〕 + ,梦幻浮沤〔4〕 + 。 +一笔勾断,要休便休。 +巴歌〔5〕 杜酒〔6〕 村田乐〔7〕 , +不风流处也风流〔5〕 。 +——选自《金刚经会释》卷上 +【注释】 +〔1〕水中捉月 : 到水中去捞月亮 , 指徒劳无功。典出宋 ·释道 +原《景德传灯录 ·永嘉真觉禅师》: “镜里看形见不难,水中捉月 +争拈得”。 +〔2〕骑牛觅牛:同“骑驴找驴”。典出宋 · 释道原《景德传 +灯录 ·福州大安禅师》: “师即造于百丈,礼而问曰: ‘学人欲求 +识佛,何者即是?’百丈曰:‘大似骑牛觅牛’”。 +〔3〕空花阳焰:日光中浮动的烟尘。比喻不切实际的想法。 +〔4〕浮沤 : 水中的浮泡。 +〔5〕巴歌:亦称巴唱、巴讴,巴人之曲。 +〔6〕杜酒:杜康酒。 +〔7〕村田乐:宋元明清时期,表现农村生活的民间舞蹈。 +【译文】 +水中捉月还不是镜中寻头,空虚幻想,不能实现;刻舟求剑, +拘泥成法,就像骑牛寻牛固执不知变通。虚幻的花就像那日光中浮 +动的烟尘一样不切实际。纷乱的世俗琐事一笔勾断吧,永远不再想 +它,每天唱唱歌,喝喝酒,跳跳舞,不想风流也自然风流。 +42 | 酒祖杜康 ·诗酒文化品牌 | 43\n===== PAGE 27 =====\n| 酒祖承源 杜康留香 | +夜步天街书所见 +宋· 高翥 +【原文】 +赛〔1〕 罢祠山〔2〕 赛二郎〔3〕 ,酒行明日欲开张。 +愚民可是多忘本,香火何曾到杜康。 +——选自《咸淳临安县志》卷九十七 +【注释】 +〔1〕赛:行祭礼以酬神。 +〔2〕祠山:祠山大帝,姓张名渤,字伯奇。父亲张秉,效法 +大禹治水有功。张渤继承父业,开河筑坝,造福于民。死后安葬在 +横山。乡亲们怀念他,在他墓旁建庙祭祀,并将横山改名祠山,奉 +他为“祠山大帝”。 +〔3〕二郎:指秦国蜀郡郡守李冰父子。因率众兴建了都江堰, +人们建了二王庙以纪念,亦称二郎庙。 +【译文】 +傍晚,漫步于天街时,见到灯火辉煌,香火弥漫,人们正忙着 +行祭礼酬神。祭祀治水有功的祠山大帝和兴建了都江堰的李冰父子。 +庶民百姓饮水思源,不忘先人打下的江山,可祭拜酬神,首祭礼捧 +的就是酒。又有谁记得酒祖杜康呢? +感古十首(其十) +宋· 胡仲弓 +【原文】 +杜康精酒法,陆羽修茶经。 +标致虽不同,均是劳吾形。 +采薇及茹芝〔1〕 ,亦掇天地英。 +玄酒非麴蘖〔2〕 ,或可通神明。 +天不生杜陆,人间无醉醒。 +——选自《苇航漫游稿》卷一 +【注释】 +〔1〕采薇及茹芝:采摘蕨薇和吞食灵芝。 +〔2〕玄酒非麴蘖:古代祭礼中替代酒的清水。典出《礼记 ·礼 +运》: “故玄酒在室,醴酸在户。”孔颖达疏: “玄酒,谓水也。 +44 | 酒祖杜康 ·诗酒文化品牌 | 45\n===== PAGE 28 =====\n| 酒祖承源 杜康留香 | +以其色黑,谓之玄。而太古无酒,此水当酒所用,故谓之玄酒”。 +【译文】 +杜康是酿酒的“鼻祖”,陆羽乃制茶的“茶圣”。酿酒和制茶 +虽然旨趣不一样,但都是辛苦劳累的活计。 +采摘蕨薇,吞食灵芝,吸取的同样都是天地的精华。古代祭礼 +中以清水代酒,照样灵通天地,照样得到神灵的护佑。 +上天如果不派杜康和陆羽下界为人,那么世间就不可能有让人 +“沉醉”和“清醒”的东西。 +沁园春 ·客山阳偕诸公游杜康庄 +刘伶台醉吟 +宋· 王奕 +【原文】 +醉面挟风,携杜康酒,酹刘伶台。 +问漂母〔1〕 矶头,韩侯安在,钵山池下,乔鹊曾回。 +孝说仲车〔2〕 ,忠传祖逖〔3〕 ,忠孝如今亦可哀。 +清河口,但潮生潮落,帆去帆来。 +休呆。且饮三杯。 +莫枉被、东乌西兔〔4〕 + 催。 +更谁可百年,脱身不化,谁能五日,笑口常开。 +痛饮高歌,胡涂乱抹,快活斗山王秀才。 +今天下,曰利而已,何以平哉。 +——选自《玉斗山人集》卷三 +【注释】 +〔1〕漂母:典出《史记 ·淮阴侯列传》:韩信少年时虽有才 +能却得不到别人的赏识,只好寄人篱下,受到人们的辱骂和鄙视。 +有一次在他饥饿的时候来到河边钓鱼, 一个洗衣服的妇人看他可怜, +不图回报地把自己的食物分给韩信吃。后来,人们就用这个典故来 +表示馈赠食物。 +〔2〕仲车:指徐积,楚州山阳人,性至孝。 +〔3〕祖逖:范阳遒县人。东晋初期的北伐将领。著名的“闻 +鸡起舞”就是他和刘琨的故事。 +〔4〕东乌西兔:谓月亮东升, 太阳西落, 表示时光不断流逝。 +【译文】 +满面醉态,在风的吹拂下,带着杜康酒,来到刘伶台,祭奠刘伶。 +46 | 酒祖杜康 ·诗酒文化品牌 | 47\n===== PAGE 29 =====\n| 酒祖承源 杜康留香 | +在漂母矶头,韩信哪里去了? 一谈到孝道,人们就说徐积;一 +谈到对国家的忠诚, 人们就传颂祖逖。可当今天下, 又有几个孝子、 +几个忠臣?清河口,只能看到涨落的潮水,来去的帆船。真让人感 +到悲哀啊! +不要再发呆了。暂且喝酒吧,不要让时光白白度过。还有谁能 +活过百年,死了之后,能不腐烂?有谁能一连五天笑口常开?淋漓 +畅快喝完酒之后,放声高歌,糊涂乱抹写文章,看我王秀才过得多 +快活! +现在的天下,人们只讲利益,不讲仁义,世风日下,让我情何 +以堪? +鹧鸪天 ·孟津作 +金·元好问 +【原文】 +总道忘忧有杜康,酒逢欢处更难忘。 +桃红李白春千树,古是今非笑一场。 +歌浩荡,墨淋浪。银钗缟袂〔1〕 满邻墙。 +百年得意都能几,乞与儿曹说醉狂。 +——选自《遗山新乐府》卷二 +【注释】 +〔1〕银钗缟袂:指白色的花卉。 +【译文】 +人们常说,能让人忘掉忧愁的是杜康酒。不过高兴的时候喝酒 +更让人难忘。在桃花红、李花白的春天,一边喝酒,一边高谈阔论 +古今是非,该是多么惬意啊!酒后,唱着铿锵嘹亮的歌,酣畅淋漓 +地浓墨挥毫,欣赏着邻居家爬满墙头的白色花朵,在这最多百年的 +一生中,如此得意的时刻能有多少呢?所以,得意的时候就得美美 +地喝酒,巴不得孩子们说我喝酒发疯呢! +48 | 酒祖杜康 ·诗酒文化品牌 | 49\n===== PAGE 30 =====\n| 酒祖承源 杜康留香 | +行香子 +金·许古 +【原文】 +秋入鸣皋〔1〕 + ,爽气飘萧。 +挂衣冠,初脱尘劳〔2〕 + 。 +窗间岩岫〔3〕 + ,看尽昏朝。 +夜山低,晴山近,晓山高。 +细数闲来,几处村醪〔4〕 + 。 +醉模糊,信手挥毫。 +等闲陶写〔5〕 + ,问甚风骚。 +乐因循,能潦倒,也逍遥。 +——选自《御选历代诗余》卷四十三 +【注释】 +〔1〕鸣皋:山名。位于洛阳南部,伊水上游。传说古有鹤鸣 +于此,故曰鸣皋山。 +〔2〕尘劳:比喻官场。 +〔3〕岩岫:峰峦。 +〔4〕村醪:原指民间所酿汁滓混杂的浊酒,这里特指酒乡民 +间酿酒作坊。 +〔5〕陶写:像陶渊明那样写诗论文。 +【译文】 +辞官归隐于鸣皋,脱离了令人厌倦的官场,总算是叶落归根, +得以解脱。凭窗遥望, 秋风萧瑟, 落叶飘零, 朝晖夕阴, 变化无穷: +夜晚暮色笼罩大地,山峰仿佛变低。晴日明丽,一望无际,仿佛山 +峰就在眼前。清晨岚雾散去,朝阳从山顶升起,山峰显得更加挺拔 +高峻。 +这里是杜康造酒的地方,烧坊连爿,酒旗招风,到底有多少家 +酒坊啊,我得慢慢细数。 +因为醉,忘记了一切羁绊,现在可以毫无拘束地抒发性灵,去 +写我的诗了,管它什么体裁格式平仄押韵,管它属于诗经还是属于 +楚骚体式,放开来写就是了。 +自己的一生纯情守旧,自甘淡泊,不慕富贵。现在终于脱离了 +羁绊,有个闲适自在的生活,自得其乐也就罢了。 +50 | 酒祖杜康 ·诗酒文化品牌 | 51\n===== PAGE 31 =====\n| 酒祖承源 杜康留香 | +酹江月 ·题酒 +金·谭处端 +【原文】 +杜康得妙,酿三光〔1〕 真秀,清澄醇酎。 +太白〔2〕 仙才乘兴饮,一斗佳篇百首。 +倒载山翁〔3〕 ,襄阳童稚,笑唱齐拍手。 +陶潜〔4〕 篱下,醉眠门外五柳。 +东里生死俱忘,待宾截发,陶母款贤友〔5〕 。 +文举〔6〕 无忧樽满酌,香醑频开笑口。 +喜遇尧年〔7〕 ,醉乡丰乐,古所希闻有。 +玉壶春色,禄延益算眉寿。 +——选自《水云集》卷二 +【注释】 +〔1〕三光:指日、月、星。典出汉 ·班固《白虎通 ·封公侯》: +“天有三光日月星,地有三形高下平”。 +〔2〕太白:唐诗人李白。 +〔3〕山翁:山简,字季伦(253 ~ 312) ,西晋河内怀县(今 +河南武陟西)人。 +〔4〕陶潜:东晋诗人陶渊明,号五柳。 +〔5〕待宾截发, 陶母款贤友:典出《晋书 · 陶侃母湛氏传》: +陶侃年轻时家境贫寒,一次范逵来到他们家投宿,没有东西招待客 +人。他母亲湛氏悄悄剪下头发卖给邻人,买了些酒菜招待范逵。范 +逵知道此事后赞叹说: “非此母不生此子。”于是范逵就举荐陶侃 +为孝廉,陶侃最终位列三公。陶侃的玄孙就是大文学家陶渊明。 +〔6〕文举:孔融,字文举。东汉末年著名学者, “建安七子” +之一。 +〔7〕尧年:比喻盛世。古史传说尧时天下太平,故名。 +【译文】 +杜康获得灵感,用天地之精华,酿出了清明、澄澈、味厚的美 +酒。诗仙李白乘着酒兴,喝下一斗酒,可写一百首佳妙的诗篇。晋 +朝山简在襄阳作镇南将军时,游赏名池佳苑,喝得酩酊大醉,归家 +时倒卧在车上,小孩子们见了,在街边一齐拍手,唱着儿歌起哄。 +陶渊明隐居期间,酒后常醉眠在门外的五株柳树下。 +陶侃贫微时,朋友来访,他的母亲剪下头发去卖钱换酒来招待。 +孔融心情好的时候,酒杯常满,兴致深时,开怀大笑。 +遇到丰收的年景,人们酿酒,开怀尽兴,不过自古到今很少遇 +52 | 酒祖杜康 ·诗酒文化品牌 | 53\n===== PAGE 32 =====\n| 酒祖承源 杜康留香 | +到这境况。喝上一壶好酒,便觉满室春光,满腔春兴,延年益寿。 +送魏叔华归杭州得行字 +元· 陆文圭 +【原文】 +杜康桥下水如倾,九里冈头路转城。 +风雨小楼清梦远,山河古道几人行。 +别怀渐觉伤安石〔1〕 ,祖席〔2〕 何曾傲正平〔3〕 。 +珍重去逢南国友,为言白发老书檠〔4〕 。 +——选自《墙东类稿》卷十八 +【注释】 +〔1〕安石:指东晋的谢安。 +〔2〕祖席:饯行的宴席。 +〔3〕正平:指祢衡。典出《后汉书 ·祢衡传》:“衡字正平, +少有才辩,而气尚刚傲”。 +〔4〕檠:灯台。这里指夜夜在灯下读书。 +【译文】 +越过杜康桥,过了九里冈就是通向杭州的路。听风听雨的小楼 +以后只能在梦中见到了。您离开这里去杭州, 翻山越河,路途遥远, +古道上有几人与您同行?与朋友离别,就像东晋的谢安,情绪要坏 +好几天。 +在离别的宴会上,我们的朋友“饶之”没有来,他可能是有其 +他的事脱不开身,可不是像祢衡那样,性格刚傲。 +到了杭州遇到了我们的老朋友,谈起我的时候就说我虽然头发 +都白了,但还是夜夜在灯下读书。 +次韵吴成季〔1〕 宗师赤城阻雨 +元·虞集 +【原文】 +人间伏日当蚤〔2〕 休,道上马车如水流。 +神仙不愁风雨夕,父老已知禾黍秋。 +谁怜司马久多病,惟有杜康能解忧。 +北溟之鵾〔3〕 六月息,载我八极歌远游。 +54 | 酒祖杜康 ·诗酒文化品牌 | 55\n===== PAGE 33 =====\n折桂令 ·羊羔酒〔1〕 +元· 王举之 +【原文】 +杜康亡肘后遗方〔2〕 ,自堕甘泉,紫府仙浆。 +味胜醍醐〔3〕 ,釀欺琥珀,价重西凉。 +凝碎玉金杯泛香,点浮酥凤盏熔光。 +锦帐高张,党氏〔4〕 风流,低唱新腔。 +——选自《类聚群贤乐府》 +【注释】 +〔1〕羊羔酒:源于北方的一种酒品 , 因酿制材料中有羊肉, +故名。 +〔2〕肘后遗方:原意为随身携带的医书或药方,此文系指杜 +康的造酒秘方。 +〔3〕醍醐:酥酪上凝聚的油。 +〔4〕党氏风流: 《类苑》:学士陶谷得党太尉家姬,取雪水 +烹团茶以饮,谓姬曰: “党家应不识此? ”姬曰: “彼粗人安得有 +| 酒祖承源 杜康留香 | +——选自《道园学古录》卷三 +【注释】 +〔1〕吴全节(1269—1350), 字成季,号闲闲,又号看云道人, +元代饶州安仁人。曾授玄教大宗师、崇文弘道玄德真人。 +〔2〕蚤:通“早”。 +〔3〕北溟之鵾:典出《庄子 ·逍遥游》: “北溟有鱼,其名 +为鲲”。 +【译文】 +三伏天太热,应该在家休息,但是大道上的车马还是像流水一 +样。您的生活就像神仙一样 , 不惧风 , 不愁雨。可父老乡亲们就不 +一样,他们知道有了这场雨,今年的庄稼就要大丰收了。 +谁会可怜我这多病之人,除了喝杜康酒,还有什么能解除我的 +忧愁呢?我希望能乘着庄子逍遥游中的大鹏鸟,上天入地,去快乐 +地遨游一番。 +56 | 酒祖杜康 ·诗酒文化品牌 | 57\n===== PAGE 34 =====\n| 酒祖承源 杜康留香 | +此,但能于销金帐中浅斟低唱,饮羊膏儿酒耳。”陶深愧其言。 +【译文】 +(这羊羔酒)是依杜康留下的酿酒秘方,用甘甜的泉水造出来 +的,喝起来堪比神仙府里的玉液琼浆 , 口味胜过醍醐,醇厚胜过琥珀。 +在西凉这个地方,它的身价很高。 +酒在金杯里晃动,澄澈透明如碎玉。斟在凤形酒杯里,味如漂 +浮的酥油泛着光亮。 +在这华美的帷帐里,风雅潇洒的党氏歌女,浅唱着新颖脱俗的 +歌曲 , 红袖飘香 , 其乐融融。 +既和乐天诗,独饮戏作 +金 · 李奎报 +【原文】 +孤斟独咏君休笑,好事何人访退翁〔1〕 。 +酌劝杜康吟和白〔2〕 ,诗朋酒友不全空。 +——选自《东国李相国后集》卷三 +【注释】 +〔1〕退翁:衰翁,老翁。 +〔2〕吟和白:吟诗唱和白居易。 +【译文】 +不要笑话我一个人饮酒,一个人写诗,像我这样的老头子谁会 +来拜访呢?喝酒有杜康陪我,写诗有白居易陪我,谁敢说我缺诗朋 +缺酒友呢? +觅神霄道士古铜爵 +金末元初·元好问 +【原文】 +雷章〔1〕 着土纷朱碧,秋菌春蒲人不识。 +若非仪狄墓中来,应自杜康祠下得。 +古人或得酒之传,摸索饮器流馋涎。 +巧偷豪夺吾何敢,他日酬君九府钱〔2〕 。 +——选自《遗山集》卷三 +58 | 酒祖杜康 ·诗酒文化品牌 | 59\n===== PAGE 35 =====\n酒 +元· 黄复圭 +【原文】 +曲蘖〔1〕 生春出小槽,几人耽酗日陶陶。 +笑吞鹦鹉杯〔2〕 + 中月,贫典鹉鹳花下袍〔3〕 + 。 +内府〔4〕 蜡传红琥珀〔5〕 ,西京〔6〕 秋压紫葡萄。 +杜康仪狄今安在,回首丘陵半是糟。 +——选自《元风雅后集》卷五 +【注释】 +〔1〕曲蘖:代指酒。 +〔2〕鹦鹉杯:一种酒杯,用鹦鹉螺制成。 +〔3〕鹔鹳花下袍:相传为汉司马相如所著的裘衣。用鹔鹳鸟 +的皮制成。典出《西京杂记》卷二: “司马相如初与卓文君还成都, +居贫,愁懑。以所著鹔鹳裘就市人阳昌贳酒与文君为欢。” +〔4 内府:王室的仓库。 +〔5〕红琥珀:指红琥珀色的酒。 +| 酒祖承源 杜康留香 | +【注释】 +〔1〕雷章:云雷纹,殷周青铜器上的纹饰之一。大都是连续 +的回旋状线条。 一般称圆形的为云纹,方形的为雷纹。 +〔2〕九府钱:周代有大府、王府、内府、外府、泉府、天府、 +职内、职金、职币,皆掌财币之官,故云九府也。 +【译文】 +作者从神霄宫道士那里见到了一件古铜爵,上面镂刻有云雷纹, +红红绿绿, 形状似乎像秋天的菌, 又似乎像春天的蒲草, 反复把玩, +爱不释手。他认为这件铜爵如果不是来自仪狄墓中,就是来自杜康 +祠中。 +也许有古人得到了酿酒的秘方,制作了这件铜爵。想到此,自 +然想到了美酒,直流口水。 +道士得来的这件古铜爵非同一般之物,我哪里敢去巧取豪夺 +呢?有朝一日,我要用周代九府铸造的钱币来换取。 +60 | 酒祖杜康 ·诗酒文化品牌 | 61\n===== PAGE 36 =====\n| 酒祖承源 杜康留香 | +〔6〕西京:这里指大同府。 +【译文】 +发酵成熟的酒醅, 经压榨后,从小小的酒槽里流出浓香的美酒, +满室生春。几个人天天乐陶陶地喝个大醉,沉溺在美酒之中。 +月明之夜,月亮倒映在鹦鹉杯中,笑着吞下这杯中的美酒。没 +钱了,就像司马相如一样把身上的鹔鹴裘脱去换酒喝。 +皇宫内府每年腊月要赐大臣美酒,大同府每年秋天也用葡萄酿 +酒。 酒祖杜康和仪狄现在在哪里, 回头看看自家门前的山坡上大 +半都是酒糟。 +上巳日〔1〕 吴野人烹蟹及吴化父 +兄弟宴集 +明·王叔承 +【原文】 +前溪雨足溪水新,夜涨桃花三尺春。 +三月三日日初丽,浮玉流觞〔2〕 骄醉人。 +偶过杨柳桥西宅,鱼罾蟹簖〔3〕 当门立。 +船头活蟹紫堪击,重欲满斤阔逾尺。 +主人藏蟹真得宜,急流之下青笼垂。 +日饲稻子数百穗,枫落直过桃花时。 +蜀椒吴盐落磁细,宝刀香腻春葱丝。 +雄者白肪白于玉,圆脐剖出黄金脂。 +主人有蟹不卖钱,但逢嘉客留斟酌。 +持螯岂慕尚方珍,长对杜康呼郭索〔4〕 。 +——选自《御定佩文斋咏物诗选》卷四百七十 +【注释】 +〔1〕上巳日:古时以夏历三月的第一个巳日称为上巳日。魏 +晋后,为了方便和统一 ,将上巳节定在了三月初三日。 +〔2〕流觞:即曲水流觞。人们在弯曲的水流旁集会,在上游 +放置酒杯,杯随水流,流到谁面前,谁就取杯把盏喝酒。 +〔3〕鱼罾蟹簖:鱼罾即渔网。蟹簖:渔具名,编竹为栅,置 +入水中以截断蟹的去路而捕捉。 +〔4〕郭索:原意蟹爬行貌或蟹爬行时的声音, 诗中指代螃蟹。 +典出宋 · 张端义《贵耳集》卷上: “庐山偃蹇坐吾前,螃蟹郭索来 +酒边”。 +62 | 酒祖杜康 ·诗酒文化品牌 | 63\n===== PAGE 37 =====\n酒色财气歌 +明· 冯梦龙 +【原文】 +杜康造下万年春, +一面红妆〔1〕 爱杀人, +生死穷通〔2〕 都属我, +氤氲世界满乾坤。 +——选自《警世通言》第十一卷《苏知县罗衫再合》 +【注释】 +〔1〕红妆:指美女。典出宋周密《齐东野语·尹惟晓词》:“苹 +末转清商,溪声供夕凉,缓传杯催唤红妆”。 +〔2〕穷通:表示困厄与显达。典出《庄子 ·让王》: “古之 +得道者,穷亦乐,通亦乐,所乐非穷通也”。 +【译文】 +杜康在远古时期,就为人类创造了像春天那般温馨惬意的玉液 +| 酒祖承源 杜康留香 | +【译文】 +春雨下足了,门前的溪水昨夜涨了三尺高,水里漂浮着很多桃 +花花瓣。 +三月三日初晴,太阳变得明丽,人们在水上浮杯,玩着曲水流 +觞的游戏,都喝得醉醺醺的。 +偶尔经过杨柳桥西边的宅院,这家主人用鱼罾蟹簖放在门前的 +河里。河里的船上,紫黑色的螃蟹,一个大有一斤重,一尺长。这 +家主人真会养蟹,把蟹养在青色的笼子里,笼子浸在急流的水中, +每天用数百穗稻子喂养螃蟹,从去年秋天一直养到今年春天。 +主人把蜀椒、吴盐磨细,用锋利的刀把春葱切成丝。公螃蟹的 +脂肪比玉石还要白,圆圆肚脐里充满了金色的蟹黄。 +主人家这么好的螃蟹不去卖钱,一旦遇到了尊贵的客人,就用 +它待客。大家手拿螃蟹吃着,再也不去想什么山珍海味了。喝着杜 +康酒,蟹作下酒菜,多惬意啊! +64 | 酒祖杜康 ·诗酒文化品牌 | 65\n===== PAGE 38 =====\n| 酒祖承源 杜康留香 | +琼浆。它像美丽的少女让你痴迷而忘乎所以,失去自我,以至于不 +顾生死,不辨困顿与通达,懵懵懂懂地寻觅刺激,欣从梦幻世界。 +骂杜康 +明· 冯梦龙 +【原文】 +俏娘儿指定了杜康骂,你因何造下酒醉倒我冤家。 +进门来一交跌在奴怀下,哪管人瞧见,幸亏我丈夫不在家。 +好色贪杯的冤家也,把姓名儿当做耍。 +语云。酒为色媒人。但有骂杜康者,而无谢杜康者。 +杜康冤矣。余足一篇云。 +杜康哥,我把你做恩人叫。 +亏煞你造下酒,成就了多少相交。 +三杯落肚其实妙,春情亏你发,春愁亏你消”。 +——选自《挂枝儿》卷一 +【注释】 +〔1〕挂枝儿:民间曲调名。亦称《倒挂枝儿》或《挂枝词》。 +是北方民间曲调《打枣竿》流行至南方的改称。 +杜 康 庙 +明· 周淑禧 +【原文】 +醋有新糟酸有醴〔1〕 ,杜康桥上客题诗。 +最为苦相身为女,千载曾无仪狄〔2〕 祠。 +——选自《明诗踪》卷八十五 +【注释】 +〔1〕醋有新糟酸有醴:醋:众多人相聚饮酒。新糟:即新酒。 +酸:祭祀时把酒洒在地上, 称之“奠酸”,表示对神灵的祭奠。醴: +这里指酒。 +〔2〕仪狄:夏禹时期善于制酒的人。 +66 | 酒祖杜康 ·诗酒文化品牌 | 67\n===== PAGE 39 =====\n| 酒祖承源 杜康留香 | +【译文】 +新酒出甑了,这是为三月三祭祀酒神“特酿”的新酒,来自四 +面八方的信众酹酒膜拜杜康之后,便相邀醋酒,猜拳行令,好不热闹。 +之后,文人骚客来到杜康桥上,题写诗句祝福酒祖。但令作者不解 +的是,仪狄也是大夏王朝的造酒者, 但至今也没人为她造一座庙宇。 +和陶诗《止酒》 +明· 李贤 +【原文】 +四时足行乐,饮酒胡可〔1〕 止。 +春鸟相和鸣,载酒绿阴里。 +夏日清风来,对酒二三子。 +秋菊篱半开,酒至情偏喜。 +冬雪满园林,酒价纷然起。 +止酒〔2〕 果何如,君当察斯理。 +亲交〔3〕 频往来,况复遇知己。 +酒既不可止,吾量亦无诶〔4〕 。 +杜康安在哉,我欲立其祀。 +——选自《古穰集》卷二十四 +【注释】 +〔1〕胡可:怎么可以。 +〔2 止酒:戒酒。 +〔3 亲交:亲戚朋友。 +〔4〕无诶:无限。 +【译文】 +一年四季应该好好游戏娱乐,喝酒这件事怎么能停下来呢?春 +天里鸟鸣此起彼伏,到绿林里喝。夏日里,清风徐徐,叫上几个好 +朋友一起喝。秋天花圃里的花半开未开的,有人送来了酒,心情甭 +提多高兴了。冬日里,满园子的雪, (由于饮酒人多) ,酒都纷纷 +涨价了。 +戒酒的后果最终如何?你可要想清楚。亲戚朋友频往来,不用 +酒招待,行吗?况且遇到知心的好朋友,那更得喝酒了。 +既然戒不了酒,那就放开喝吧。酒祖杜康在哪里呢?我想建一 +座杜康庙来祭祀他。 +68 | 酒祖杜康 ·诗酒文化品牌 | 69\n===== PAGE 40 =====\n| 酒祖承源 杜康留香 | +对酒 其二 +明· 冯裕 +【原文】 +对酒歌丰年,年丰实堪乐。 +东家酿新黍,西舍储旧酪。 +南邻鹦鹉杯〔1〕 ,北里鸬鹚杓〔2〕。 +时有杜康来,且共渊明酌。 +倾银而注玉,何如瓦与砾。 +烹羊及炙牛,争似藜与藿〔3〕 。 +仓箱喜盈收,场圃多刈获〔4〕 。 +昼无捕蛇役〔5〕 ,夜少豪吏〔6〕 索。 +斑白〔7〕 遂安饱,黧黑免饥虐。 +天子甚圣明,宰府兼庙略〔8〕 。 +草夭木已乔,鸢飞鱼自跃。 +但寡旱蝗灾,聊尔〔9〕 + 纡民瘼〔10〕 + 。 +——选自《海岱会集》卷一 +【注释】 +〔1〕鹦鹉杯:用鹦鹉螺制成的酒杯。 +〔2〕鸬鹚杓:刻为鸬鹚形的酒杓。 +〔3〕藜与藿:灰灰菜和豆叶。泛指粗劣的饭食。 +〔4〕刈获:收获。 +〔5〕捕蛇役:指官府杂役。典出柳宗元《捕蛇者说》。 +〔6〕豪吏:典出杜甫的《石壕吏》。指官府杂役。 +〔7〕斑白:头发花白。 +〔8〕庙略:治国的谋略。 +〔9〕聊尔:姑且;暂且。 +〔10〕纡民瘼:缓解、减轻民众的疾苦。 +【译文】 +对着酒歌唱丰收,丰收的年份实在是应该乐一乐。 +东边的邻居用今年打下的粮食酿酒,西边的邻居储存有往年的 +酒。南邻北里的乡亲们都用自家最精美的酒器喝酒。不时有杜康的 +传人,带着他们自己酿造的酒过来,与我这个像陶渊明一样隐居的 +人一起喝酒。 +用银壶玉杯来喝,哪里比得上用瓦盆陶罐喝呢?牛羊肉的味道, +哪里比得上灰灰菜和豆叶的滋味呢? +地里的庄稼收割完了,看着满仓满箱的粮食,心里喜滋滋的。 +70 | 酒祖杜康 ·诗酒文化品牌 | 71\n===== PAGE 41 =====\n| 酒祖承源 杜康留香 | +白天没有官府苛刻的杂役,晚上也没有豪横的官吏来索人讨物。 +年纪大的能吃饱肚子,虽然付出辛劳肤色黝黑,但可免于饥饿的折 +磨。当今的皇帝圣明,大臣富有治国方略啊。 +草木已经凋谢,老鹰在自在地飞翔,鱼在自在地游弋,一切多 +么和乐美好。祈求减轻百姓的疾苦,没有旱灾和蝗灾。 +酒房戏为长庆体示四郎侄 +明· 王世贞 +【原文】 +且问吾家小杜康,泼醅〔1〕 + 浓酥〔2〕 + 许谁尝。 +软炊〔3〕 + 新稻真珠粒〔4〕 + ,细压寒槽白玉浆。 +泻出流霞偏让色,滴来甘露有生香。 +休论染指涎先下,任遣持螯手自忙。 +昼要督邮〔5〕 + 缸底静,宵防吏部〔6〕 + 瓮头狂。 +十年奔走愁为伴,万里归来醉是乡。 +席上清樽仍北海〔7〕 + ,城中旧侣有高阳〔8〕 + 。 +秫田已满七百斛,泥饮从今三万场。 +漉后葛巾〔9〕 堪倒戴,颓时藜杖好扶将。 +凭教卯酌还丁夜,不拟人间唤索郎〔10〕 。 +——选自《兖州四部稿》卷四十四 +【注释】 +〔1〕泼醅:重酿未滤的酒。类似于当今的“双轮底”酿法。 +〔2〕浓醁:味厚的美酒。 +〔3〕软炊:文火煮。 +〔4〕真珠粒:精选的稻米粒。 +〔5〕督邮:指劣质酒。典出刘义庆《世说新语 ·术解》: “桓 +公( 桓温 )有主簿善别酒,有酒辄令先尝,优者谓青州从事,恶 +者谓平原督邮。 青州有齐郡 , 平原有鬲县 ,从事言到脐,督邮言 +在鬲上住。” +〔6〕宵防吏部:指毕卓。泛指嗜酒成癖的人。典出《晋书 ·毕 +卓传》。 +〔7〕北海:指孔融。汉末孔融任北海相,人称孔北海 ,亦称 +北海 。 +〔8〕高阳:指嗜酒而放荡不羁的人。典出《史记 · 郦生陆贾 +列传》:“初, 沛公引兵过陈留, 郦生踵军门上谒……使者出谢曰:‘ +沛公敬谢先生,方以天下为事,未暇见儒人也。’郦生瞋目案剑叱 +使者曰‘走!复入言。沛公 ,吾,高阳酒徒,非儒人也。’”。 +72 | 酒祖杜康 ·诗酒文化品牌 | 73\n===== PAGE 42 =====\n| 酒祖承源 杜康留香 | +〔9〕漉后葛巾:典出《宋书 ·隐逸传 · 陶潜》: “郡将候潜, +值其酒熟,取头上葛巾漉酒,毕,还复著之” 。 +〔10〕索郎:酒的别称。亦泛指酒。 +【译文】 +问一下我家善酿酒的小杜康,你酿的酒让谁品尝?用文火来 +蒸煮珍珠似的稻粒,在酒糟中压榨出白色的酒浆。酿的酒,色泽不 +减天上的云霞,味道如弥漫着香气的甘露。还没有端起来喝,口水 +就流下了。任你拿着螃蟹等美味的手,去不停地端起来喝。白天要 +把平原督邮的酒缸喝到见底,晚上要防止毕卓发酒疯。 +在外东奔西走十年,年年忧愁为伴。如今从远方归来,要沉 +醉于酒乡。我的座席上有孔融这样的高洁之士陪我喝酒,城中有郦 +食其这样的高人做我的酒友。我的田地里种的秫足够酿酒七百斛, +从今天起,沉醉于酒中,要树立起喝三万杯的准备。 +我要像陶渊明一样,用头巾过滤酒,醉后管他衣冠整不整齐。 +要像嵇康一样喝得东倒西歪,让拐杖好好扶着我。什么都不管不顾 +了,白天喝,晚上喝,别人唤我酒鬼又如何? +雁 来 红 +明· 汤显祖 +【原文】 +送酒介〔1〕 + : +宽金盏〔2〕 + ,泻杜康。 +紧班骓〔3〕 送陆郎。 +他无言觑定〔4〕 把杯儿倘。 +再四重斟上。 +怕湿罗衫这泪几行。 +合〔5〕 : +凝眸望。 +开科这场。 +但泥金〔6〕 早传唱。 +——选自《邯郸梦 ·赠试》 +74 | 酒祖杜康 ·诗酒文化品牌 | 75\n===== PAGE 43 =====\n| 酒祖承源 杜康留香 | +【注释】 +〔1〕送酒介:剧本提示演员做送酒的动作。 +〔2〕宽金盏:劝人多喝些酒。指斟酒的动作: +〔3〕班骓:毛色青白相杂的骏马。 +〔4〕觑定:一言不发的看着。 +〔5〕合:剧本提示两人合唱。 +〔6〕泥金:用泥金涂饰的笺帖。 唐以来用于报新进士登科之喜。 +【译文】 +我给你倒上杜康酒,你可要多喝些。他(陆生)一言不发,看 +着杯子把酒喝了,我又不断给他倒上。离别的伤心泪把我(崔氏) +的衣服都打湿了。两眼痴痴地凝望着(陆生),这一场科举开考了。 +但愿你卢生中举,喜报早传。 +过俞羡长小饮二首 其二 +明· 胡应麟 +【原文】 +四壁图书满,藤萝压座苍。 +陆浑新邸〔1〕 僻,阳羡旧田〔2〕 荒。 +大业占毛颖〔3〕 + ,雄心托杜康。 +褐衣〔4〕 吾自贵,未拟谒金张〔5〕 。 +——选自《少室山房集》卷四十 +【注释】 +〔1〕陆浑新邸:唐代的达官贵人多在陆浑有别业, 常隐居在此。 +〔2〕阳羡旧田:典出宋 苏轼《菩萨蛮》词:“买田阳羡 吾将老, +从来只为溪山好”后因以“买田阳羡”指辞官归隐。 +〔3〕毛颖:指毛笔。 +〔4〕褐衣:粗布衣服。 +〔5〕金张:对汉代金日禅 、 张安世二人的并称。二氏子孙 +相继,七世荣显。后因用为显宦的代称。 +【译文】 +室内的四面墙边摆满了图书,书桌椅周边藤萝下垂。看了您在 +陆浑的别业,真羡慕您隐居在这幽僻的地方,生活这么悠游自在, +我也想辞官隐居。从今往后,要以写文章为托身之本,雄心壮志托 +付给杜康。虽然穿着粗布衣布,作一介平民,但我觉得自己贵重, +不打算去攀附那些达官贵人。 +76 | 酒祖杜康 ·诗酒文化品牌 | 77\n===== PAGE 44 =====\n| 酒祖承源 杜康留香 | +宣城饮王舍人家留别 +明·袁宏道 +【原文】 +桕叶如丹鄢水滨,芙蓉花里驻蹄轮〔1〕 。 +尊前齐赘〔2〕 能诙语,瓮里杜康苦泥人。 +白日共惊头上雪,青衣〔3〕 争扫鬓间尘。 +鸡声喔喔催行李,到底输君〔4〕 自在身。 +——选自《袁中郎全集》卷七 +【注释】 +〔1〕驻蹄轮:停车驻马,准备安歇。 +〔2〕齐赘:战国时齐之赘婿淳于髡 ,以诙谐著称。后以借指 +善于谐谑的人。 +〔3〕青衣:指穿青衣或黑衣的人。这里指婢女、侍童。 +〔4〕输君:我不如你的意思。 +【译文】 +你王舍人家住在鄢水之滨,这里乌桕树叶红如丹砂,到处都是 +芙蓉花。我停车驻马,安歇在你家里。 +你在酒席上像齐之淳于髡一样满口诙谐之言,酒瓮里的杜康酒 +可真是讨厌,苦苦纠缠咱们两个叫咱脱不开身。 +这次见面你我都没想到,彼此的头发都白了,你家的婢女、侍 +童真是殷勤,争相为我掸去身上的灰尘。 +喔喔的鸡鸣声又在催我上路了,论起生活的自由自在,我真的 +不如你啊。 +东风引 ·瓶山〔1〕 +明· 归淑芬 +【原文】 +只因愁税重。杜康遁何处。 +酒帘曾化轻云去。 +瓮头空叠起。 +瓮头空叠起。春衣漫典〔2〕 + ,花神〔3〕 + 莫祭。 +徒远听黄鹂语。行人若到孤城里。 +78 | 酒祖杜康 ·诗酒文化品牌 | 79\n===== PAGE 45 =====\n| 酒祖承源 杜康留香 | +余香闻亦醉。余香闻亦醉。 +——选自《云和阁静斋诗余》 +【注释】 +〔1〕瓶山,位于浙江嘉善境内。古时嘉善的酿酒行业相当发达。 +相传春秋战国时期,吴国大将伍子胥曾驻扎嘉善,打了胜仗以后喝 +酒庆祝,酒瓶堆积形成瓶山。 +〔2〕春衣漫典:把春衣在当铺里抵押换钱。 +〔3〕花神:指花朝节祭祀花神, 简称花朝, 也称“花神节”, +一般于农历二月中上旬举行。节日期间,人们结队到花神庙祭酒, +烧香,以祈求花神降福。姑娘们还结伴到郊外游览赏花,称为“踏 +青”。 +【译文】 +因赋税的繁重,酿酒的杜康也不知逃到哪里去了。酒店的酒帘 +也像天上的轻云一样,被风吹走了,酒店外的空酒瓮寂寞地摞在那 +里。 +把春衣在当铺里抵押换钱也没用,买不来酒不能祭奠花神。只 +能落寞地听远处黄鹂的叫声。 +若是到了城里,即使不买酒,闻闻酒香,也让人沉醉。 +饮 酒 歌 +明末清初·黎景义 +【原文】 +勿歌行路难〔1〕 ,请歌将进酒。 +举足羊肠懊恼多,叵罗〔2〕 三百悦吾口。 +周秦去后汉唐来,蜉蝣人世归乌有。 +金龟毋惜换千回,涛饮自然倾十斗。 +左凭太白肩,右握渊明手。 +耳热卧中庭,皓月即吾友。 +酡颜〔3〕 弗管时飞箭,鸭绿鹅黄好欢宴。 +地下应难觅杜康,佳城寒食〔4〕 厄虚奠。 +雍门牧唱岂足哀,金张许史亦成灰。 +寄语辕驹〔5〕 + 并仗马〔6〕 + ,漉巾脱裘何乐哉。 +功名富贵不可以,鹿葱花〔7〕 下且衔杯。 +—— 选自《二丸居集》八卷 +80 | 酒祖杜康 ·诗酒文化品牌 | 81\n===== PAGE 46 =====\n| 酒祖承源 杜康留香 | +【注释】 +〔1〕《行路难》:和《将进酒》同为词调名。 +〔2〕叵罗:指酒杯。 +〔3〕酡颜:面红耳赤状。 +〔4〕寒食:祭奠亡人的供品。 +〔5〕辕驹 : 车辕下不惯驾车之幼马。亦比喻少见世面器局不 +大之人。 +〔6〕仗马 : 比喻坐享俸禄而不敢言事之官。 +〔7〕鹿葱花 : 石蒜科植物。多年生草本,地下有鳞茎,夏日 +生花轴,轴顶生数花,花淡红紫色。因花色与萱稍相似,古人曾以 +萱呼之。 +【译文】 +不要再唱《行路难》了,请唱《将进酒》。走在羊肠小道上, +艰难困苦太多了,叵罗杯里的酒太爽了,我要喝三百杯。 +曾经强盛的周秦汉唐,早已湮灭在流逝的时光里,人活一世, +如朝生暮死的蜉蝣,瞬息之间,化为空无。 +不要怜惜那金龟,拿它换酒喝吧,酒如那滚滚波涛,一刻不停 +地入口下肚,一喝就喝十斗。左手搭在李白的肩上,右手握着陶渊 +明,拉着他们一起去喝酒。喝到酒酣耳热,就躺到院子里,与天上 +的皓月为伴。这大好的春天,正是饮酒之时,喝得面红耳赤,任它 +时光流逝。 +人死了,在阴间恐怕再也找不到杜康酒喝了。阳间的人在清明 +节祭奠,这祭奠的酒由于阴阳两隔,对阴间的人恐怕也是白搭。改 +朝换代不足悲哀, 当时即使煊赫一时,炙手可热的金日禅 、张安世、 +许广汉、史恭父子这些汉代权贵,如今不也成土成灰,渺若云烟了 +吗? +我要劝那些在官位上鼠目寸光、尸位素餐的人,把皮大衣拿去 +换酒喝吧!功名富贵全是命运所赐, 非人力所可获致, 不知哪一天, +这功名富贵会变成一场空,所以在忘忧草丛中尽情地喝吧! +吴长组征诗为杜毅斋开酒禁 其二 +明末清初·倪元璐 +【原文】 +盘石山头止酒辞〔1〕 ,经年不到杜康祠。 +于今更走东皋路〔2〕 ,为有无功是导师。 +——选自《倪文贞集 诗集》卷下 +【注释】 +〔1〕止酒辞:戒酒的文辞。 +82 | 酒祖杜康 ·诗酒文化品牌 | 83\n===== PAGE 47 =====\n| 酒祖承源 杜康留香 | +〔2〕东皋路 : 东皋指王绩(祭杜康新庙文作者) ,东皋路意 +指通向杜康祠的路。 +【译文】 +在盘石山上我写下了发誓不再喝酒的文辞,已有年儿半载没到 +杜康祠了。 +今天又走过了通向杜康祠的路,那个喜饮善饮的王无功是我的 +导师,我又来向他学习了。 +杜 康 桥 +明末清初· 陈函辉 +【原文】 +酒人千载上,姓字此中留。 +不赖君遗教,其谁可解忧。 +公田饶秫国,吏隐〔1〕 有糟丘〔2〕 。 +寂莫荒江外,浮生聊与谋。 +——选自《寒山集》 +【注释】 +〔1〕吏隐:谓不以利禄萦心,虽居官而犹如隐者。 +〔2〕糟丘:酒糟堆成像小山一样。 +【译文】 +千年前造酒的人远游了,而他的姓字却永远留在了这座桥上。 +要不是你杜康留下造酒的技法,现在的人拿什么来消愁解闷呢? +官田里种满了秫。我这个当官的把这些秫都酿成了酒,酒糟堆 +得像小山一样。我生活在这荒江之外, 一辈子就与你杜康为伴了。 +寄于皇(其二) +明末清初·龚鼎孳 +【原文】 +骑省〔1〕 + 秋风伴药囊,白头终日梦柴桑〔2〕 + 。 +扁舟竟指青溪去,何以解忧惟杜康。 +——选自《定山堂诗集》 +【注释】 +84 | 酒祖杜康 ·诗酒文化品牌 | 85\n===== PAGE 48 =====\n| 酒祖承源 杜康留香 | +〔1〕骑省:官署名。 唐代中书省和门下省都有散骑常侍,简 +称骑省。这里指作者自己在朝为官。 +〔2〕柴桑:为陶渊明的归隐之地。 +【译文】 +自己在朝中为官,得了一身的病。年纪大了,整天想着像陶渊 +明一样辞官隐居,驾一叶扁舟,直向山清水秀之地。 +什么才能消解心中的忧愁呢?只有杜康。 +初夏闲居 其二 +明末清初· 彭孙贻 +【原文】 +从子围棋赌墅〔1〕 ,山童煑茗添香。 +老子兴复不浅,猗兰〔2〕 勿采何伤。 +长啸深怀阮籍,解忧赖有杜康。 +酒钱莫愁索负,且教典却鹉鹴〔3〕 。 +——选自《茗斋集》卷九 +【注释】 +〔1〕赌墅:形容从容镇定,举重若轻。典出《晋书 》卷 +七十九 ·谢安列传》。 +〔2〕猗兰:喻情操高洁之士。 +〔3〕鹔鹴:指鹔鹴裘,用鹔鹴飞鼠之皮制成。 +【译文】 +像东晋谢安那样悠闲地隐居东山。让侍童煮煮茶,燃燃香。我 +隐居的兴致非常浓。只要自己情操高洁,朝廷不任用自己,又有什 +么可伤心的呢? +特别怀念阮籍,喝醉了就长啸,一吐胸中的忧懑。解忧消愁幸 +好有杜康。不要忧虑酒钱,我那名贵的鹔鹴裘拿去当了换酒喝。 +满宫花(冬饮) +明末清初· 陆求可 +【原文】 +杓鸬鹚,杯鹦鹉。一簇梅花无主。 +乌程酒伴履霜来,醉倒松筠山坞〔1〕 。 +86 | 酒祖杜康 ·诗酒文化品牌 | 87\n===== PAGE 49 =====\n粉蝶儿(咏酒) +明末清初· 陆求可 +【原文】 +琥珀生光,人人都道琼液。 +是杜康、旧留米汁。 +但三杯、欢情浃,驱愁无迹。 +把醉乡、一路蚕丛独辟。 +坐醉行歌,止容陶潜王绩。 +杖头钱〔1〕 、痴人省得。 +喜糟丘,千载后,风流咫尺。 +逢曲车〔2〕 、愿新封酒泉国。 +——选自《十五家词》卷十九 +【注释】 +〔1〕杖头钱:典出《晋书 ·阮脩传》:“常步行,以百钱挂杖头, +至酒店,便独酣畅”。后因以“杖头钱”称买酒钱。 +〔2〕逢曲车:典出《八仙醉酒歌》:“道逢曲车口流涎”。 +| 酒祖承源 杜康留香 | +足冬三,忘夜五。寒即糟床歌舞。 +杜康城上少冰霜,卿相肯留圭组〔2〕 。 +——选自《月湄词》 +【注释】 +〔1〕松筠山坞 : 松筠 : 松树和竹子;山坞 : 山坳。 +〔2〕圭组:玉圭与印绶。引申指爵位、官职。 +【译文】 +梅花开了,无人欣赏。空有鸬鹚杓,鹦鹉杯。正好有酒乡的朋 +友带着美酒踏霜而来。喝醉在山坳间的松树和竹子下。整个冬天, +夜夜喝到五更。冷了就在压酒的糟床上蹦蹦、跳跳、唱唱。 +杜康创演的醉乡很少有冰霜,是一个极乐世界。可哪一个高官 +愿丢下权位,栖身于此。 +88 | 酒祖杜康 ·诗酒文化品牌 | 89\n===== PAGE 50 =====\n| 酒祖承源 杜康留香 | +【译文】 +色如闪光的琥珀,人人都说这是玉液琼浆。这杜康酒,是用熟 +米酿成。只要喝上三杯,心欢体畅,忧愁全被赶走,一点不留。醉 +乡再难进入,也要像蜀道那样, 一个人开辟出一条道路。 +坐着喝,走着喝,这好事怎么只让陶渊明和王绩享受呢?只有 +傻瓜才会去节省买酒的钱。喜欢喝酒的人,千年以后,会留下风流 +潇洒的美名。一遇到拉酒的车,就想被皇帝差遣到酒泉当官,能美 +美地喝个痛快。 +醉公子 · 本意 +明末清初·尤侗 +【原文】 +何处贪杯酒,愁杀闺中妇。 +尚喜晚还家,刚留一盏茶。 +扶得和衣睡,冷却鸳鸯被。 +不敢骂檀郎〔1〕 ,喃喃咒杜康。 +——选自《十五家词》卷十二 +【注释】 +〔1〕檀郎:情郎。女子对丈夫的爱称。 +【译文】 +你去喝酒又贪杯了,怕你醉酒,愁得我坐卧不宁。尚好,总算 +把你盼回来了,刚刚为你泡上一盏醒酒茶。 +扶郎君上床,你竟和衣而睡,冷落了鸳鸯被,也冷落了小女子 +的心。想骂丈夫可又不敢,只能嘟嘟囔囔地咒骂杜康,都是你教会 +人们做酒,把俺今晚的好事也搅黄了。 +伤 春 +明末清初 · 王鸣雷 +【原文】 +最厌生年近五旬,髭须〔1〕 渐渐白如银。 +杜康数盏堪消恨,春鸟一声能感人。 +何处常行歌舞地,也曾经过乱离身。 +家妻太笑无高策,红烛偷光敢忘邻。 +90 | 酒祖杜康 ·诗酒文化品牌 | 91\n===== PAGE 51 =====\n| 酒祖承源 杜康留香 | +——选自《空雪楼集》 +【注释】 +〔1〕髭须:胡须。 +【译文】 +胡须一根根渐渐变白了, 一想起年龄快五十岁了,心里就烦。 +这种烦闷喝几杯杜康美酒,听听春天动听的鸟鸣,就可消减。 +现在哪里有歌舞就往哪里去,这辈子曾经历过动荡不安、背井 +离乡的生活,妻子笑我笨,晚上借邻居的烛光读书。 +赭阳酒民歌 +清· 田雯 +【原文】 +赭阳〔1〕 + 土风古罕有,潘水〔2〕 + 清甘酿作酒。 +比屋麯米各斗强,多者百缸少十瓿。 +糟床〔3〕 下注鹅子黄,味较索郎辄不丑。 +此风不变已千年,传来疑是杜康后。 +凌晨孤斟带微醺,出门醵饮呼其偶。 +分曹浮白〔4〕 鲜虚日,或三五人或八九。 +伯伦〔5〕 便埋岂为酣,王绩之乡此居首。 +快哉举国皆欢伯〔6〕 ,可惜无螯空左手。 +以醒为醉醉为醒,孰好鼓瑟孰击缶。 +前年刺史来新官,眼花落井印悬肘。 +沉湎一临听事堂,薄书置左杯斝右。 +国人疾趋称兕觥〔7〕 ,茗芋骑马舆隶走。 +如此真可博通侯,加以九锡赐圭卣〔8〕 。 +我亦逢车流涎者,信宿那能停大斗。 +漫云〔9〕 习俗善移人,鲁人猎较孔所取。 +男耕女织何未闻,愿除麯蘖戒童叟。 +莫教嵇康李白知,老生常谈同敝帚。 +软饱〔10〕 + 登途太忽忽,夕阳在山鸦鸣柳。 +——选自《古欢堂集》卷六 +【注释】 +〔1〕赭阳:古地名,今属河南省南阳市方城县, 汉时称赭阳县。 +92 | 酒祖杜康 ·诗酒文化品牌 | 93\n===== PAGE 52 =====\n| 酒祖承源 杜康留香 | +〔2〕潘水:淘米水。 +〔3〕糟床:榨酒的器具。 +〔4〕浮白:原意为罚饮一满杯酒,后亦称满饮或畅饮。 +〔5〕伯伦:晋刘伶的字。 +〔6〕欢伯:酒的别名。典出汉焦赣《易林 ·坎之兑》:“酒为 +欢伯,除忧来乐”。 +〔7〕兕觥:古代酒器。腹椭圆形或方形, 圈足或四足,有流和鋬。 +盛行于商代和西周前期。后亦泛指酒器。 +〔8〕圭卣:中国古代在祭祀、宴飨、丧葬以及征伐等活动中 +使用的酒器。 +〔9〕漫云:别说,不要讲。 +〔10〕软饱:酒喝多了。典出宋 ·苏轼《发广州》诗:“三杯 +软饱后, 一枕黑甜餘。” +【译文】 +自古至今,很少见到如赭阳这个地方的风俗,用清澈甘甜的淘 +米水酿酒。家家户户, 用米发酵, 多的酿上百缸, 少的也有十来缸。 +榨酒的糟床流出鹅黄的酒浆,酒的口味比桑落酒还要好。这种风俗 +千年以来不曾改变,我很怀疑,这里的人可能都是杜康的后代。 +赭阳人早上起来就喝酒,喝得醉醺醺出门。出了门,还是呼朋 +引伴地凑钱买酒喝。有时三五个人,有时八九个人,常常分成两队 +比赛喝,没有哪一天不喝的。人人都像刘伶那样,酒喝醉了,就什 +么也不管了。如果要找最能喝酒的地方,这里天下第一。 +真是快乐呀!你饮我饮大家饮, 可惜左手空空, 没有下酒菜。 +醒了也是醉,醉了也是醒,醒和醉没什么区别。喝了酒,去唱去跳 +去狂欢。 +前年新来了一个高官, 酒喝得大醉, 人都掉进水里了, 胳膊上 +还挂着官印。到了衙门大堂上,左手拿着公文,右手拿着酒杯,还 +是不停地喝。城中的人争相与这位高官对喝,高官喝醉后,让衙役 +们搀着回家。要是这样喝下去,这位高官非要封侯,当上更大的官 +不可。 +我也像汝阳王一样,见到拉酒车就流口水。早亦喝, 晚亦喝, +哪能停下杯子来。不要说人容易被周边的风俗习惯所改变,那叫入 +乡随俗,连圣人孔子也是这样。 +男耕女织, 这里的人似乎未曾听说。真希望这里的老老少少都 +能戒酒,不要让善饮的李白和嵇康知道此地风俗,否则他们又会大 +谈特谈喝酒有多好的道理来。 +我今天在这里酒喝得够了, 也醉了, 太阳即将下山, 乌鸦在柳 +树上哑叫,匆匆离开吧。 +94 | 酒祖杜康 ·诗酒文化品牌 | 95\n===== PAGE 53 =====\n| 酒祖承源 杜康留香 | +摸鱼儿 万华亭招同陆以宁张桂岩 +葛菱溪唐柘田汪绣谷小饮寓 +斋醉后作 +清· 凌廷堪 +【原文】 +笑吾曹、挟书燕市,青袍终日尘拥。 +残杯冷炙酸辛极,几见翠筵炮凤〔1〕 。 +俱蠛蠓〔2〕。 +算只有、帘前春色千金重。 +豪情乍涌。 +似渴骥奔泉,长鲸吸海,今日酒徒共。 +天涯会,都是荆高伯仲〔3〕 + 。 +檐花深夜风动〔4〕 。 +消磨谀墓〔5〕 囊中物,买得杜康盈瓮。 +谁贾董〔6〕 。 +便琐琐虚名,身后知何用。 +鸬鹚〔7〕 互捧。 +任萧寺钟鸣,谯楼鼓歇,不醒醉乡梦。 +【注释】 +〔1〕翠筵炮凤:这里指山珍海味。 +〔2〕蠛蠓:小虫子。 +〔3〕荆高伯仲:代指荆轲和高渐离。典出《史记 ·刺客列传》, +写荆轲“嗜酒”, “为人深沉好书”, “日与狗屠及高渐离饮于燕 +士”。这里作者和历史上刺秦的荆轲自比。 +〔4〕檐花深夜风动:屋檐下的花在深夜的风中摇摆。 +〔5〕谀墓:撰写墓志铭。 +〔6〕贾董:汉代贾谊和董仲舒的并称,两人以文采著名。 +〔7〕鸬鹚:鸬鹚形酒杯。 +【译文】 +笑我们这些书生,每天带着书,衣上染满了灰尘,过着穷酸的 +日子。吃别人剩下的饭菜,忍受别人的冷眼,心里充满了辛酸。那 +山珍海味见过几次? +人生在世,不过是一小虫子。算来只有窗外的大好春色价逾千 +金。遇酒, 则豪情迸发, 像渴极了的马奔向泉水, 像长鲸吸吞海水。 +今天与酒友一起,大喝一场,大家来自五湖四海,都是荆轲高渐离 +96 | 酒祖杜康 ·诗酒文化品牌 | 97\n===== PAGE 54 =====\n| 酒祖承源 杜康留香 | +一样的慷慨悲歌之士。 +屋檐下的花在深夜的风中摇摆。用撰墓志铭的钱来买杜康酒。 +即使才华如贾谊和董仲舒,在人世留下些虚名,死了之后又有何用? +大家都捧起酒杯,管它晨来暮去,不醉不休。 +铜雀台瓦砚歌 +清·宋书升 +【原文】 +汉火未熄妖星芒,铜雀〔1〕 + 一现朱雀〔2〕 + 藏。 +高台巍峨连漳起,邺下〔3〕 媚狐肆披猖。 +凤柱对蹲双结绮,虹桥倒挂若回廊。 +年月回环书蝌蚪〔4〕 ,琉璃金碧覆鸳鸯。 +汉家兵戈既鼎沸,横槊归来乐未央〔5〕 。 +大儿弹棋幼傅粉,一门父子盛文章。 +惆怅东风慕娇女,朝露慨慷对杜康。 +阿房歌弦秦公子,阳台云雨楚君王。 +分香卖履留遗嘱,儿女之情抑何长。 +建安去此二千载,太息阿瞒〔6〕 骨已霜。 +一世之雄今安在,独留瓦片艳文房。 +——选自《春秋长历》 +【注释】 +〔1〕铜雀:即铜雀台。建安十五年冬曹操所建。周围殿屋 +一百二十间。铸大孔雀置于楼顶,舒翼奋尾,势若飞动,故名。与 +金虎、冰井合称三台,意指曹魏政权。 +〔2〕朱雀:汉代宫殿名,指大汉王朝。 +〔3〕邺下:曹魏的邺都。 +〔4〕书蝌蚪:指蝌蚪文。 +〔5〕未央:指未央宫。位于长安城西南部, 为汉高祖七年(公 +元前 200 年)在秦章台基础上修建, 惠帝即位后,开始成为主要宫殿。 +〔6〕阿瞒:曹操的别名。 +【译文】 +汉朝末年,天上出现妖星,拖着不祥的光芒,曹魏出世,汉朝 +灭亡。 +巍峨的铜雀台在漳河两岸拔地而起,连绵不绝。宫殿的墙壁上 +回环曲折地写着蝌蚪文,屋顶上琉璃瓦,金碧辉煌。屋脊上装饰着 +各种鸟兽。廊柱若凤,彩桥如虹,雕梁画栋,极尽奢华。邺都中的 +乱臣贼子在这里肆意猖狂。 +98 | 酒祖杜康 ·诗酒文化品牌 | 99\n===== PAGE 55 =====\n| 酒祖承源 杜康留香 | +汉魏兵火未息,政局动荡。曹操战罢归来,与儿子们在这铜雀 +台中,观春景,赏美人,赋诗书文,感叹人生苦短,再念“慨当以 +慷,忧思难忘, 何以解忧, 唯有杜康”。铜雀台就像秦朝的阿房宫, +楚国的巫阳台,任由王孙贵戚恣意作乐。 +虽然生前大肆铺张,但临终之际,曹操还是留下了分香卖履的 +遗嘱。他对儿女的感情多深啊! +建安距今两千年了,曹操的骨头早已化为灰烬。当年不可一世 +的枭雄,现在在哪里?只留下了这片瓦,让我当砚台,装饰我的书 +房罢了。 +登襄阳郡楼 +清· 周昱 +【原文】 +莽莽荆襄〔1〕 割据州,夕阳西下独登楼。 +岘山晓翠当窗入,汉水寒潮抱郭流。 +放眼关河纷故垒〔2〕 ,惊心风物逼新秋。 +杜康台在烟云里,一醉江头狎白鸥。 +——选自《正彝堂集》 +【注释】 +〔1〕荆襄:指《三国演义》中的“荆襄九郡”。自古以来的 +兵家必争之地。 +〔2〕故垒:古战场遗址。 +【译文】 +夕阳西下的时候, 我登上了襄阳城楼。这莽莽苍苍的荆襄大地, +自古以来,就是兵家必争之地。青翠的岘山倚窗可见,汉江绕着襄 +阳城流着。一眼望去,可以看到很多历史留下的军事堡垒。四周的 +景物显示着秋天到了,时光的流逝让人心惊。我要到那烟云弥漫的 +杜康台上去,喝醉了酒,去江边亲近白鸥。 +消寒十咏 思佳客 其八 煮酒 +清·鲍之芬 +【原文】 +酝酿糟仙〔1〕 学杜康,生嫌味烈熟尤芳。 +银屏金鼎谙时煮,黄菊青梅别样香。 +寒可敌,醉堪乡。不愁斗费十千偿。 +100 | 酒祖杜康 ·诗酒文化品牌 | 101\n===== PAGE 56 =====\n| 酒祖承源 杜康留香 | +需时惯把貂裘换,风雪床头一瓮藏。 +【注释】 +〔1〕酝酿糟仙:学习试验酿酒。 +【译文】 +学杜康酿酒,刚酿出时味道燥辣浓烈,放置一段时间后,醇厚 +柔和,特别芳香。在镶银的屏风间,用精美的酒具煮酒,菊香,梅 +香氤氲,香味独特诱人。 +酒可以抵御寒冷,沉醉在这浓浓的氛围中,不用发愁酒价贵。 +在这风雪交加的寒冬,想喝酒而无钱时习惯用貂皮大衣去换一瓮放 +在床头。 +杜康墓踏秋谢高荦生招饮 +清· 汪廷桂 +【原文】 +酒酣放步踏青山,奚囊〔1〕 未许秋风间。 +出笼野鹤不受缚,萧然行经〔2〕 非人閒。 +杜康池〔3〕 上满秋草,芒鞋落地青莎倒。 +石碣〔4〕 深深不可扪,清冷一曲芦花老。 +先生造酒复善饮,放杯一旦事沈寝〔5〕 。 +朝霞夕霏千载红,芙蓉城郭空如锦。 +何不破醉凌波来,十千〔6〕 沽酒相徘徊。 +区区餔歠〔7〕 我亦解,拍肩把臂糟邱台。 +先生不醒我亦醉,树根路入斜阳坠。 +眼前樵牧都忘机,短犁比犊耕山翠。 +竹林深处持竿人,钓钩不直衔金鳞。 +买归烹治复置酒,陶然留作无边春。 +——选自《微月清光之室古今体诗》 +【注释】 +〔1〕奚囊:本指诗囊,这里指作诗的冲动,诗情。 +〔2〕萧然行经:无拘无束,徜徉在天地间。 +〔3〕杜康池:杜康墓前边的泉池。 +〔4〕石碣:这里指杜康墓碑。 +〔5〕沈寝:沉醉。 +〔6〕十千:指一万钱。 +〔7〕餔歠:指饮酒。 +102 | 酒祖杜康 ·诗酒文化品牌 | 103\n===== PAGE 57 =====\n| 酒祖承源 杜康留香 | +【译文】 +酒喝得兴致盎然,大步迈向青山。在这金秋时节,怎许诗囊空 +空?就像出笼的野鹤,无拘无束,徜徉在天地之间。 +杜康墓边的池塘上长满了秋草,草鞋一踏,青莎就倒下了。杜 +康墓碑被掩在稠密的乱草间, 伸手抚摸不到, 芦花衰败, 清清冷冷。 +先生您是酿酒的祖师,更善饮酒,敞开胸怀,沉醉于酒中吧! +天边早晚的云霞如醉后的脸庞,可与满池的荷花媲美,灿若云锦。 +为什么不驾船而来一醉,万钱的酒任流连。 +我明白喝酒的趣味,让我们手把手,肩拍肩, 一起喝它个天塌 +地陷。让我们喝到日落西山,昏天地暗。 +眼前打柴放牧的皆为素心人,赶牛扶犁正在翠绿的山间耕田。 +竹林深处的水边,有人正在持竿钓鱼。我们把这鱼买了回去,好好 +做几道菜,置几壶酒,高高兴兴,挽住这无边的春色。 +遣 兴 +清· 刘慎荣 +【原文】 +万感方难去,临时忽又秋。 +山河充浩气,天地寄孤舟。 +击楫〔1〕 情弥烈,倾杯思更愁。 +如何古乐府〔2〕 + ,惟彼杜康求。 +——选自《漱芳轩诗集》 +【注释】 +〔1〕击楫:借引祖狄击楫中流的故事。典出《晋书 ·祖逖传》: +“( 逖 ) 仍将本流徙部曲百馀家渡江,中流击楫而誓曰: ‘祖逖不 +能清中原而复济者,有如大江!’” +〔2〕古乐府:指魏武帝曹操的乐府诗《短歌行》。 +【译文】 +忽然之间,秋又来临,心中的种种忧愁难以祛除。山川河流, +充满了浩然之气。而自己栖居在天地之间,如同一叶行踪不定的小 +船,像祖逖那样壮志难酬,击楫中流。端以酒杯,以酒浇愁,可愁 +更愁。 +古乐府中对人生的慨叹正好道出了我的心胸。罢罢罢,找杜康 +美酒,找杜康美酒, 一醉解千愁。 +104 | 酒祖杜康 ·诗酒文化品牌 | 105\n===== PAGE 58 =====\n| 酒祖承源 杜康留香 | +和夫子酬江太守原韵即以写怀 其二 +清·姚倚云 +【原文】 +少日韶光去,临妆惜镜台。 +春莺愁里听,秋雁梦中哀。 +纵有回文思,终输作赋才。 +一尊杜康酒,悲喜几回来。 +——选自《蕴素轩诗稿》 +【译文】 +年轻时的好日子一去不复返,每当照镜子,常慨叹容颜不如往 +昔。 +春恨听莺,秋悲听雁。即使有高妙的文才,奈何时运不济。这 +一杯尊贵的杜康酒啊!让人喜了几回,又让人悲了几回? +居赤嵌一载矣 计日有感 +(此诗又载六十七《使署闲情》) +清·孙元衡 +【原文】 +心迹经年两自嗤〔1〕 ,一官寒瘦一编诗。 +踌躇生理流光速,展转归期去日迟。 +瘴气潜闻花放后,潮声盈听月明时。 +杜康功用真微妙,天地蜉蝣〔2〕 总不知。 +——选自《赤崁集》卷二(丙戌) +【注释】 +〔1〕自嗤:自我嘲讽。 +〔2〕蜉蝣:一种小昆虫。 +【译文】 +这一年的思想与行为都留下了些什么,想一想都感到可笑。在 +清冷的衙门作一介微官,留下了一卷诗。犹犹豫豫时,时光流逝, +106 | 酒祖杜康 ·诗酒文化品牌 | 107\n===== PAGE 59 =====\n| 酒祖承源 杜康留香 | +人已老大;辗辗转转中,回家的日期一再推迟。 +花开之后本想去赏花,可隐隐约约,听说有瘴气也就作罢。 +月圆之夜,满耳潮声,难以入眠。一杯杜康美酒下肚,奇妙无 +比,让人忘却忧愁,忘记个人的渺小。 +饮潭西精舍 +清· 刘大观 +【原文】 +释子结茆处,潭深有卧龙〔1〕 。 +梵余〔2〕 云绕户,棋罢月凝松。 +人与鹤俱静,闲为天所容〔3〕 。 +我携杜康酒,花下偶相从。 +——选自《玉磬山房集》卷二 +【注释】 +〔1〕释子结茆处:僧人结茅庐居住的地方。 +〔2〕梵余:念完佛经。 +〔3〕闲为天所容:上天允许过闲适的生活。 +【译文】 +僧人结茅庐的这地方,潭水清幽,让人心中的种种忧愁烦恼全 +都消失。 +念完佛经,下完棋,云绕房前屋后,月照松树上下。人与鹤都 +安闲自在,享受这天然的清静。 +我带着杜康美酒,在这花下, 一起相乐。 +108 | 酒祖杜康 ·诗酒文化品牌 | 109\n===== PAGE 60 =====\n余寄钱容斋以新构之诗, +容斋报余以夙储之酒,事何韵也! +更赋截句八首,驰往夷门 其二 +清· 刘大观 +【原文】 +太白〔1〕 + 先应浮〔2〕 + 杜康,初开酿法制糟床。 +老夫不受人驱遣,却被招遥入醉乡。 +——选自《玉磬山房集》 +【注释】 +〔1〕太白:即大白,这里指大酒杯。 +〔2〕浮:用满杯酒罚人。 +【译文】 +大杯的酒应该先敬酒祖杜康,因为杜康最早发明酿制了秫酒。 +我从来不遭人使唤、派遣,但却不知不觉地被杜康招进了醉乡。 +| 酒祖承源 杜康留香 | +辽东方物十咏 其七 回糟酒 +清· 刘大观 +【原文】 +存液去其糟,酿此忘忧物〔1〕 。 +黄金铸杜康,胜拜西方佛。 +——选自《玉磬山房诗集》卷三 +【注释】 +〔1〕忘忧物:酒的别称。 +【译文】 +存取精华,去其糟粕。酿造了这让人忘忧的神奇之物。用黄金 +铸造一尊杜康像来祭拜,胜过崇拜西天的那个佛。 +110 | 酒祖杜康 ·诗酒文化品牌 | 111\n===== PAGE 61 =====\n| 酒祖承源 杜康留香 | +壶园春晚杂兴五章呈徐编修师宝善 +其二 +清·姚燮 +【原文】 +薇枝摇绀云〔1〕 ,静日转光翠。 +其影当砚屏〔2〕 ,能使墨华媚。 +外动沈希微,幽窗惬晨睡。 +青巉〔3〕 万笏云,梦与天界邃。 +抽掣流霞鞭,尘驹几疲悴。 +气及牛口伸,封已马鬣遂〔4〕 。 +块扎无厈厓〔5〕 ,益知葆冲粹。 +我怜屈子醒,难傲杜康醉。 +——选自《大梅山馆集》 +【注释】 +〔1〕薇枝摇绀云:蔷薇枝上缀满了花朵。 +〔2〕砚屏:指书房的窗户。 +〔3〕青巉:陡峭的山峰。 +〔4〕马鬣遂:指“马鬣封”,二十四山葬法之一。 +〔5〕块扎无厈厓:典出汉代贾谊的《块扎赋》。意即:万物 +变化运转,漫无边际。形与气互相移转连续变迁蜕化,精微深远, +没有穷尽。 +【译文】 +蔷薇枝上缀满了花朵,望去像一片深红的云,阳光静静地照在 +泛着光泽的绿叶上,一点点移动。这红云翠色映照在我的书窗上, +使我的书房顿添一份靓丽。 +窗外一点响动都听得到,我在床上睡得心满意足。朦朦胧胧中 +看到一座座青山直入云霄,似乎与天上的世界相通,我驾着车,用 +流霞作鞭抽打着拉车的马。 +尘世上有多少人感到疲惫憔悴。生活压得人喘不过气来,等到 +终于能喘一口气了,也该入坟墓了。万物变化,精微深远,追名逐 +利,何时是个头啊!罢罢罢,我终于明白了:可怜屈原就是因太过 +清醒,才忍受人间的百般痛苦。怎么比得上喝杜康美酒大醉一回呢 ! +112 | 酒祖杜康 ·诗酒文化品牌 | 113\n===== PAGE 62 =====\n| 酒祖承源 杜康留香 | +杜 康 宅 +清· 缪新 +【原文】 +古寺荒凉烟雨中,杜康遗宅〔1〕 尚蒙笼。 +花边恍对飞觞月,水面应多酿酒风。 +到处可栖成逸趣,此明不减亦奇功。 +刘伶衡宇闻临近,曲枕千秋臭味同。 +——《旧德集》卷五 +【注释】 +〔1〕杜康遗宅:地名,位于杜康造酒遗址的杜康村。 +【译文】 +千年古老的杜康祠行人寥寥,杜康遗宅朦胧于烟雨之中。看到 +花就恍惚觉得当年杜康曾在这里月下品酒。水面的风也挟裹着酿酒 +的气味。自古至今,这里逸趣横生,祭祀不绝,也算人间奇迹。听 +说附近有刘伶遗迹,他们志趣相投,以酒结友,成千古佳话。 +过钱玉友河亭话旧二首 +时已收身奉佛但未废饮耳 +( 其二 ) +清初· 查愼行 +【原文】 +不爱天花作道场,万缘消尽酒难忘。 +从今方丈维摩室〔1〕 ,添瓣清香祀杜康。 +——选自《敬业堂诗集》卷三十四 +【注释】 +〔1〕维摩室:禅室。 +【译文】 +虽然已经信奉佛法,但不喜欢天女散花的道场。俗世的一切都 +可割舍,唯独割舍不了酒。就在方丈大小的禅室内,用一炷香来祭 +祀杜康。 +114 | 酒祖杜康 ·诗酒文化品牌 | 115\n===== PAGE 63 =====\n| 酒祖承源 杜康留香 | +薄薄酒 +清·赵执信 +【原文】 +薄薄酒,胜茶汤,不信试酌与君尝。 +云阴月黑旅夜长,孤灯照梦隔故乡,轻寒被体如雪霜。 +此时细引不成醉,栩栩自觉春风香。 +拟陪瑶池宴,髙冠揖穆皇〔1〕 。 +玉女八九人,紫霞〔2〕 劝天浆。 +不然沉香亭,戏草清平章〔3〕 。 +玉手玻瓈碗〔4〕 ,葡萄艳晶光。 +人生待此始痛饮,便应长跪辞杜康。 +借使昔游曾快意,梦之帝所安可常。 +——选自《因园集》卷三 +【注释】 +〔1〕穆皇:指周穆王在瑶池畔陪王母娘娘喝酒的故事。 +〔2〕紫霞:指盛酒的紫霞杯。 +〔3〕清平章:借指李白的《清平乐》。 +〔4〕玻碗:玻璃碗。 +【译文】 +再淡的酒,也比茶好。不信倒一杯你尝尝。黑暗阴冷的夜晚, +出门在外,在如豆的孤灯下,屈身于冰冷的被褥中,一做梦就是老家。 +这时候如果慢慢喝几杯酒,似醉非醉,如同沐浴在温香的春风 +里。 +打算上天宫,在瑶池畔,像周穆王那样陪王母娘娘喝酒。八九 +个仙界玉女奉陪,用紫霞杯劝饮玉液琼浆。或者在沉香亭畔,像李 +白那样,有贵妃倒酒,写《清平乐》那样的华章。 +纤纤玉手端着玻璃碗,碗中盛着闪闪发光的酒液。人这一辈子 +如果能到达这种境界,就应长跪不起,感谢杜康造了这神奇之物, +如果以前曾有大快人心的经历,我也不会做梦陪王母、伴玉帝 +喝酒了。 +116 | 酒祖杜康 ·诗酒文化品牌 | 117\n===== PAGE 64 =====\n| 酒祖承源 杜康留香 | +沁园春 题罗两峰《鬼趣图》 +第四幅,一鬼台背折腰, +捧斗酒,一鬼卓杖立 +清· 汪端光 +【原文】 +终日昏昏,每有良朋,招余醉乡。 +恨杜康手艺,偏多鸩毒,刘伶口泽,艳说仙方。 +舞尽傲傲〔1〕 + ,鼓休坎坎,冥判掀髯〔2〕 + 进此觞。 +清明后,正九泉枯渴,一滴争尝。 +六千三万欢场,使性乱情迷暗自伤。 +闻驱愁浮白,伊原〔3〕 无闷,称雄酌斗,尔为谁强? +祸起杯中,疑团壶里,人世弓蛇〔4〕 摁不妨。 +何时醒,笑中山千日,无几年光。 +——选自《丛睦山房未刻诗稿》 +【注释】 +〔1〕傲傲 :东倒西歪,站立不稳。 +〔2〕掀髯:拉起胡须。 +〔3〕伊原:俗称阴间。 +〔4〕弓蛇:指杯弓蛇影的故事。 +【译文】 +整天昏昏沉沉,常有好友招我饮酒,一饮即醉。可恨杜康造了 +这酒,像那穿肠的毒药,可刘伶喝了,却美其名曰玉液琼浆。 +喝得东倒西歪,鼓不再敲了。判官抢了一杯酒一饮而尽。清明 +节后,正是阴间缺酒的时候,只要有一点点就争着品尝。喝了一百 +年,让自己性情迷乱,徒自悲伤。 +听说酒能消愁,阴间没有愁闷,你们这些鬼也斗酒争强,所为 +何事?杯弓蛇影的事,人世间太多,防不胜防。能让人醉千日的美 +酒,饮了之后,何时醒来,无光的阴间太无聊。 +118 | 酒祖杜康 ·诗酒文化品牌 | 119\n===== PAGE 65 =====\n| 酒祖承源 杜康留香 | +经典十首劝酒诗 +《短歌行》 +东汉· 曹操 +对酒当歌,人生几何?譬如朝露,去日苦多。 +慨当以慷,忧思难忘。何以解忧?唯有杜康。 +青青子衿,悠悠我心。但为君故,沉吟至今。 +呦呦鹿鸣,食野之苹。 我有嘉宾,鼓瑟吹笙。 +明明如月,何时可掇?忧从中来,不可断绝。 +越陌度阡,枉用相存。 契阔谈讌,心念旧恩。 +月明星稀,乌鹊南飞。绕树三匝,何枝可依。 +山不厌高,海不厌深。周公吐哺,天下归心。 +《送元二使安西》 +唐· 王维 +渭城朝雨浥轻尘,客舍青青柳色新。 +劝君更尽一杯酒,西出阳关无故人。 +《将进酒》 +唐· 李白 +君不见,黄河之水天上来,奔流到海不复回。 +君不见,高堂明镜悲白发,朝如青丝暮成雪。 +人生得意须尽欢,莫使金樽空对月。 +天生我材必有用,千金散尽还复来。 +烹羊宰牛且为乐,会须一饮三百杯。 +岑夫子,丹丘生,将进酒,杯莫停。 +与君歌一曲,请君为我倾耳听。 +钟鼓馔玉不足贵,但愿长醉不复醒。 +古来圣贤皆寂寞,惟有饮者留其名。 +陈王昔时宴平乐,斗酒十千恣欢谑。 +主人何为言少钱,径须沽取对君酌。 +五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。 +120 | 酒祖杜康 ·诗酒文化品牌 | 121\n===== PAGE 66 =====\n| 酒祖承源 杜康留香 | +《问刘十九》 +唐·白居易 +绿蚁新醅酒,红泥小火炉。 +晚来天欲雪,能饮一杯无? +《月下独酌四首 ·其一》 +唐· 李白 +花间一壶酒,独酌无相亲。 +举杯邀明月,对影成三人。 +月既不解饮,影徒随我身。 +暂伴月将影,行乐须及春。 +我歌月徘徊,我舞影零乱。 +醒时同交欢,醉后各分散。 +永结无情游,相期邈云汉。 +《简卢陟》 +唐·韦应物 +可怜白雪曲,未遇知音人。 +恓惶戎旅下,蹉跎淮海滨。 +涧树含朝雨,山鸟哢馀春。 +我有一瓢酒,可以慰风尘。 +《凉州词》 +唐·王翰 +葡萄美酒夜光杯,欲饮琵琶马上催。 +醉卧沙场君莫笑,古来征战几人回? +122 | 酒祖杜康 ·诗酒文化品牌 | 123\n===== PAGE 67 =====\n| 酒祖承源 杜康留香 | +《水调歌头 · 明月几时有》 +宋· 苏轼 +丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由。 +明月几时有?把酒问青天。 +不知天上宫阙,今夕是何年。 +我欲乘风归去,又恐琼楼玉宇,高处不胜寒。 +起舞弄清影,何似在人间? +转朱阁,低绮户,照无眠。 +不应有恨,何事长向别时圆? +人有悲欢离合,月有阴晴圆缺,此事古难全。 +但愿人长久,千里共婵娟。 +《寄黄几复》 +宋·黄庭坚 +我居北海君南海,寄雁传书谢不能。 +桃李春风一杯酒,江湖夜雨十年灯。 +持家但有四立壁,治病不蕲三折肱。 +想见读书头已白,隔溪猿哭瘴溪藤。 +《望江南 ·超然台作》 +宋· 苏轼 +春未老,风细柳斜斜。 +试上超然台上看,半壕春水一城花。 +烟雨暗千家。 +寒食后,酒醒却咨嗟。 +休对故人思故国,且将新火试新茶。 +诗酒趁年华。 +124 | 酒祖杜康 ·诗酒文化品牌 | 125 \ No newline at end of file diff --git a/scripts/_pdf_extract/qingxiang.txt b/scripts/_pdf_extract/qingxiang.txt new file mode 100644 index 0000000..b2ae811 --- /dev/null +++ b/scripts/_pdf_extract/qingxiang.txt @@ -0,0 +1,1030 @@ +\n===== PAGE 1 =====\n杜康清香宝典\n===== PAGE 2 =====\n第一章:杜康清香项目介绍 +一、清香是未来白酒行业的黄金赛道 ……………………… / 02 +二、杜康清香项目介绍……………………………………… / 02 +三、杜康清香的模式介绍…………………………………… / 03 +四、杜康清香的价值观……………………………………… / 05 +五、杜康清香的定位………………………………………… / 05 +六、杜康清香的使命………………………………………… / 05 +第二章 : 杜康清香的产品素养 +一、品牌传播体系 …………………………………………… / 07 +二、杜康清香风格特点……………………………………… / 07 +三、杜康清香五大法宝……………………………………… / 08 +四、杜康清香品评方法……………………………………… / 08 +五、杜康清香的独特之处…………………………………… / 09 +六、喝杜康清香更有故事…………………………………… / 09 +目录\n===== PAGE 3 =====\n七、杜康清香的设计亮点…………………………………… / 10 +第三章 : 杜康清香的品鉴玩法 +一、“抿、咂、呵”三部曲 ………………………………… / 12 +二、地动山摇…………………………………………………… /12 +三、肌肤相亲………………………………………………… / 12 +四、酒王大赛………………………………………………… / 13 +五、看酒花 观挂杯 ………………………………………… / 13 +六、背标法…………………………………………………… / 13 +第四章 : 杜康清香的三级沉浸式体验体系 +一、场景体验是用户快速认知的重要武器 ………………… / 16 +二、场景体验是制造口碑、传播引爆的发源地…………… / 16 +三、杜康清香三级沉浸式体验体系………………………… / 16 +四、杜康清香沉浸式体验的五个一………………………… / 17 +第五章 : 品鉴会操作宝典 +一、品鉴会注意事项 ………………………………………… / 19 +二、品鉴会操作细节………………………………………… / 19 +三、客户邀约及前期准备…………………………………… / 20 +四、开餐的三个步骤………………………………………… / 20 +五、开餐共饮 6 杯酒………………………………………… / 21 +六、鱼头酒的新喝法………………………………………… / 21 +七、用餐过程中品牌体验内容巧妙植入…………………… / 21 +八、领导总结 品鉴结束 欢送客人 ……………………… / 22 +第六章:杜康清香文化馆体验流程 +一、邀约对象 ………………………………………………… / 24 +二、体验流程………………………………………………… / 24 +三、文化讲解………………………………………………… / 25 +四、观看杜康清香宣传片…………………………………… / 29 +五、白酒的鉴赏玩法………………………………………… / 29 +六、DIY 自调酒 …………………………………………… / 29 +七、厂区体验内容…………………………………………… / 29 +第七章 : 山西杜康酒厂文化溯源之旅 +一、参与对象 ………………………………………………… / 34 +二、时间及行程安排………………………………………… / 34\n===== PAGE 4 =====\n第八章 : 封坛(封坛仪式) +一、净手 ……………………………………………………… / 36 +二、拜酒祖…………………………………………………… / 36 +三、鸣金锣…………………………………………………… / 36 +四、签名……………………………………………………… /3 7 +五、品酒……………………………………………………… /37 +六、封坛……………………………………………………… /47 +第九章 : 杜康清香合伙人模式及用户运营 +一、门店 1+9+N 合伙人模式 ……………………………… / 39 +二、门店 399 分销模式 ……………………………………… / 39 +三、门店的关系资源………………………………………… / 39 +四、门店老板的圈层………………………………………… / 39 +五、社群运营………………………………………………… / 40 +六、大客户赋能专案………………………………………… / 40 +七、门店运营流程…………………………………………… / 40 +八、加盟店的招商投资形式………………………………… / 40 +第十章:杜康清香 36 问 +………………………………………………………………… / 43\n===== PAGE 5 =====\n杜 +康 +清 +香 +酒 +项 +目 +介 +绍 +第 +一 +章\n===== PAGE 6 =====\n一、清香是未来白酒行业的黄金赛道 +当前白酒行业存量竞争加剧,浓香内卷、酱酒热度回落,清香型 +凭借硬核数据支撑,成为确定性极强的黄金赛道。 +其一,市场增速领跑全行业,2024 年清香白酒市场规模突破 +1000 亿元,同比增长 13%,行业利润达 350 亿元,年复合增速维持 +8%-10%,远超浓香、酱酒平均增速。 +其二,消费群体持续扩容,2025 年清香型消费者偏好度达 45.6%, +首次超越酱香 43.04%、浓香 41.76%,年轻群体接受度大幅提升,新 +兴场景销量占比提升至 8%。 +其三,工艺成本优势显著,清香发酵周期仅 28 天,出酒率达 +40%,远高于酱酒 20%、浓香 33%,产能周转快、渠道利润空间更高。 +其四,全国化潜力巨大,清香口感普适无地域壁垒,预计 2030 年 +市场规模突破 2400 亿元,行业占比提升至 19%,是未来 5-7 年白酒最 +优增长赛道。 +二、杜康清香项目介绍 +山西杜康酒厂有限公司是酒祖杜康集团旗下以清香酒品类为主营 +业务,集生产、经营、销售于一体的全资股份制公司,公司位于闻名遐 +迩的千年酒都--山西杏花村,与生产驰名中外的中国四大名酒汾酒的山 +西杏花村汾酒集团仅一墙之隔。公司前身是始创于1986年的“汾阳市杏 +花村杏蕊酒厂”,2009年公司更名为“山西杏花村宝泉涌有限责任公司” +,是山西杏花村汾酒集团旗下的国有控股企业。 +2019年完成私有化改制,2025年初与酒祖杜康集团强强联合,成立了“山 +西杜康酒厂有限公司”。 +三、杜康清香模式介绍 +杜康清香模式是以杜康文化为道场,以沉浸式体验为营销主线, +以社群圈层为主的生意、生活与社交平台。即杜康清香的四个一工 +程:一个杜康文化馆,一瓶杜康美酒,一桌杜康美食,一群杜康粉 +丝的圈层运营模式。 +面积 100-200 平, +投 资 60-100 万, 沉 浸 +式杜康文化体验模式。 +| 杜 康 清 香 一 清 到 底 | +1、杜康清香沉浸式体验店 +门店效果图 : +2 | 杜康清香·诗酒文化品牌 | 3\n===== PAGE 7 =====\n四、杜康清香的价值观 +成消费之美,让消费者共享高品质美酒; +成客户之美,化商为亲,让合作伙伴持续赚钱; +成员工之美,让员工成长,共享发展成果; +成股东之美,让投资人有良好的投资收益。 +五、杜康清香定位 +企业定位:承千年清韵,铸清香白酒标杆企业。 +品质定位: 守古法清酿,酿纯粹绵柔清雅好酒。 +品牌定位:传酒祖清魂,塑高端清香文化名酒。 +营销定位:拓清香赛道,引全民清雅饮酒新风尚。 +六、杜康清香的使命 +坚守纯粹品质,悦享清逸人生。 +面积 10-30 平,投资 10-15 万,深度植入茶馆、会 +所、高端餐饮 ,低成本营销推广。 +面积 50-100 平,投资 40-50 万,标准型、经济型杜 +康文化体验。 +2、杜康清香标准店 +3、杜康清香联名店 +| 杜 康 清 香 一 清 到 底 | +4 | 杜康清香·诗酒文化品牌 | 5\n===== PAGE 8 =====\n一、品牌传播体系 +传播语:千年杜康,醉美清香! +品牌传播的三个维度: +1、行业表达:领航清香白酒黄金赛道。 +2、用户感受:雅致舒适悦享饮酒体验。 +3、消费口碑:纯粮清香铸就国民佳酿。 +二、杜康清香酒风格特点 +粮香纯正无杂味,清香干净通透,不刺鼻不浓烈,闻着清爽舒服。 +入口绵柔顺滑,酒体纯净,无厚重焦糊感,落口爽利干脆。杂醇含量低, +不口干不上头,醒酒快,适配日常小酌、宴席多场景。 +入口绵柔顺滑,酒体温润不烈,适口易饮,层次柔和绵长。 +酒体纯净通透,粮香清雅纯粹,一清到底,无杂味不刺鼻。 +香气雅致内敛,格调温润高级,适配多场景,从容有质感。 +杜康清香采用三种原料(大麦、豌豆、高粱) ,采用清香“7321” +酿造工艺,讲究“清蒸二次清”和“一清到底”, 味道更醇厚。 +第 +二 +章 +杜 +康 +清 +香 +的 +产 +品 +素 +养 +绵 + +净 +雅 + | 杜康清香·诗酒文化品牌 | 7\n===== PAGE 9 =====\n三、杜康清香五大法宝 +产地:扎根杏花村千年酿酒圣地,距 800 年非遗老作坊不足千 +米,与汾酒厂仅一墙之隔,同享专属微生物菌群生态。 +八同:实现与清香头部名牌企业同宗源、同产区、同水源、同原 +粮、同酒曲、同匠心、同技艺、同勾调,对标一线清香品质标准, +并通过纯粮固态发酵白酒认证,行业认可度高。 +产能:拥有万亩红粱,万吨制曲、万吨储存、万吨产能规模,优质 +老酒资源丰富,供货稳定,品质可控。 +团队:深耕清香酿造数十年的29名中高级酿酒师,传承杏花村 +匠心,严控全链路品控。 + 资本:作为杜康集团专业做清香赛道的全资子公司,共享集团强 +大资本资源优势,且品牌积淀深厚,商标体系完整,抗风险能力强。 +四、杜康清香酒品评方法 +1、观色:举杯齐眉观酒色,色泽清澈又透亮。轻轻旋转小酒 +杯,杯壁挂满美人泪。 +2、闻香:勾头倾杯闻酒香,四指轻扇吸芬芳。曲香粮香纯正 +清雅,无杂味,香气干净清爽,缕缕香韵绕鼻间。 +闻香时要遵循三个统一,即倒酒的容量一样(10ml),杯子 +到鼻子的距离一样(3cm),闻香的时间一样(不超过 3 秒)。 +3、品味:小口慢饮,入口绵柔顺滑,落口爽利,一清到底。 +细品慢咽品酒味,入口绵柔又顺滑,幽雅细腻回味长。 +入口量约 3ml,让酒液铺满舌面,分段感知。前段:冲击力温 +和,粮香清雅散开,干净不刺激;中段:滋味纯净清爽,甜味 +柔和突出,酒体利落通透,无杂味;后段:落口爽利干脆,余味 +干净悠长,粮香淡淡回甘。 +4、体感:饮后舒适,不口干不上头,回味干净悠长。诸香协 +调味道美,醇厚柔顺真舒适。 +五、杜康清香酒的独特之处 +1、历史悠久:始于五千 年前空桑酿酒,是中国秫酒的源头。 +2、地缸工艺:采用地缸发酵,清蒸二次清,一清到底。 +3、酒质更优:采用7321工艺,与汾酒八同,酒质有保障。 +4、口感独特: 入口绵柔顺滑,落口爽利,一清到底。 +5、饮后舒适:不刺喉、不上头、醒酒快。 +6、愉悦体验:自动自发,主动举杯,带给人身体兴奋、情绪 +释放、精神满足的快乐感受。 +六、喝杜康清香酒更有故事 +1、杜康醉刘伶传说:天下好酒数杜康,酒量最大数刘伶,饮 +了杜康酒三杯,醉了刘伶三年整。 +2、曹操《短歌行》中“何以解忧?唯有杜康”。让杜康成为 +中国白酒的代名词,成为流传 2000 年的千古绝唱。 +| 杜 康 清 香 一 清 到 底 | +8 | 杜康清香·诗酒文化品牌 | 9\n===== PAGE 10 =====\n3、总理亲自批示: 1972 年,周恩来总理作出“复兴杜康,为 +国争光”的伟大批示。 +4、日本首相赞誉: 1972 年日本首相田中角荣访华,当着周总 +理的面背诵短歌行, 还风趣地说,“总理啊, 天下美酒,唯有杜康”。 +5、省委书记推荐:原河南省委书记卢展工在全国两会上多次 +推荐河南两个名片:一是杜康酒;二是信阳毛尖。 +6、国宴用酒: 1988 年杜康酒被定为国宴用酒和馈送外宾礼用 +酒。 +7、十大文化名酒:2001 年,杜康荣获“中国十大文化名酒” +称号。 +8、大清香时代:十四五”期间,清香白酒的市场规模将突破1300 +亿元,行业占比由15%上升至20%以上,大清香时代已经来临。 +七、杜康清香的设计亮点 +杜康清香,借鉴了西方铜版画艺术风格,创造属于杜康-清香型系 +列产品的视觉语言,此符号将运用于所有清香系列产品之中,成为杜康 +-清香型体系的专属符号及视觉锤! +杜康清香采用杜康空桑秽饭故事为原型,使酒祖杜康形象更加深 +刻,加上杏花村元素,杜康清香特征非常明显。 +杜 +康 +清 +香 +酒 +的 +品 +鉴 +玩 +法 +10 +| 杜 康 清 香 一 清 到 底 | +第 +三 +章\n===== PAGE 11 =====\n一、“抿、咂、呵”三部曲 +1、“抿”——轻触舌尖,品清柔本味 +取微量酒液轻点舌尖,静心慢品如清泉化开。舌尖感受清甜粮香, +舌侧微带清爽果酸,舌根余味干净柔和,无厚重苦涩。 +2、“咂”——轻含慢品,尝一清到底 +小口含酒约 5ml,浸润唇齿停留 3 秒缓缓下咽。入喉温润顺滑, +无刺激灼烧;闭口回香,透出纯粹粮香,清雅干净不杂乱。 +3、“呵”——轻缓哈气,嗅净雅余韵 +下咽后轻缓哈气,细闻口鼻间香气。清香酒余味澄澈,尽显纯粹粮 +香与淡雅陈韵,无杂味浊气,回味清爽悠长。 +二、地动山摇(摇酒法) +通过快速摇动酒瓶,静止后观看酒瓶内酒花的细密均匀度和消 +失时间长短来判断酒质的优劣。酒花细密均匀如小米,数量越多越 +好,酒花消失时间越长越好。 +三、肌肤相亲(手搓法) +将酒液滴在掌心几滴,双手合起来旋转揉搓,待手掌发热停止 +后闻掌心酒液,好酒有曲香粮香和花香味,并且有黏黏的感觉。 +四、酒王大赛(盲品法) +1、多香对比:将浓(杜康浓香)、清(杜康清香)、酱(杜 +康酱香)、兼(杜康兼香)四种香型白酒编号进行盲品。 +2、清香对比:将两种汾酒清香型白酒和杜康清香分别编号进 +行盲品。 +3、酒王称号:以上猜得又对又快者为酒王。 +五、看酒花 观挂杯 +1、看酒花 +倒酒时缓缓抬高酒瓶,让酒液垂直落入酒杯,杯中就会形成密 +集的酒花,好酒的酒花细如小米,均匀分布,并且酒花存留的时间 +相对较长。 +2、观挂杯 +将酒倒入标准的郁金香酒杯, 倾斜酒杯 30度,让杯体旋转一圈, +然后将酒杯放在桌上。首先会在杯口下沿形成一道美丽的珍珠项链; +十几秒后,一道一道的酒珠会慢慢往杯底滑落,像美人泪痕,再停 +几分钟后,杯壁上会形成密集的小酒点,像满天星星一样。 +六、背标法 +随着国家对酒类管理越来越规范,酒的工艺品质标准其实从 +背标就可以看出来。一是查看执行标准,清香型固态发酵酒的国家 +| 杜 康 清 香 一 清 到 底 | +12 | 杜康清香·诗酒文化品牌 | 13\n===== PAGE 12 =====\n标准是 GB/T10781.2-2022, 如果是 GB/T20821-2007, 对不起, +这是液态发酵酒(即酒精酒)标准, 如果是 GB/T20822-2007, 则 +是固液混合酒标准。 +杜康清香的执行标准为 T/SXFIA001-2009(优级) ,这个标 +准代号是山西省食品工业协会发布的《清香型白酒》团体标准,团 +体标准要高于国家标准优级。 +杜 +康 +清 +香 +的 +三 +级 +沉 +浸 +式 +体 +验 +体 +系 +14 +| 杜 康 清 香 一 清 到 底 | +第 +四 +章\n===== PAGE 13 =====\n一、场景体验是用户快速认知的重要武器 +如何证明一款白酒是好酒 ? 不再是铺天盖地的广告,而是亲身 +体验。 一次亲身体验,可以胜过千言万语。 +二、场景体验是制造口碑、传播引爆的发源地 +1、场景具有“深体验、强认知、高传播”三个特点。 +2、体验可以让用户在现场感同身受,体验不是说产品好,而 +是让体验者自己证明产品好。 +3、场景可以聚集人气, 在触景生情的过程中产生了良好口碑。 +4、体验引发用户愉悦感和炫耀心理,就会自愿分享推荐,实 +现圈层内的高效传播。 +三、杜康清香三级沉浸式体验体系 +山西杜康酒厂酿酒文化溯源之旅(一级)——杜康酒文化馆( +二级)——杜康清香联名店(三级) +1、山西杜康酒厂酿酒文化溯源之旅 +通过参观酿酒车间、包装车间、体验店,汾酒遗址博物馆等, +体验酿酒工艺、感受老酒时光沉淀、探索杜康文化起源,参与交流 +互动等形式,让体验者多维度全面了解企业实力和历史底蕴,提升 +品牌信任度。 +2、杜康清香文化馆沉浸式体验 +杜康清香的文化元素复制到文化馆,再融入自调酒、封坛、一 +桌式品鉴等环节,亲身感受杜康清香的产品魅力,实现产品认知、 +品牌认可、文化认同。 +3、杜康清香联名店 123 式 +1 即一组货架陈列、 一个茶台、 一场微品会。 +2 即两个视频(品牌篇、企业篇)。 +3 即三本手册:酒祖杜康品牌文化手册、酒祖杜康诗词手册、 +杜康清香沉浸式体验手册。 +四、杜康清香沉浸式体验五个一 +一场杜康文化溯源之旅( 杜康酒香 · 汾阳古韵) +一座杜康清香文化馆(文化体验 · 共享平台 ) +一场杜康清香品鉴会( 杜康酒韵 · 雅集品鉴) +一个专属个性化定制(彰显尊贵 · 专属定制 ) +一群杜康清香粉丝(互动交流 · 资源共享 ) +| 杜 康 清 香 一 清 到 底 | +16 | 杜康清香·诗酒文化品牌 | 17\n===== PAGE 14 =====\n一、品鉴会注意事项 +1、品鉴会的本质:就是饭局,饭局就是对每个参与者都有价值。 +2、品鉴会是设计出来的, 遵循 532 原则, 50%在于用户结构, +30%在于品鉴互动,20%在于会后追踪。 +3、用户结构:124 组合,1 个 KOL(意见领袖)、2 个 KOC(关 +键用户)、4 个大 C(超级用户)。 +4、品鉴互动公式 = 身体 X 情绪 X 思维 +身体过程:感觉好、喝着好、喝后好; +情绪过程:醺得快、酣得长、醉得慢; +思维:通过体感和情绪过程,形成了独特认知,激发了现场情 +绪,留下了深刻印象。 +5、会后追踪, 夸赞酒桌表现, 回忆互动细节, 提升认知感受。 +6、围绕三共做文章 : 与客户共创、与现场共振、与用户共情。 +二、品鉴会操作细节 +1、开局不冷场, 中间不砸场,结束易收场。要提前进行安排, +由专人开场和收场,中间环节相互配合,引导转换话题,不闲扯不 +严重跑题,做好控场节奏。 +2、提前与邀约者确定关键人及活跃暖场人员,明确其角色扮 +演。和关系好的客户特别是转介绍客户要提前沟通到位,做好铺垫 +配合。 +品 +鉴 +会 +操 +作 +宝 +典 + | 杜康清香·诗酒文化品牌 | 19 +第 +五 +章\n===== PAGE 15 =====\n3、适量饮酒, 把控酒量,切忌拼酒和过量饮酒, 平均半斤最佳。 +三、客户邀约及前期准备 +( 一 )邀约流程 +1、列名单:将门店和个人的目标客户列名单。 +2、做组合:针对人员名单, 按 KOL(意见领袖)1 人、KOC(关 +键用户) 2 人、大 C(超级用户) 4 人,再加上门店三名参与人员, +合计 10 人。选对用户结构,决定了品鉴氛围和效果。 +3、电话预约:给客户打电话提前预约时间。 +4、门店预定:综合客户回复及空闲时间等情况,预定门店。 +5、品牌氛围及物料准备:相关品牌物料及沟通话题准备。 +提前了解客户的行业、职业等,进行人物画像,便于找共同话 +题,沟通融洽。 +(二)物料准备及人员分工 +1、财:提前做好费用预算; +2、物:准备易拉宝、三大手册、场景物料等; +3、时间和地点:最好提前一天确认和安排; +4、人员分工:3 人组合, 1 人负责陪客、1 人负责讲解, 1 人 +负责服务。 +四、开餐的三个步骤 +1、第一步:设计控场节奏,与 KOL 提前沟通本次品鉴目的。 +2、第二步:盲品环节,将两种清香酒(汾酒和汾阳王)和杜 +康清香共三款酒分别编号让客人盲品。 + 3、第三步:品酒环节,直奔主题,介绍杜康清香酒的设计 +亮点及酒体风格(具体话术内容见第一章)。 +五、开餐共饮 6 杯酒后,开始敬酒 +1、原则:自己多喝、客人少喝。 +2、方式:例如先喝两杯,然后每人敬一杯再共同碰一杯。 +3、依次轮流敬酒,中间穿插话语沟通交流。 +六、鱼头酒的新喝法 + 鱼头正对主宾位,由主宾喝鱼头酒,鱼头酒的喝法较多, +一般主陪可做引导,如一个中心,主宾先喝一杯,叫作一心 +一意,一帆风顺;两个左右逢源,左膀右臂,左拥右抱,主宾 +与左右邻居共同喝一杯;然后大家共同举杯共饮一杯,叫作众 +人拾柴火焰高,众星捧月,众志成城。接下来由主宾剪彩。 +七、用餐过程中品牌体验内容巧妙植入 +1、产品介绍(如包装、原料、工艺、历史、存放时间、产区、 +名师、酒体、口感等,参考产品素养灵活发挥)。 +| 杜 康 清 香 一 清 到 底 | +20 | 杜康清香·诗酒文化品牌 | 21\n===== PAGE 16 =====\n杜 +康 +清 +香 +酒 +文 +化 +馆 +体 +验 +流 +程 + +2、杜康品牌故事和山西酒厂文化旅游等。 +3、白酒的一些鉴赏玩法(如手搓法、摇酒花等) ,增加参与 +感和互动性。 +4、根据实际情况,加微信留电话,便于后期服务跟踪。 +5、自由沟通环节(话题如美食、养生、客户感兴趣的身边事)。 +八、领导总结 品鉴结束 欢送客人 +主陪及客人都敬完酒后, 由领导敬酒做总结, 品鉴会圆满结束。 +品鉴会时间控制在 2 小时以内,用餐完毕后品鉴发起人感谢客户的 +到来,宣布品鉴会结束;工作人员协助欢送客户退场(提醒客户不 +要忘了手机、钱包等贵重物品)。 +A、随手礼发放(根据实际情况而定)。 +B、客户欢送:要求送至车上,挥手告别; +C、安全确认:客户安全到家确认回复(电话、微信等)。 +22 +| 杜 康 清 香 一 清 到 底 | +第 +六 +章\n===== PAGE 17 =====\n三、杜康文化讲解 +1、一尊酒祖像: +杜康,既是地名、酒名,也是人名。杜康因为始酿秫酒,被后 +世尊为华夏酿酒鼻祖, 是中国酒文化的源头, 是中国白酒的代名词。 +2、 一幅画(空桑秽饭图): +杜康酒文化源自西晋江统的《酒诰》:酒之所兴, 肇自上皇,或 +云夷狄, 一曰杜康, 有饭不尽, 委余空桑, 郁积成味, 久蓄气芳,本 +出于此,不由奇方。酒树又称为神树,至今杜康造酒遗址公园内还 +生长一棵距今 2800 年的酒树,枝繁叶茂,生命力极强,见证杜康 +酒兴盛的发展过程。 +3、 一首诗歌(短歌行曹操画): +杜康酒因魏武帝曹操《短歌行》中的千古名句“何以解忧, +唯有杜康”,让杜康酒名扬天下。 +4、 一座杜康祠: +杜康因始创秫酒被称为酒祖,在唐宋时期杜康祠、杜康庙遍布 +全国各地,古代要敬酒祖、拜酒神都在杜康祠内祭拜,其中苏东坡 +一首“从今东坡室,不立杜康祀”的名诗流传至今。杜康造酒遗址 +公园内的杜康祠为当今规模最大、保留最完整的古建筑。 +5、 一份伟大的批示: +1972 年,周恩来总理作出“复兴杜康,为国争光”的伟大批示。 +自此,杜康走向复兴之路。 +序 号 +体验项目 +时 长 +1 +杜康文化讲解 +10 分钟 +2 +看杜康清香宣传片 +10 分钟 +3 +体验玩法(带领用户参与选择 2—3 +种鉴别玩法,如“抿、咂、呵”三品法、 +手搓法、盲品法等) +10 分钟 +4 +DIY 勾调酒(指导用户自调一瓶清 +香酒) +10 分钟 +5 +茶台喝茶聊天 +10—20 分钟 +6 +品鉴开席(盲品、上酒及品酒) +90—120 分钟 +7 +开局 6 杯酒 +8 +鱼头酒 +9 +品牌话题植入 +10 +领导总结 +11 +品鉴结束、送客 +一、邀约对象 +1、以门店合伙人和大客户为主。 +2、参与人员结构组合:即 KOL(意见领袖) 1 人,KOC(转 +介绍客户)2 人、大 C(大客户)4 人。合计客户 7 人左右。 +二、体验流程 +在参观体验、品鉴交流环节要由专人带领用户介绍讲解。 +| 杜 康 清 香 一 清 到 底 | +24 | 杜康清香·诗酒文化品牌 | 25\n===== PAGE 18 =====\n6、一个国宴荣耀: +1988 年 9 月,52 度杜康酒被外交部定为国宴用酒和馈送外宾 +礼用酒。 +7、文化地位: +自汉代到清代以杜康意象创作的诗词曲赋作者多达 108 位,如 +苏轼、白居易、杜甫等, 作品多达 138 篇,其中诗 105 篇、词 21 篇、 +曲 6 篇、赋 2 篇、其他文体 4 篇。 +8、杜康清香酒特征 +介绍杜康酒厂区域位置与汾酒是一墙之隔,讲解与汾酒的八同。 +讲解杜康清香的“清蒸两次清”的特点和“七必清”。 +9、山西杜康简介 +山西杜康酒厂是酒祖杜康集团旗下以清香酒品类为主营业务,集生 +产、经营、销售于一体的全资股份制公司,公司位于千年酒都——山西 +杏花村,与中国四大名酒——汾酒的山西杏花村汾酒集团仅一墙之隔。 +公司前身是始创于1986年的“汾阳市杏花村杏蕊酒厂”,2009年公司更名 +为“山西杏花村宝泉涌有限责任公司”,是山西杏花村汾酒集团旗下的 +国有控股企业。2019年完成私有化改制,2025年初与酒祖杜康集团强强联 +合,成立了“山西杜康酒厂有限公司”。 +10、杜康清香酒口感特点 +杜康清香酒前段酒体绵柔顺滑,冲击力温和,干净不刺激。 +中段甜味柔和突出,无杂味、一清到底。 +后段落口爽利干脆,余味干净悠长,粮香淡淡回甘,喉间舒适。 +11、清香白酒的发展趋势 +20 年前浓香型白酒黄金 10 年,成就了五粮液、剑南春、泸州 +老窖、洋河等品牌; +10 年前是酱香酒白银 10 年,崛起了茅台、习酒、国台、郎酒 +等品牌; +5 年前大清香复苏,进一步巩固汾酒、黄鹤楼的江湖地位; +未来白酒香型将是真正喝好酒的用户主权时代,大清香时代将 +成为第三大香型,超过清香型,也是行业的发展趋势。 +12、杜康清香项目介绍 +杜康清香项目是由杜康集团与山西杜康酒厂共同成立的专注于 +清香赛道的项目,该项目将以创建品牌为己任,高标准发展规划, +长周期发展布局,以创新模式为先锋,利用 8-10 年时间把杜康清 +香酒做到 10-20 亿销售规模,把杜康清香品牌打造成杜康集团旗下 +可持续发展、有竞争力,有影响力的高端清香品牌。 +13、杜康清香模式简介 +杜康清香项目以杜康文化为道场,以沉浸式体验为主线,打造 +以社群圈层为主的生意、生活与社交平台。即杜康清香的“四个一” +工程:一个杜康文化馆,一瓶杜康美酒,一桌杜康美食,一群杜康 +粉丝的圈层运营模式。 +14、杜康清香三类合作店 +A、杜康清香文化馆: 面积 100-200 平, 投资 60-100 万,沉 +| 杜 康 清 香 一 清 到 底 | +26 | 杜康清香·诗酒文化品牌 | 27\n===== PAGE 19 =====\n四、观看杜康清香宣传片 +两个宣传片(品牌篇、企业篇)时长共约 10 分钟,通过专题 +片的观看,让客户对杜康清香产品有更深的了解和认知。 +五、白酒的鉴赏玩法 +带领用户参与 2—3 种鉴别玩法,如“抿、咂、呵”三品法、 +手搓法、盲品法、背标法等,通过用户积极参与,提升体验的娱乐 +性,强化用户对产品的认知(具体操作方法参考第二章内容)。 +六、DIY 自调酒(引导亲手自调一瓶酒) +具体方法:比如 488ml 基础酒 +10ml 老酒 +2ml 调味酒 +1、准备一个大量杯, 加入 488ml 基础酒再加入 10ml 老酒,最 +后再加入 2ml 调味酒。进行混合搅动。 +2、将调好混合的酒倒至酒瓶内,压盖完成。 +3、用户在酒瓶标签空白处写上一句具有纪念意义的话语并签 +名。 +4、拍照留念。完成场景体验后,到品鉴餐叙。 +七、体验内容 +( 一 )开局 6 杯酒 +适用范围:杜康酒文化馆、主场主桌主位 +杜康清香体验店 10000+ +大型企业集团定制 1000+ +个性封坛企业 10000+ +杜康清香联名店 10000+ +16、杜康清香酒德 +极致品质,只做高质杜康美酒; +坚守诚信,产品永久包退包换; +为客户省钱,省掉一切渠道费用; +一次合作,终生朋友,永久分润收益。 +17、中国酿酒鼻祖杜康雕像 +杜康酿酒,香醉华夏五千年。 +18、杜康清香封坛承愿 +逢大事,封坛以志; +逢喜事,封坛以纪; +逢庆典,封坛以贺; +逢贵人,封坛以敬。 +浸式杜康文化体验模式。 +B、杜康清香标准创业店: 面积 50-100 平, 投资 40-50 万, +简约型杜康文化体验。 +C、杜康清香联名店:面积 10-30 平,投资 10-15 万,深度植 +入茶馆、会所、高端餐饮 ,低成本营销推广。 +15、杜康清香五年战略规划(2026——2030) +| 杜 康 清 香 一 清 到 底 | +28 | 杜康清香·诗酒文化品牌 | 29\n===== PAGE 20 =====\n(二)场景体验的四件套 +抛出亮点—自抬身价—限定时间—树立道德权威 +1、抛出亮点 +A、抛出一个亮点故事,点燃听众的认知热度。 +B、制造反转式的认知冲突, 熟悉 + 意外;熟悉即杜康是浓香, +意外即还有清香、酱香;不熟悉没有安全感,不意外没有新奇性。 +套用好莱坞电影的经典套路:首先说杜康有清香酒——然后说任何 +香型都有缺陷(浓香爆辣、酱香酸大) ,最后说杜康清香迎合趋势, +适口性强,对各种香型口感转化快,兼容并蓄,中和共融。 +2、自抬身价 +常见误区:降低身价,拉近与客户的距离,熟人看缺点。 +A、要和用户保持亲密无间的距离感,如果距离太近,会失去 +了神秘感,没有了尊重感。 +B、越放低姿态,越是难以达成共识。因为人的天性是渴求和 +重视难以得到的东西。 +常用话术:一夸产品:杜康是酒祖,传承了五千多年。杜康依 +然在不断创新,融合多香工艺,在奇方基础之上,又练成奇功。二 +夸参与人:能参加杜康清香的饭局,都不是一般人,这是召集人为 +你们申请的福利。 +3、限定时间 +A、品鉴讲解时间的限定:20 分钟内说服客户。 +B、给对方体验决策时间的限定:明确截止时间,让客户快速 +1、欢迎酒:有朋自远方来,不亦乐乎,在这个美好的季节, +迎来了……莅临杜康清香酒文化馆,我代表杜康清香团队对大家的 +到来表示热烈欢迎! +2、感谢酒:杜康清香是杜康集团核心战略品牌,定位于高端 +与大众化兼容的品牌,感谢大家对杜康清香品牌的关注和支持,感 +谢大家的阳光雨露能量加持! +3、逍遥酒:杜康清香酒品质特点是一清到底,一滴入魂,喝 +着很得劲,就像北宋哲学家邵雍对杜康的赞美,吃一杯杜康酒,醉 +乐陶陶! +4、解忧酒:我们喝的不仅是酒,也是解忧汤,古有曹操的何 +以解忧,唯有杜康!今有杜康清香醉春秋, 一口清香解千愁! +5、使命酒: 1972 年中日建交,周总理拿出茅台酒招待日本首 +相田中角,他说“天下美酒,唯有杜康”,当时杜康还是小作坊, +周总理当即批示“复兴杜康,为国争光”,自此,杜康酒走上快速 +发展的道路,并于 1988 年成为国宴用酒,后因品牌纷争历史原因 +一直没有发展起来, 我们杜康清香使命就是要复兴杜康, 振兴杜康, +让杜康美酒走进千家万户,让我们共同为这一历史文化名酒的复兴 +添砖加瓦! +6、祝愿酒:杜康清香有一首 MV 叫中国酒韵,堪称中国白酒 +MV 的巅峰之作,旋律优美,情感深厚,其寓意正好与杜康清香的 +理念“打过一次交道, 便是一生朋友”高度契合, “知己酒酣情浓, +畅怀舒展歌喉,举杯斟满杜康,祈愿天长地久”! +| 杜 康 清 香 一 清 到 底 | +30 | 杜康清香·诗酒文化品牌 | 31\n===== PAGE 21 =====\n做出决策。例如:今天初次品鉴,我来打个前站,欢迎各位最近去 +杜康酒厂深度体验。 一是要懂得适可而止, 二是给大家留个念想, +三是发出一个邀请,这才是品鉴的高潮。为下一步酒厂体验工作铺 +路。 +不能长时间等待,给出一个决策的最后时间点。通常这么说: +这是针对我们 VIP 用户的福利,过了这一段就不会再有了。这次回 +厂体验的时间只有 7 天时间,需要这几天定下来,以便妥善安排。 +4、树立道德权威 +告诉对方,这不仅仅是一笔生意,而是一个有福报的崇高事业, +比如自己健康饮酒、教会朋友喝好酒、不做酒盲;喝好酒更省钱, +喝差酒 + 吃药钱比好酒还贵,关键还受罪。 +(三)品鉴会的具体操作可参考第四章内容。 +杜 +康 +酒 +厂 +文 +化 +溯 +源 +之 +旅 +32 +| 杜 康 清 香 一 清 到 底 | +第 +七 +章\n===== PAGE 22 =====\n行 程 +时 间 +行程安排 +一 +日 +行 +程 +当日上午 +抵达汾阳 +11:30-13:20 +午餐 杏花村镇 +14:20-14:50 +酒店——酒厂 +14:50-15:10 +酿酒车间参观 +15:10-15:30 +灌装参观 +15:30-16:30 +汾酒遗址博物馆参观 +16:30-16:40 +返回山西杜康体验馆 +16:40-17:40 +山西杜康体验馆参观交流 +18:00-19:00 +晚宴 +一、参与对象 +1、以加盟商、意向加盟商及 VIP 客户为主要体验对象。 +2、组团人数 15—20 人。 +3、统一接待、统一行程、统一参观。 +二、时间及行程安排 +1、时间安排: 一日行程 +酒厂名称:山西杜康酒厂有限公司(导航搜索名字即可) +酒厂地址:山西省吕梁市汾阳市杏花村经济技术开发区 +大致车程时间:自驾:郑州 - 山西杜康酒厂、460km、5.5小 +时车程 +| 杜 康 清 香 一 清 到 底 | +34 | 杜康清香·诗酒文化品牌 | 35 +门 +店 +封 +坛 +— +— +封 +坛 +仪 +式 +第 +八 +章\n===== PAGE 23 =====\n遇喜事要封坛,遇大事更要封坛, +封藏的不仅是一缕芳香, +一坛美酒,更是一片荣光, +一份纪念,一份希冀,一份积淀, +一腔对美好生活的盼望向往。 +情感寄托:封坛酒可以是为了孩子、父母或企业,寄托着对 +美好未来的祝愿和感恩之情。例如,为孩子金榜题名或结婚出嫁 +封坛,寓意着对孩子未来的美好祝愿。 +庆典纪念:封坛酒可以作为纪念特定人生时刻的方式,如结 +婚纪念日、企业周年庆等,成为回忆的象征。 +除了到酒厂封坛外,在门店也可以封坛,封坛仪式如下: +一、净手 +封坛是神圣而庄重的事情,所以在封坛前要行净手礼,即用清 +水洗手,以示对天地酒神的敬畏。 +二、拜酒神 +向酒祖杜康像鞠躬三拜,一拜酒神护佑,二拜事业腾达,三拜 +美酒妙藏。 +三、鸣金锣 +由封坛者亲自敲金锣三声,金锣一响,黄金万两;金锣二响, +富贵安康;金锣三响,心想事成! +四、签名 +在封坛证书和封坛标卡上签名。 +五、品酒 +开坛品酒,确认酒质。 +六、封坛 +盖上坛盖,上锁,贴上封坛标卡,合影留念。 +| 杜 康 清 香 一 清 到 底 | +36 | 杜康清香·诗酒文化品牌 | 37\n===== PAGE 24 =====\n一、门店 1+9+N 合伙人模式 +1、门店由一个主理人发起,寻找 3—9 个股东合伙人。 +2、门店发展 N 个事业合伙人。 +二、门店 399 分销模式 +1、发展 3 个杜康清香门店。 +2、开发 9 个封坛 ( 定制 ) 企业。 +3、开发 9 个线下核心渠道分销商。 +杜康清香合伙人模式实现了平台共享、资源共享、门店共享、 +经营权共享、利润共享、发展共享,构建了厂、店、用户一体化关 +系,真正建立了命运事业利益共同体,是高级卖酒的先进模式。 +三、门店的关系资源 +亲友带亲友 :认知 + 认可 + 认同 + 认购 +认知:产品独特 + 体验玩法 + 专业讲解 + 愉悦感受 +认可:靠谱 + 专业 + 态度 + 进步 +认同:享受特殊待遇或者 VIP 政策 +认购:店内充卡 + 酒厂封坛 + 推荐成团 +四、门店老板的圈层 +做透一个圈子,混够三个圈子。帮助门店深耕一个圈子,提供 +杜 +康 +清 +香 +合 +伙 +人 +模 +式 +及 +用 +户 +运 +营 + | 杜康清香·诗酒文化品牌 | 39 +第 +九 +章\n===== PAGE 25 =====\n针对大客户,不是卖酒,而是帮助客户买酒,换位思考, +满足客户的满意度和愉悦体验,把价值量化,提供一套解决方案。 +七、门店运营流程 +1、初次体验品鉴:盘点门店员工的三友(亲友、战友、学友等) +名单,邀请到门店进行体验和品鉴,完成产品认知。 +2、建档及日常维护:了解用户用酒情况、建立用酒档案和生 +日档案,通过日常沟通维护,实现产品交易。 +3、深化关系(酒厂体验):筛选优质用户到酒厂深度体验品鉴, +宣讲合伙人政策,坚定信心,增强关系,实现封坛或门店合伙人合作。 +4、用户转介绍(裂变) :用户成为事业合伙人之后,再介绍 +朋友来店里体验品鉴,认知认购后成为新的事业合伙人,或者联盟 +开店。如此不断裂变,形成正向循环。 +八、加盟店的招商投资形式 +1、杜康清香酒文化馆: 面积 100-200 平, 投资 60-100 万, +沉浸式杜康文化体验模式。 +2、杜康清香标准创业店: 面积 50-100 平, 投资 40-50 万, +简约型杜康文化体验。 +3、杜康清香联名店:面积 10-30 平,投资 10-15 万,深度植 +入茶馆、会所、高端餐饮 ,低成本营销推广。 +培训和活动赋能,实现小圈子充卡或者转介绍充卡。 +主要有三类:声誉圈、权力圈、财富圈 +四层用户: KOL、KOC、大 C、 普 C +圈子日常运营:小活动、小聚会、小旅游、小娱乐 +圈子主题创意:围绕 KOL、KOC、大 C 的个性定制活动 +圈子特别策划:根据圈子的特征,特别策划一场有意义的主题 +品鉴,比如酒王争霸赛、户外越野活动、省内两日精品游等。 +五、社群运营 +围绕健康运动休闲文化人群,组建一个社群,助力门店打造 +IP、聚集粉丝、举办同好类的社会活动,比如:马拉松跑友团、乒 +乓球、羽毛球好友团等。 +自己当群主:店长至少要组建一个休闲文化运动群,对群内成 +员进行日常分享、运营服务。 +加入其他群:积极加入到其他群,提供有价值的分享。 +当好服务员:也可以组建一个互助社群,提供互助信息资源, +为群友牵线搭桥。 +社群日常活动、社群每月活动、社群大型活动。 +六、大客户赋能专案 +由门店提供大客户(企业)名单,公司高层帮助赋能开发。 +| 杜 康 清 香 一 清 到 底 | +40 | 杜康清香·诗酒文化品牌 | 41\n===== PAGE 26 =====\n1、山西杜康清香项目如何定位? +答:杜康清香项目是由杜康集团与山西杜康发起成立的清香型 +白酒专属项目,该项目将以创建品牌为己任,高标准发展规划,长 +周期发展布局,以创新模式为先锋,利用 8-10 年时间把杜康清香 +做到 10-20 亿销售规模,把杜康清香品牌打造成杜康集团旗下可持 +续发展、有竞争力,有影响力的高端清香品牌。 +2、为什么要选择做杜康品牌? +答:在竞争激烈的白酒市场,茅台、五粮液、汾酒等全国一线 +名酒品牌已经达到几百亿、上千亿的营收规模;洋河、古井、习酒 +等二线名酒品牌也已经达到百亿以上的营收规模,白酒赛道已经形 +成万亿级的消费规模。而作为中国酿酒鼻祖的杜康品牌,虽然拥有 +全国化名酒品牌基因, 但由于历史原因, 杜康品牌价值被严重低估, +在当前白酒行业调整周期之下,机遇危机并存,杜康清香将以全新 +的品牌定位,全新的模式助力百亿杜康复兴大业。 +3、为什么要做清香型品类? +答:中国白酒香型消费变化迅速,各领风骚! 20 年前浓香型 +白酒崛起成就五粮液、泸州老窖、洋河等品牌; 10 年前是酱香酒 +崛起成就茅台、习酒、国台、郎酒等品牌; 5 年前大清香崛起进一 +杜 +康 +清 +香 + +问 + +30 + | 杜康清香·诗酒文化品牌 | 43 +第 +十 +章\n===== PAGE 27 =====\n6、为什么做杜康清香? +答:在底蕴深厚的杜康酒文化里,酒祖杜康和杜康品牌是杜康 +集团旗下最优质的品牌资产,酒祖杜康已经成为杜康集团产品系列 +中的畅销大单品, 累计销售过百亿。杜康清香将以创建品牌为己任, +以创新模式为先锋, 把杜康清香品牌打造成可持续发展、有竞争力, +有影响力的品牌,利用 10年时间把杜康清香做到 10-20亿销售规模。 +7、杜康酿酒的由来 +答:在美丽的杜康造酒遗址公园内,有一棵历经千年变迁的空 +桑树,枝繁叶茂,这棵空桑树龄已达 2000 多年,被河南省人民政 +府认定为一级古树,授牌保护,也是杜康文化的活化石。杜康品牌 +根基源于西晋江统的《酒诰》: “酒之所兴, 肇自上皇”,或“曰 +夷狄,一曰杜康,有饭不尽,委余空桑,郁积成味,久出其芳,概 +出于此,不由其芳”。杜康空桑秽饭故事由此而来。 +8、杜康清香与其他杜康产品有什么不同? +步巩固汾酒江湖地位; 未来 10 年白酒香型将进入个性化表达时代, +差异化的清香酒将成为新的发展趋势 。 +4、清香型酒的特点 +答:杜康清香酒粮香纯正无杂味,清香干净通透,不刺鼻不浓烈, +闻着清爽舒服。入口绵柔顺滑,酒体纯净,无厚重焦糊感,落口爽利干 +脆。杂醇含量低,不口干不上头,醒酒快,适配日常小酌、宴席多场景。 +5、杜康集团的综合实力介绍 +答:杜康既是人名,又是品牌名,更是中国酿酒鼻祖,在全国 +乃至全球市场都有很高的知名度,不仅是白酒行业的金字招牌,更 +是中国酒文化史上绕不开的话题,闪耀古今。 +杜康集团是思念集团控股企业,思念食品是冷冻食品领军品牌, +年销售百亿规模;旗下千味央厨是预制菜赛道上市领军品牌,年销 +售规模 30 亿以上。集团综合营收 150 亿以上,是河南百强企业, +杜康集团依托集团强大的资金优势、资源优势开启杜康波澜壮阔的 +复兴之路。 +| 杜 康 清 香 一 清 到 底 | +44 | 杜康清香·诗酒文化品牌 | 45 + 答:杜康清香只做清香型酒,其他产品是以浓香型、酱香 +型酒体为主;杜康清香走高质量发展路线,产品定位有中高端 +的酒祖杜康系列产品,也有低端杜康清香系列口粮产品;杜康 +清香是杜康集团核心战略品牌。\n===== PAGE 28 =====\n9、河南洛阳杜康、贵州杜康、山西杜康与陕西白水杜康 +有什么不同? +答:品牌价值不同:历史上曾经有三家杜康, 分别是伊川杜康、 +汝阳杜康, 白水杜康,后伊川杜康和汝阳杜康合并为洛阳杜康控股, +为杜康品牌唯一持有人,品牌价值远远高于白水杜康; +企业实力不同:洛阳杜康从酿酒规模、市场占有率、销售规模、 +企业实力远远大于白水杜康; +产品品质不同:洛阳杜康坚守产品品质,坚守诚信经营,产品 +品质和行业口碑远远高于白水杜康。 +为发展多香型战略,杜康集团分别于2023年和2025年成立了贵 +州杜康和山西杜康。洛阳杜康、贵州杜康和山西杜康同属于洛阳酒祖 +杜康集团。 +10、杜康清香项目团队优势 +答:杜康清香核心团队都是在消费品领域 20 年以上,白酒 +行业 10 年以上资深创业团队,团队深耕白酒行业多年,具备成熟的 +清香赛道操盘经验。团队精准把握清香型白酒消费趋势,擅长渠道精耕、 +终端动销、品鉴会运营与品牌宣传推广,兼顾大众市场与宴席、商务场 +景布局。同时拥有完善的经销商扶持体系,执行力强、响应高效,以专 +业服务助力合作伙伴快速拓市,打造差异化清香白酒市场竞争力。 +11、杜康清香投资团队优势 +答:为实现高标准发展要求,高质量发展需求,杜康清香投资 +团队分别来自金融投资、地产、汽车、钢铁、起重、白酒、餐饮、 +培训、新媒体、连锁、商学院、商会等领域的商界大佬和行业翘首, +在融智、融资、融势的能量加持下,杜康清香必将再次创造一个行 +业奇迹! +12、杜康清香价值观 +答:成消费之美,让消费者共享高品质美酒 ;成客户之美, +化商为亲,让合作伙伴持续赚钱 ;成员工之美,让员工成长,共 +享发展成果 ;成股东之美,让投资人有良好的投资收益 。 +13、杜康清香酒德 +答:坚守品质,只做高质杜康酒;坚守诚信,产品永久包退包 +换;一次合作,终生分润收益;为客户省钱,砍掉一切渠道费用! +14、杜康清香四不准 +答:不准传播有损于杜康企业形象、产品形象的语言;不准针 +对杜康现存经销商展开招商活动;不准针对省内烟酒店、商超传统 +渠道招商;不准低价倒卖杜康主线产品和杜康清香产品。 +| 杜 康 清 香 一 清 到 底 | +46 | 杜康清香·诗酒文化品牌 | 47\n===== PAGE 29 =====\n15、曹操与杜康 +答:曹操是东汉末年的政治家、军事家、文学家。曹操的短歌 +行成书于赤壁之战阶段,此时基本完成中国北方的统一大业,时年 +曹操 52 岁。短歌行不仅是劝酒诗,更是一个政治家统一天下的政 +治抱负, 可谓大气磅礴, 脍炙人口, 尤其是“何以解忧, 唯有杜康” +成为千古绝唱,曹操的免费代言让杜康品牌名扬天下。 +短歌行第一段:对酒当歌,人生几何!譬如朝露,去日苦多。 +慨当以慷,忧思难忘。何以解忧?唯有杜康。 +16、苏轼与杜康 +答:苏轼(苏东坡) ,北宋文学家,唐宋八大家之一。苏轼一 +生爱酒、善酒,一直把杜康作为酒神敬奉的诗人。苏轼一生仕途坎 +坷,被贬至海南后写了“从今东坡室,不立杜康祠”的名句。 +17、杜甫与杜康 +答:杜甫,诗圣,唐朝现实主义诗人。杜甫一生喝酒、爱酒、 +像李白一样酒后诗百篇。“杜酒偏劳劝,张梨不外求”,意思杜康 +造酒,是我们杜家的酒,用不着别人来劝我喝。 +18、邵雍与杜康 +答:邵雍,北宋知名理学家、哲学家、教育家。邵雍的一首《逍 +遥吟》写出了他对生活的洒脱和杜康酒的挚爱,如:叹人生易老, +总不如盖一所安乐窝。上悬着琴棋书画,下坠渔读耕樵。闷来河边 +钓,闲来了,把琴敲。吃一杯杜康酒,醉乐陶陶。 +19、杜康诗词歌赋有多少篇? +答:自汉代到清代以杜康为意象创作诗词曲赋作者多达 108 位, +作品多达 138 篇,其中诗 105 首,词 21 首, 曲 5 首,赋 2 篇,其 +他文体 4 篇。 +20、国宴用酒 +答: 1988 年 9 月,52 度杜康酒被外交部定为国宴用酒和馈赠 +外宾礼品用酒。 +21、国家领导人与杜康 +答:杜康品牌的发展,离不开历任国家领导和省级领导的关心 +与支持,周恩来总理、赵紫阳、胡耀邦、江泽民、朱镕基、李铁映、 +李长春、卢展工、程维高等党和国家领导人先后赴汝阳杜康考察并 +指导工作。 +22、杜康清香产品设计理念 +答:产品设计风格以杜康文化为根基, 以空桑秽饭典故为主线, +| 杜 康 清 香 一 清 到 底 | +48 | 杜康清香·诗酒文化品牌 | 49\n===== PAGE 30 =====\n有高中低档之分。核心取决于原料、工艺和定位。优质清香酒选用顶级 +粮谷、依托核心产区优势,采用传统清蒸工艺,酒体纯净度高、口感细 +腻,再搭配高端包装与文化赋能,完全能达到高端宴请、礼赠的标准。 +26、推广口语 +答:主推广口语:千年杜康,醉美清香! +老乡聚会:一杯杜康,天下故乡! +商务聚会:天下美酒,唯有杜康! +朋友聚会:何以解忧,唯有杜康! +27、大清香赛道品牌有哪些? +答:山西汾酒(清香型头部品牌):年销售规模约382.4亿元。 +牛栏山二锅头(清香型大众龙头):清香系列销售规模约116亿元。 +红星二锅头(清香型经典品牌):年销售规模约86.4亿元。 +汾阳王(山西区域清香标杆):年销售规模约23.7亿元。 +宝丰酒(豫酒清香代表):年销售规模约19.2亿元。 +永丰二锅头(京津冀清香代表):年销售规模约5.28亿元。 +28、杜康清香是什么营销模式? +答:杜康清香模式是以杜康文化为道场,以沉浸式体验为营销 +以空桑秽饭和秫酒之源为支撑点,提炼聚焦杜康清香的品牌定位和 +文化内核。品牌名字大气天成,隶书字体端庄典雅,质朴浑厚,彰 +显杜康酒历史与文化的王者之气。 +23、杜康清香产品器型亮点 +24、杜康清香酒体优势 +25、清香酒都是中低端酒吗? +答:这是一种不正确的说法,清香型酒和其他香型酒一样,都 +| 杜 康 清 香 一 清 到 底 | +50 | 杜康清香·诗酒文化品牌 | 51 + 答:将东方古典、高雅的玉壶春瓶与西方现代、简约的波尔多 +瓶相结合,保留中国宋代美学的典雅,同时融入当代流体线条,打造 +“似曾相识却无法解码”的暧昧体验,形成独特视觉语言,瓶盖采用红顶, +寓意红(鸿)运当头;冠部采用金色祥云图案,预示吉祥。 + 答:相较于其他香型,其杂醇含量低,饮后不口干、不上头, +醒酒快,契合当下健康饮酒趋势。同时酒体格调雅致,粮香纯正清雅, +兼具曲香与淡淡陈韵,既适合日常小酌的舒适感,也适配商务宴请、 +家庭团聚的庄重场景,口感普适性强,男女老少皆易接受,尽显清香 +酒独有的纯粹与温润,是兼具品质与口碑的国民白酒之选。\n===== PAGE 31 =====\n32、杜康清香酒的产品执行标准 +答:清香型白酒・山西省级优级标准(大曲清香,T/SXFIA +001‑ 2019,山西省食品工业协会团体标准,等同省级行业权威标准, +高于国标 GB/T 10781.2‑ 2022 优级)。 +33、“杜康清香 + 酒文化馆”的好处有哪些? +答:杜康清香 + 酒文化馆(体验店)运营模式,不仅可以实 +现 1+1 大于 2的经营结果,而且在以下三方面赋能客户。 +A、品牌赋能,杜康品牌不仅是历史文化名酒, 品牌根基深厚, +是全国化品牌基因,发展空间巨大,更是行业龙头白酒企业,是地 +产酒首选品牌。 +B、品类赋能,杜康清香是杜康集团继浓香、酱香、兼香型白 +酒之后推出的新品类,而且是未来发展的大趋势。 +C、资源赋能,在不增加门店运营费用前提下,利用杜康清香 +的品牌势能为门店带来新的合作伙伴、新的客户、新的故事,最重 +要的是利用新资源带来新的发展机遇。 +34、杜康清香与其他杜康有啥不同? +答:A、发展目标不同:由酒祖杜康集团与山西杜康发起成立 +杜康清香酒项目,依托杜康的品牌优势和渠道优势,高标准发展规 +划,未来 8-10 年做到 10-20 亿的清香品牌。 +主线,以社群圈层为主的生意、生活与社交平台。即杜康清香的四 +个一工程:一个杜康文化馆,一瓶杜康美酒,一桌杜康美食,一群 +杜康粉丝的圈层运营模式。坚持以门店动销为核心的 399 盈利模式, +开创化商为才的 369 联创合伙人盈利模式。 +29、杜康清香酒的“七必清” +30、喝杜康清香酒为什么不上头? +答:喝清香酒不上头,核心在于工艺与酒体特性。其采用清蒸二次 +清工艺,发酵周期适中,能有效降低杂醇油、醛类等易致上头的有害物 +质。因此不易出现口干、上头等不适,契合健康饮酒需求。 +31、杜康清香酒饮后的体感 +答:杜康清香酒饮后不刺喉,不上头,醒酒快,全身通透舒适, +愉悦感强,第二天不难受,神清气爽,关节像抹了油。 +52 | 杜康清香·诗酒文化品牌 | 53 +| 杜 康 清 香 一 清 到 底 | + 答:具体为:人必得其精、水必得其甘、曲必得其时、粮必得 +其实、器必得其洁、缸必得其湿、火必得其缓。它涵盖人力、原料、 +器具、工艺全维度,坚守纯粮固态酿造,严控每一环,确保酒体纯净 +无杂、清香纯正,是清香酒品质的核心保障。\n===== PAGE 32 =====\nB、品类定位不同:杜康清香只做清香型酒,酒体产品涵盖高 +中低端产品,其他产品是以浓香、酱香型酒体为主,杜康清香走高 +质量、高性价比发展路线,是杜康集团核心战略品牌。 +C、营销模式不同:杜康清香模式是以杜康文化为道场,以沉 +浸式体验为营销主线,以社群圈层为主的生意、生活与社交平台。 +打造一个杜康文化馆,一瓶杜康美酒,一桌杜康美食,一群杜康粉 +丝的圈层运营模式。其他杜康都是传统烟酒店、超市为主的分销渠 +道。 +35、杜康清香联创合伙人好处有哪些? +答:A、名额稀缺:联创合伙名额是只针对与杜康清香志同道 +合,认同杜康清香经营理念,风雨同舟的老朋友开放,数量有限。 +B、资金安全:成立合伙人制度,实行资金共管,账务公开, +讲诚信,守信用。 +C、回报稳定:联创合伙人的分润比例丰厚, 回报时间持续, +是门店正常销售之外的额外收益。 +D、经营从容:联创合伙人不仅可享受同等投资最大市场政策 +支持,而且不压货,不占用仓储,产品永久性包退包换,推荐客户 +共享永久性分润,让门店经营轻松从容。 +36、杜康清香酒为什么是高端诗酒文化品牌? +答:杜康清香诗酒文化高度:以杜康为意象创作的诗词曲赋名 +家荟萃, 有曹操、杜甫、白居易、苏轼、辛弃疾、陆游等文坛泰斗, +尤其是政治家、军事家、文学家曹操的“何以解忧,唯有杜康”传 +唱千古,成为中国诗酒文化的巅峰! +杜康清香诗酒文化的广度:酒是文人墨客的精神食粮,自汉代 +以来以杜康为意象创作诗词歌赋的作者多达 108 位,形成的杜康古 +诗词 138 篇,名篇名句流传全球,其范围之广阔,是任何一个白酒 +品牌所无法比拟的! +杜康清香诗酒文化的深度:杜康的诗酒文化博大精深,名扬天 +下,历经汉、晋、唐、宋、金、元、明、清及近现代,穿越历史长 +河将近 2000 年经久不衰,是中国诗酒文化的活化石! +| 杜 康 清 香 一 清 到 底 | +54 | 杜康清香·诗酒文化品牌 | 55 \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..b8eb8c6 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,40 @@ +import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom' +import { Layout } from './components/Layout' +import { HomePage } from './pages/Home' +import { BrandPage } from './pages/Brand' +import { PoetryPage } from './pages/Poetry' +import { QingxiangPage } from './pages/Qingxiang' +import { HaokePage } from './pages/Haoke' +import { SystemPage } from './pages/System' +import { TechPage } from './pages/Tech' +import { SubsidyPage } from './pages/Subsidy' +import { PartnerPage } from './pages/Partner' +import { TechDetailPage } from './pages/TechDetail' +import { ContactPage } from './pages/Contact' +import { DeepPage } from './pages/DeepPage' + +export default function App() { + return ( + + + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + + ) +} diff --git a/src/components/DeepLayout.css b/src/components/DeepLayout.css new file mode 100644 index 0000000..38fa84f --- /dev/null +++ b/src/components/DeepLayout.css @@ -0,0 +1,458 @@ +.deep-page { + padding-bottom: 4rem; +} + +.deep-hero { + position: relative; + min-height: 18rem; + display: flex; + align-items: flex-end; + padding: 5rem 0 2.5rem; + overflow: hidden; + margin-bottom: 2.5rem; + background: linear-gradient(160deg, var(--paper-deep), var(--paper) 55%); +} + +.deep-hero.has-image { + min-height: 22rem; +} + +.deep-hero-bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + transform: scale(1.04); +} + +.deep-hero-mask { + position: absolute; + inset: 0; + background: linear-gradient(180deg, rgba(247, 242, 234, 0.25), rgba(247, 242, 234, 0.94) 72%); +} + +.theme-tech .deep-hero-mask { + background: linear-gradient(180deg, rgba(18, 16, 20, 0.35), rgba(18, 16, 20, 0.92) 72%); +} + +.deep-hero-copy { + position: relative; + z-index: 1; +} + +.deep-back { + display: inline-flex; + margin-top: 0.75rem; + color: var(--brand); + min-height: 2.75rem; + align-items: center; +} + +.theme-tech .deep-back { + color: var(--gold); +} + +.deep-body { + display: grid; + gap: 2rem; +} + +.deep-prose { + max-width: 46rem; + margin-inline: auto; + width: 100%; +} + +.deep-h { + margin: 0 0 0.85rem; + color: var(--brand); + font-size: 1.45rem; + letter-spacing: 0.08em; +} + +.theme-tech .deep-h { + color: var(--gold); +} + +.deep-p { + margin: 0 0 1rem; + color: var(--ink-soft); + font-size: 1.02rem; + line-height: 1.9; +} + +.deep-quote { + margin: 0 0 1.25rem; + padding: 1.4rem 1.35rem; + border-left: 2px solid var(--brand); + background: rgba(255, 255, 255, 0.55); +} + +.theme-tech .deep-quote { + border-left-color: var(--gold); + background: var(--tech-card); +} + +.deep-quote p { + margin: 0; + font-size: 1.2rem; + line-height: 1.85; +} + +.deep-quote cite { + display: block; + margin-top: 0.85rem; + font-style: normal; + color: var(--ink-soft); + font-family: 'Noto Sans SC', sans-serif; + font-size: 0.9rem; +} + +.deep-list { + margin: 0 0 1rem; + padding-left: 1.1rem; + color: var(--ink-soft); + line-height: 1.9; +} + +.deep-media img, +.deep-media-solo img { + width: 100%; + max-height: 28rem; + object-fit: contain; + background: rgba(0, 0, 0, 0.03); +} + +.deep-media-solo { + max-width: 40rem; + margin-inline: auto; +} + +/* person */ +.deep-person-grid { + grid-template-columns: 1.2fr 0.8fr; + align-items: start; +} + +/* timeline */ +.deep-timeline { + list-style: none; + margin: 0; + padding: 0 0 0 1.25rem; + border-left: 2px solid rgba(166, 28, 32, 0.18); + display: grid; + gap: 1.25rem; +} + +.deep-timeline-item { + position: relative; + padding-left: 0.75rem; +} + +.deep-timeline-dot { + position: absolute; + left: -1.55rem; + top: 0.45rem; + width: 0.65rem; + height: 0.65rem; + border-radius: 50%; + background: var(--brand); + box-shadow: 0 0 0 0.25rem rgba(166, 28, 32, 0.12); +} + +.deep-timeline-item p { + margin: 0; + color: var(--ink-soft); + line-height: 1.75; +} + +/* shrine */ +.deep-shrine-stack { + max-width: 42rem; + margin-inline: auto; + text-align: center; +} + +.deep-shrine-stack .deep-list { + text-align: left; + display: inline-block; +} + +/* sites */ +.deep-sites-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.25rem; +} + +.deep-site-card { + padding: 1.35rem 1.2rem; + background: rgba(255, 255, 255, 0.55); + border-top: 2px solid var(--gold); +} + +/* figures */ +.deep-figure-rail { + display: grid; + gap: 1rem; +} + +.deep-figure-card { + display: grid; + grid-template-columns: 3.5rem 1fr; + gap: 0.75rem 1.1rem; + padding: 1.25rem 0; + border-bottom: 1px solid rgba(166, 28, 32, 0.12); +} + +.deep-figure-index { + color: var(--gold); + font-size: 1.5rem; + grid-row: span 2; +} + +.deep-figure-card .deep-h { + grid-column: 2; +} + +.deep-figure-card .deep-p { + grid-column: 2; +} + +/* factory */ +.deep-factory-panel { + padding: 2rem 1.75rem; + background: linear-gradient(135deg, rgba(166, 28, 32, 0.06), rgba(196, 163, 90, 0.08)); + border: 1px solid rgba(166, 28, 32, 0.12); +} + +.deep-factory-caps { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.85rem; + margin-top: 1.5rem; +} + +.deep-factory-cap { + padding: 1rem 1.1rem; + background: rgba(255, 255, 255, 0.7); + min-height: 4.5rem; + display: flex; + align-items: center; +} + +.deep-factory-cap p { + margin: 0; + color: var(--ink); +} + +/* poem wall */ +.deep-poem-wall { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1.25rem; + align-items: stretch; +} + +.deep-poem-slip { + display: flex; + flex-direction: column; + justify-content: space-between; + height: 100%; + padding: 1.5rem 1.25rem; + background: rgba(255, 255, 255, 0.65); + border: 1px solid rgba(166, 28, 32, 0.1); + box-sizing: border-box; +} + +.deep-poem-slip p { + margin: 0; + font-size: 1.15rem; + line-height: 1.85; +} + +.deep-poem-slip cite { + margin-top: auto; + padding-top: 0.85rem; + display: block; + font-style: normal; + color: var(--ink-soft); + font-family: 'Noto Sans SC', sans-serif; + font-size: 0.88rem; +} + +/* ink scroll */ +.deep-ink-flow { + max-width: 40rem; + margin-inline: auto; + border-left: 1px solid var(--gold-soft); + padding-left: 1.75rem; +} + +.deep-ink-flow .deep-quote { + writing-mode: vertical-rl; + min-height: 14rem; + max-width: 100%; + border-left: none; + border-top: 2px solid var(--brand); + margin-inline: auto; +} + +/* manifesto */ +.deep-manifesto-lead { + max-width: 48rem; + margin-inline: auto; + text-align: center; +} + +.deep-loop-strip { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 0.85rem; +} + +.deep-loop-node { + padding: 1.2rem 1rem; + background: rgba(255, 255, 255, 0.7); + border-bottom: 3px solid var(--brand); + min-height: 9rem; +} + +.deep-loop-num { + display: block; + color: var(--gold); + margin-bottom: 0.55rem; + letter-spacing: 0.12em; +} + +.deep-loop-node p { + margin: 0; + color: var(--ink-soft); + line-height: 1.65; + font-size: 0.95rem; +} + +/* matrix */ +.deep-matrix { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1.15rem; +} + +.deep-matrix-card { + padding: 1.4rem 1.25rem; + background: rgba(255, 255, 255, 0.6); + border: 1px solid rgba(166, 28, 32, 0.1); +} + +/* triad */ +.deep-triad { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; +} + +.deep-triad-col { + padding: 1.5rem 1.2rem; + text-align: center; + background: linear-gradient(180deg, rgba(166, 28, 32, 0.08), transparent); + border-top: 2px solid var(--brand); +} + +/* steps */ +.deep-steps { + display: grid; + gap: 0; + max-width: 40rem; + margin-inline: auto; +} + +.deep-step { + display: grid; + grid-template-columns: 3.5rem 1fr; + gap: 1rem; + padding: 1.35rem 0; + border-bottom: 1px dashed rgba(166, 28, 32, 0.2); + align-items: start; +} + +.deep-step-index { + color: var(--brand); + font-size: 1.6rem; +} + +.deep-step p { + margin: 0; + font-size: 1.1rem; + color: var(--ink); + line-height: 1.7; +} + +/* scenes */ +.deep-scenes { + display: grid; + gap: 1.5rem; +} + +.deep-scene { + padding: 1.5rem 1.35rem; + background: rgba(255, 255, 255, 0.5); + border-left: 3px solid var(--gold); +} + +/* tour */ +.deep-tour-flow { + max-width: 44rem; + margin-inline: auto; +} + +.deep-tour-steps { + display: grid; + gap: 0.75rem; +} + +.deep-tour-step { + display: grid; + grid-template-columns: 2.5rem 1fr; + gap: 0.85rem; + align-items: center; + padding: 0.95rem 1.1rem; + background: rgba(255, 255, 255, 0.65); +} + +.deep-tour-step span { + width: 2.1rem; + height: 2.1rem; + border-radius: 50%; + display: grid; + place-items: center; + background: var(--brand); + color: #fff; + font-size: 0.95rem; +} + +.deep-tour-step p { + margin: 0; + color: var(--ink-soft); +} + +@media (max-width: 48rem) { + .deep-person-grid, + .deep-sites-grid, + .deep-poem-wall, + .deep-loop-strip, + .deep-matrix, + .deep-triad, + .deep-factory-caps { + grid-template-columns: 1fr; + } + + .deep-ink-flow .deep-quote { + writing-mode: horizontal-tb; + min-height: auto; + } + + .deep-figure-card { + grid-template-columns: 2.5rem 1fr; + } +} diff --git a/src/components/DeepLayout.tsx b/src/components/DeepLayout.tsx new file mode 100644 index 0000000..3112eee --- /dev/null +++ b/src/components/DeepLayout.tsx @@ -0,0 +1,544 @@ +import { Link } from 'react-router-dom' +import type { ReactElement } from 'react' +import { Reveal } from './Reveal' +import type { DeepBlock, DeepLayoutKind, DeepPageContent } from '../content/deep/types' +import './DeepLayout.css' + +function backPath(group: DeepPageContent['group']) { + if (group === 'qingxiang') return '/qingxiang' + if (group === 'poetry') return '/poetry' + return '/brand' +} + +function Blocks({ blocks }: { blocks: DeepBlock[] }) { + return ( + <> + {blocks.map((block, i) => ( + + {block.type === 'heading' ?

{block.text}

: null} + {block.type === 'paragraph' ?

{block.text}

: null} + {block.type === 'quote' ? ( +
+

{block.text}

+ {block.source ? {block.source} : null} +
+ ) : null} + {block.type === 'list' ? ( + + ) : null} +
+ ))} + + ) +} + +function Hero({ page, image }: { page: DeepPageContent; image?: string }) { + return ( +
+ {image ?
: null} +
+
+ +

{page.eyebrow}

+

{page.title}

+

{page.lead}

+ + ← 返回主篇 + +
+
+
+ ) +} + +function Closing({ text }: { text?: string }) { + if (!text) return null + return ( + +

{text}

+
+ ) +} + +function SoloImage({ src }: { src?: string }) { + if (!src) return null + return ( + +
+ +
+
+ ) +} + +function listBlocks(blocks: DeepBlock[]) { + return blocks.filter((b): b is Extract => b.type === 'list') +} + +function quoteBlocks(blocks: DeepBlock[]) { + return blocks.filter((b): b is Extract => b.type === 'quote') +} + +function headingPairs(blocks: DeepBlock[]) { + const pairs: { heading: string; body: DeepBlock[] }[] = [] + let current: { heading: string; body: DeepBlock[] } | null = null + for (const b of blocks) { + if (b.type === 'heading') { + current = { heading: b.text, body: [] } + pairs.push(current) + } else if (current) { + current.body.push(b) + } + } + return pairs +} + +function LayoutEssay({ page }: { page: DeepPageContent }) { + const img = page.images[0] + return ( +
+ +
+ + +
+
+ ) +} + +function LayoutPerson({ page }: { page: DeepPageContent }) { + const img = page.images[0] + return ( +
+ +
+
+ + +
+ +
+
+ ) +} + +function LayoutTimeline({ page }: { page: DeepPageContent }) { + const img = page.images[0] + const lists = listBlocks(page.blocks) + const rest = page.blocks.filter((b) => b.type !== 'list') + return ( +
+ +
+ + {lists.map((list, li) => ( +
    + {list.items.map((item, i) => ( + + +

    {item}

    +
    + ))} +
+ ))} +
+ +
+ +
+
+ ) +} + +function LayoutShrine({ page }: { page: DeepPageContent }) { + const img = page.images[0] + return ( +
+ +
+ + +
+
+ ) +} + +function LayoutSites({ page }: { page: DeepPageContent }) { + const img = page.images[0] + const pairs = headingPairs(page.blocks) + return ( +
+ +
+
+ {pairs.map((pair, i) => ( + +

{pair.heading}

+ {pair.body.map((b, j) => + b.type === 'paragraph' ? ( +

+ {b.text} +

+ ) : null, + )} +
+ ))} +
+ + +
+
+ ) +} + +function LayoutFigures({ page }: { page: DeepPageContent }) { + const img = page.images[0] + const pairs = headingPairs(page.blocks) + return ( +
+ +
+
+ {pairs.map((pair, i) => ( + + {String(i + 1).padStart(2, '0')} +

{pair.heading}

+ {pair.body.map((b, j) => + b.type === 'paragraph' ? ( +

+ {b.text} +

+ ) : null, + )} +
+ ))} +
+ + +
+
+ ) +} + +function LayoutFactory({ page }: { page: DeepPageContent }) { + const lists = listBlocks(page.blocks) + const rest = page.blocks.filter((b) => b.type !== 'list') + return ( +
+ +
+
+ + {lists.map((list, i) => ( +
+ {list.items.map((item) => ( + +

{item}

+
+ ))} +
+ ))} +
+ +
+
+ ) +} + +function LayoutPoemWall({ page }: { page: DeepPageContent }) { + const img = page.images[0] + const quotes = quoteBlocks(page.blocks) + const rest = page.blocks.filter((b) => b.type !== 'quote') + return ( +
+ +
+
+ {quotes.map((q, i) => ( + +

{q.text}

+ {q.source ? {q.source} : null} +
+ ))} +
+
+ +
+ + +
+
+ ) +} + +function LayoutInkScroll({ page }: { page: DeepPageContent }) { + const img = page.images[0] + return ( +
+ +
+ + +
+
+ ) +} + +function LayoutManifesto({ page }: { page: DeepPageContent }) { + const img = page.images[0] + const lists = listBlocks(page.blocks) + const rest = page.blocks.filter((b) => b.type !== 'list') + return ( +
+ +
+
+ +
+ {lists.map((list, i) => ( +
+ {list.items.map((item, j) => ( + + {String(j + 1).padStart(2, '0')} +

{item}

+
+ ))} +
+ ))} + + +
+
+ ) +} + +function LayoutMatrix({ page }: { page: DeepPageContent }) { + const pairs = headingPairs(page.blocks) + const orphan = page.blocks.filter((b, i, arr) => { + if (b.type === 'heading') return false + const prevHeading = [...arr.slice(0, i)].reverse().find((x) => x.type === 'heading') + return !prevHeading + }) + return ( +
+ +
+ {orphan.length ? ( +
+ +
+ ) : null} +
+ {pairs.map((pair, i) => ( + +

{pair.heading}

+ {pair.body.map((b, j) => { + if (b.type === 'list') { + return ( +
    + {b.items.map((item) => ( +
  • {item}
  • + ))} +
+ ) + } + if (b.type === 'paragraph') { + return ( +

+ {b.text} +

+ ) + } + return null + })} +
+ ))} +
+ +
+
+ ) +} + +function LayoutTriad({ page }: { page: DeepPageContent }) { + const img = page.images[0] + const pairs = headingPairs(page.blocks) + return ( +
+ +
+
+ {pairs.slice(0, 3).map((pair, i) => ( + +

{pair.heading}

+ {pair.body.map((b, j) => { + if (b.type === 'paragraph') { + return ( +

+ {b.text} +

+ ) + } + if (b.type === 'list') { + return ( +
    + {b.items.map((item) => ( +
  • {item}
  • + ))} +
+ ) + } + return null + })} +
+ ))} +
+ {pairs.slice(3).length ? ( +
+ {pairs.slice(3).map((pair) => ( +
+

{pair.heading}

+ +
+ ))} +
+ ) : null} + + +
+
+ ) +} + +function LayoutSteps({ page }: { page: DeepPageContent }) { + const lists = listBlocks(page.blocks) + const rest = page.blocks.filter((b) => b.type !== 'list') + const steps = lists[0]?.items ?? [] + return ( +
+ +
+
+ {steps.map((item, i) => ( + + {String(i + 1).padStart(2, '0')} +

{item}

+
+ ))} +
+
+ + {lists.slice(1).map((list, i) => ( +
    + {list.items.map((item) => ( +
  • {item}
  • + ))} +
+ ))} +
+ +
+
+ ) +} + +function LayoutScenes({ page }: { page: DeepPageContent }) { + const img = page.images[0] + const pairs = headingPairs(page.blocks) + const quotes = quoteBlocks(page.blocks) + return ( +
+ +
+
+ {pairs.map((pair, i) => ( + +

{pair.heading}

+ {pair.body.map((b, j) => { + if (b.type === 'list') { + return ( +
    + {b.items.map((item) => ( +
  • {item}
  • + ))} +
+ ) + } + if (b.type === 'paragraph') { + return ( +

+ {b.text} +

+ ) + } + return null + })} +
+ ))} +
+ {quotes.map((q, i) => ( +
+

{q.text}

+ {q.source ? {q.source} : null} +
+ ))} + + +
+
+ ) +} + +function LayoutTour({ page }: { page: DeepPageContent }) { + const img = page.images[0] + const lists = listBlocks(page.blocks) + const rest = page.blocks.filter((b) => b.type !== 'list') + return ( +
+ +
+ {lists.map((list, i) => ( +
+ {list.items.map((item, j) => ( + + {j + 1} +

{item}

+
+ ))} +
+ ))} +
+ +
+ +
+
+ ) +} + +const layoutMap: Record ReactElement> = { + essay: LayoutEssay, + person: LayoutPerson, + timeline: LayoutTimeline, + shrine: LayoutShrine, + sites: LayoutSites, + figures: LayoutFigures, + factory: LayoutFactory, + 'poem-wall': LayoutPoemWall, + 'ink-scroll': LayoutInkScroll, + manifesto: LayoutManifesto, + matrix: LayoutMatrix, + triad: LayoutTriad, + steps: LayoutSteps, + scenes: LayoutScenes, + tour: LayoutTour, +} + +export function DeepLayout({ page }: { page: DeepPageContent }) { + const View = layoutMap[page.layout] ?? LayoutEssay + return +} diff --git a/src/components/Footer.css b/src/components/Footer.css new file mode 100644 index 0000000..545f326 --- /dev/null +++ b/src/components/Footer.css @@ -0,0 +1,68 @@ +.site-footer { + background: #1a1512; + color: rgba(247, 242, 234, 0.78); + padding: 2.75rem 0 2.25rem; + border-top: 1px solid rgba(196, 163, 90, 0.15); +} + +.theme-tech .site-footer { + background: #0c0a0e; + border-top: 1px solid rgba(196, 163, 90, 0.28); +} + +.footer-inner { + display: grid; + gap: 1.75rem; +} + +.footer-brand { + display: flex; + align-items: center; + gap: 0.9rem; +} + +.footer-logo { + width: 2.6rem; + height: 2.6rem; + object-fit: contain; + filter: brightness(1.1); +} + +.footer-title { + margin: 0; + color: #f7f2ea; + font-size: 1.1rem; +} + +.footer-slogan { + margin: 0.25rem 0 0; + color: var(--gold, #c4a35a); + letter-spacing: 0.12em; +} + +.footer-meta { + font-size: 0.82rem; + line-height: 1.8; + color: rgba(247, 242, 234, 0.78); +} + +.footer-meta p { + margin: 0.2rem 0; +} + +.footer-meta a { + color: var(--gold, #c4a35a); + text-decoration: underline; + text-underline-offset: 3px; +} + +.footer-meta a:hover { + color: #ffffff; +} + +@media (min-width: 48rem) { + .footer-inner { + grid-template-columns: 1fr 1.4fr; + align-items: end; + } +} diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000..44a1015 --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,29 @@ +import { Link } from 'react-router-dom' +import { footer, images } from '../content/site' +import './Footer.css' + +export function Footer() { + return ( +
+
+
+ +
+

{footer.brandLine}

+

{footer.slogan}

+
+
+
+

+ {footer.copyright} · {footer.icp} +

+

{footer.compliance}

+

{footer.dataNote}

+

+ 联系我们 +

+
+
+
+ ) +} diff --git a/src/components/Layout.css b/src/components/Layout.css new file mode 100644 index 0000000..777c73e --- /dev/null +++ b/src/components/Layout.css @@ -0,0 +1,113 @@ +.site-shell { + min-height: 100vh; + display: flex; + flex-direction: column; + background: var(--paper); + color: var(--ink); +} + +.site-shell > main { + flex: 1; + min-height: 0; +} + +/* Global stage-mode HTML/Body scroll lock */ +html.stage-mode, +body.stage-mode { + height: 100%; + overflow: hidden; + overscroll-behavior: none; +} + +body.stage-mode #root { + height: 100%; +} + +.page-section { + padding: 5rem 0; +} + +.page-section.tight { + padding-top: 3.5rem; +} + +.split { + display: grid; + grid-template-columns: 1.05fr 0.95fr; + gap: 3rem; + align-items: center; +} + +.media-frame { + overflow: hidden; + border-radius: 0.2rem; + box-shadow: var(--shadow-soft); + background: var(--paper-deep); +} + +.media-frame img { + width: 100%; + height: 100%; + object-fit: cover; + aspect-ratio: 4 / 5; +} + +.card-grid, +.module-grid, +.ends-grid, +.ports-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.25rem; +} + +.module-grid { + grid-template-columns: repeat(5, 1fr); +} + +.soft-card { + padding: 1.4rem 1.35rem; + background: rgba(255, 255, 255, 0.55); + border: 1px solid rgba(166, 28, 32, 0.1); + border-radius: 0.2rem; + transition: transform 0.35s var(--ease), border-color 0.35s var(--ease), background 0.35s var(--ease); +} + +.soft-card:hover { + transform: translateY(-0.2rem); + border-color: rgba(166, 28, 32, 0.28); +} + +.theme-tech .soft-card { + background: var(--tech-card); + border-color: var(--tech-line); +} + +.soft-card h3 { + margin: 0 0 0.65rem; + font-size: 1.15rem; + color: var(--brand); +} + +.theme-tech .soft-card h3 { + color: var(--gold); +} + +.soft-card p { + margin: 0; + color: var(--ink-soft); + font-size: 0.95rem; +} + +.cta-row { + display: flex; + flex-wrap: wrap; + gap: 0.85rem; + margin-top: 1.75rem; +} + +.footnote { + margin-top: 1.25rem; + font-size: 0.82rem; + color: var(--ink-soft); +} diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx new file mode 100644 index 0000000..3daf9ae --- /dev/null +++ b/src/components/Layout.tsx @@ -0,0 +1,70 @@ +import { useEffect } from 'react' +import { Outlet, useLocation } from 'react-router-dom' +import { useIsMobile } from '../hooks/useMobile' +import { StageProvider, useStageMode } from '../hooks/useStageMode' +import { MobileShell } from '../mobile/MobileShell' +import { MobileViews } from '../mobile/MobileViews' +import { StageShell } from '../stage/StageShell' +import { Footer } from './Footer' +import { Nav } from './Nav' +import './Layout.css' + +const techRoutes = new Set(['/tech', '/subsidy', '/partner', '/tech-detail', '/contact']) + +function LayoutInner() { + const location = useLocation() + const isStage = useStageMode() + const isMobile = useIsMobile(768) + const techLike = techRoutes.has(location.pathname) + + useEffect(() => { + window.scrollTo({ top: 0, behavior: 'auto' }) + }, [location.pathname]) + + useEffect(() => { + document.documentElement.classList.toggle('stage-mode', isStage) + document.body.classList.toggle('stage-mode', isStage) + return () => { + document.documentElement.classList.remove('stage-mode') + document.body.classList.remove('stage-mode') + } + }, [isStage]) + + // 1. Stage Mode Branch + if (isStage) { + return + } + + // 2. Mobile Dedicated Layout Branch (< 768px) + if (isMobile) { + // If accessing deep pages (e.g. /culture/status), render through Outlet; main modules render through MobileViews + const isDeepPage = + location.pathname.startsWith('/culture/') || + location.pathname.startsWith('/poetry/') || + location.pathname.startsWith('/qingxiang/') + return ( + + {isDeepPage ? : } + + ) + } + + // 3. Desktop Normal Mode Branch + return ( +
+
+ ) +} + +export function Layout() { + return ( + + + + ) +} diff --git a/src/components/Nav.css b/src/components/Nav.css new file mode 100644 index 0000000..f1dde73 --- /dev/null +++ b/src/components/Nav.css @@ -0,0 +1,430 @@ +.topnav { + position: sticky; + top: 0; + z-index: 1000; + height: var(--nav-h); + backdrop-filter: blur(12px); + background: rgba(247, 242, 234, 0.86); + border-bottom: 1px solid transparent; + transition: border-color 0.3s var(--ease), background 0.3s var(--ease); +} + +.topnav.has-drawer-open { + z-index: 1001; +} + +.theme-tech .topnav { + background: rgba(18, 16, 20, 0.9); +} + +.topnav.is-scrolled { + border-bottom-color: rgba(166, 28, 32, 0.12); + background: rgba(247, 242, 234, 0.95); +} + +.theme-tech .topnav.is-scrolled { + border-bottom-color: rgba(196, 163, 90, 0.22); + background: rgba(18, 16, 20, 0.96); +} + +.theme-tech .nav-links a { + color: rgba(243, 236, 228, 0.72); +} + +.theme-tech .nav-links a:hover, +.theme-tech .nav-links a.is-active { + color: var(--gold); +} + +.theme-tech .nav-links a.is-active::after { + background: var(--gold); +} + +.theme-tech .mobile-drawer { + background: rgba(18, 16, 20, 0.98); +} + +.theme-tech .mobile-drawer a { + color: #f3ece4; + border-bottom-color: rgba(196, 163, 90, 0.15); +} + +.topnav-inner { + height: 100%; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; +} + +.brand { + display: inline-flex; + align-items: center; + gap: 0.65rem; + min-height: 2.75rem; +} + +.brand-logo { + width: 2.2rem; + height: 2.2rem; + object-fit: contain; +} + +.brand-text { + font-size: 1.15rem; + color: var(--brand); + letter-spacing: 0.08em; +} + +.nav-links { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + gap: 0.15rem 0.85rem; + max-width: 58rem; +} + +.nav-links a { + position: relative; + font-size: 0.86rem; + color: var(--ink-soft); + padding: 0.35rem 0; + transition: color 0.25s var(--ease); +} + +.nav-links a:hover, +.nav-links a.is-active { + color: var(--brand); +} + +.nav-links a.is-active::after { + content: ''; + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 1px; + background: var(--brand); + transform-origin: left; + animation: lineGrow 0.45s var(--ease) both; +} + +.menu-toggle { + position: relative; + z-index: 1002; + width: 2.75rem; + height: 2.75rem; + display: inline-flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 0.35rem; +} + +.menu-toggle span { + width: 1.35rem; + height: 1.5px; + background: var(--brand); + transition: transform 0.3s var(--ease); +} + +.mobile-drawer { + position: fixed; + inset: var(--nav-h) 0 0 0; + z-index: 1001; + background: rgba(247, 242, 234, 0.98); + backdrop-filter: blur(16px); + padding: 1.5rem 1.25rem 2rem; + transform: translateX(100%); + transition: transform 0.4s var(--ease); + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +.mobile-drawer.is-open { + transform: translateX(0); +} + +.mobile-drawer a { + display: flex; + align-items: center; + min-height: 2.75rem; + border-bottom: 1px solid rgba(166, 28, 32, 0.1); + font-size: 1.05rem; + color: var(--ink); +} + +.mobile-drawer a:hover { + color: var(--brand); +} + +.nav-groups { + display: flex; + align-items: stretch; + gap: 0.35rem 1.1rem; + height: 100%; +} + +.nav-group { + position: relative; + display: flex; + align-items: center; + height: 100%; +} + +.nav-group-title { + display: inline-flex; + align-items: center; + gap: 0.35rem; + min-height: 2.75rem; + font-size: 0.92rem; + color: var(--ink-soft); + letter-spacing: 0.06em; + transition: color 0.25s var(--ease); +} + +.nav-chevron { + width: 0.4rem; + height: 0.4rem; + border-right: 1.5px solid currentColor; + border-bottom: 1.5px solid currentColor; + transform: rotate(45deg) translateY(-0.1rem); + opacity: 0.55; + transition: transform 0.3s var(--ease), opacity 0.25s var(--ease); +} + +.nav-group:hover .nav-group-title, +.nav-group.is-current .nav-group-title, +.nav-group.is-open .nav-group-title { + color: var(--brand); +} + +.nav-group:hover .nav-chevron, +.nav-group.is-open .nav-chevron { + opacity: 1; + transform: rotate(225deg) translateY(-0.05rem); +} + +.nav-dropdown { + position: absolute; + top: calc(100% - 0.1rem); + left: 50%; + transform: translateX(-50%) translateY(0.55rem) scale(0.98); + min-width: 13.5rem; + padding: 0.85rem 0.75rem 0.9rem; + background: var(--paper); + border: 1px solid rgba(166, 28, 32, 0.12); + border-radius: 0.2rem; + box-shadow: 0 1.1rem 2.4rem rgba(26, 21, 18, 0.12); + opacity: 0; + visibility: hidden; + pointer-events: none; + transition: opacity 0.28s var(--ease), transform 0.28s var(--ease), visibility 0.28s; + z-index: 50; +} + +.nav-dropdown::before { + content: ''; + position: absolute; + left: 0.85rem; + right: 0.85rem; + top: 0; + height: 2px; + background: linear-gradient(90deg, transparent, var(--gold), transparent); +} + +.nav-dropdown.is-wide { + min-width: 22rem; + left: 50%; +} + +.nav-group:hover .nav-dropdown, +.nav-group.is-open .nav-dropdown { + opacity: 1; + visibility: visible; + pointer-events: auto; + transform: translateX(-50%) translateY(0) scale(1); +} + +.nav-drop-section + .nav-drop-section { + margin-top: 0.7rem; + padding-top: 0.7rem; + border-top: 1px solid rgba(166, 28, 32, 0.1); +} + +.nav-drop-label { + margin: 0 0.35rem 0.4rem; + font-size: 0.72rem; + letter-spacing: 0.18em; + color: var(--gold); + text-transform: none; +} + +.nav-drop-list.is-cols { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.1rem 0.35rem; +} + +.nav-drop-item { + --i: 0; + position: relative; + display: flex; + align-items: center; + min-height: 2.35rem; + padding: 0 0.85rem 0 1.05rem; + font-size: 0.88rem; + color: var(--ink-soft); + white-space: nowrap; + border-radius: 0.12rem; + opacity: 0; + transform: translateY(0.35rem); + transition: color 0.22s var(--ease), background 0.22s var(--ease), transform 0.22s var(--ease); +} + +.nav-group:hover .nav-drop-item, +.nav-group.is-open .nav-drop-item { + opacity: 1; + transform: translateY(0); + transition-delay: calc(var(--i) * 35ms); +} + +.nav-drop-item::before { + content: ''; + position: absolute; + left: 0.25rem; + top: 50%; + width: 2px; + height: 0; + background: var(--brand); + transform: translateY(-50%); + transition: height 0.22s var(--ease); +} + +.nav-drop-item:hover, +.nav-drop-item.is-active { + color: var(--brand); + background: var(--brand-soft); + transform: translateX(0.15rem); +} + +.nav-drop-item:hover::before, +.nav-drop-item.is-active::before { + height: 1.05rem; +} + +.nav-drop-item.deep { + font-size: 0.84rem; +} + +.stage-links { + max-width: 70rem; + justify-content: flex-end; +} + +.mobile-group-title { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + min-height: 2.9rem; + border-bottom: 1px solid rgba(166, 28, 32, 0.1); + color: var(--ink); + font-size: 1.05rem; +} + +.mobile-chevron { + width: 0.55rem; + height: 0.55rem; + border-right: 1.5px solid var(--brand); + border-bottom: 1.5px solid var(--brand); + transform: rotate(45deg); + transition: transform 0.3s var(--ease); +} + +.mobile-group.is-open .mobile-chevron { + transform: rotate(225deg); +} + +.mobile-group-panel { + max-height: 0; + overflow: hidden; + opacity: 0; + padding: 0 0 0 0.75rem; + border-left: 2px solid transparent; + transition: max-height 0.35s var(--ease), opacity 0.28s var(--ease), padding 0.28s var(--ease), border-color 0.28s; +} + +.mobile-group.is-open .mobile-group-panel { + max-height: 40rem; + opacity: 1; + padding: 0.35rem 0 0.85rem 0.85rem; + border-left-color: rgba(166, 28, 32, 0.22); +} + +.mobile-drop-label { + margin: 0.55rem 0 0.2rem; + font-size: 0.72rem; + letter-spacing: 0.16em; + color: var(--gold); +} + +.mobile-group-panel a { + font-size: 0.95rem; + color: var(--ink-soft); + border-bottom-color: rgba(166, 28, 32, 0.06); +} + +.mobile-group-panel a.is-deep { + font-size: 0.9rem; + padding-left: 0.35rem; +} + +.theme-tech .nav-group-title, +.theme-tech .nav-drop-item { + color: rgba(243, 236, 228, 0.72); +} + +.theme-tech .nav-group:hover .nav-group-title, +.theme-tech .nav-group.is-current .nav-group-title, +.theme-tech .nav-drop-item:hover, +.theme-tech .nav-drop-item.is-active { + color: var(--gold); +} + +.theme-tech .nav-dropdown { + background: rgba(28, 25, 31, 0.98); + border-color: var(--tech-line); +} + +.theme-tech .nav-drop-item::before { + background: var(--gold); +} + +.theme-tech .nav-drop-item:hover, +.theme-tech .nav-drop-item.is-active { + background: rgba(196, 163, 90, 0.1); +} + +.theme-tech .nav-drop-section + .nav-drop-section { + border-top-color: rgba(196, 163, 90, 0.18); +} + +@media (max-width: 64rem) and (min-width: 48.0625rem) { + .nav-links { + gap: 0.1rem 0.55rem; + } + + .nav-links a, + .nav-group-title { + font-size: 0.78rem; + } + + .nav-groups { + gap: 0.25rem 0.65rem; + } + + .nav-dropdown.is-wide { + min-width: 18rem; + } +} diff --git a/src/components/Nav.tsx b/src/components/Nav.tsx new file mode 100644 index 0000000..b5edb0d --- /dev/null +++ b/src/components/Nav.tsx @@ -0,0 +1,195 @@ +import { NavLink, Link, useLocation } from 'react-router-dom' +import { useEffect, useState, type CSSProperties } from 'react' +import { images } from '../content/site' +import { findGroupByPath, navGroups, stageNavItems, type NavChild, type NavGroup } from '../content/nav' +import { useStageMode } from '../hooks/useStageMode' +import './Nav.css' + +function withStage(path: string, isStage: boolean) { + if (!isStage) return path + if (path === '/') return '/?mode=stage' + return `${path}?mode=stage` +} + +function splitChildren(children: NavChild[]) { + return { + main: children.filter((c) => c.kind === 'main'), + deep: children.filter((c) => c.kind === 'deep'), + } +} + +function isWideGroup(group: NavGroup) { + return group.id === 'culture' || group.id === 'qingxiang' +} + +export function Nav() { + const isStage = useStageMode() + const location = useLocation() + const [drawerOpen, setDrawerOpen] = useState(false) + const [scrolled, setScrolled] = useState(false) + const [openGroup, setOpenGroup] = useState(null) + const activeGroup = findGroupByPath(location.pathname) + + useEffect(() => { + const onScroll = () => setScrolled(window.scrollY > 12) + onScroll() + window.addEventListener('scroll', onScroll, { passive: true }) + return () => window.removeEventListener('scroll', onScroll) + }, []) + + useEffect(() => { + document.body.style.overflow = drawerOpen ? 'hidden' : '' + return () => { + document.body.style.overflow = '' + } + }, [drawerOpen]) + + useEffect(() => { + setDrawerOpen(false) + setOpenGroup(null) + }, [location.pathname, location.search]) + + if (isStage) { + return ( +
+
+ + 杜康好客 + 杜康好客 · 展控 + + +
+
+ ) + } + + return ( +
+
+ setDrawerOpen(false)}> + 杜康好客 + 杜康好客 + + + + + +
+ +
+ +
+
+ ) +} diff --git a/src/components/PageHero.tsx b/src/components/PageHero.tsx new file mode 100644 index 0000000..36fe84b --- /dev/null +++ b/src/components/PageHero.tsx @@ -0,0 +1,35 @@ +import type { ReactNode } from 'react' +import { Reveal } from './Reveal' + +type PageHeroProps = { + eyebrow: string + title: string + lead: string + image?: string + imageAlt?: string + children?: ReactNode +} + +export function PageHero({ eyebrow, title, lead, image, imageAlt = '', children }: PageHeroProps) { + return ( +
+
+
+ +

{eyebrow}

+

{title}

+

{lead}

+ {children} +
+ {image ? ( + +
+ {imageAlt} +
+
+ ) : null} +
+
+
+ ) +} diff --git a/src/components/Reveal.tsx b/src/components/Reveal.tsx new file mode 100644 index 0000000..984397a --- /dev/null +++ b/src/components/Reveal.tsx @@ -0,0 +1,48 @@ +import { useEffect, useRef, type ReactNode } from 'react' + +type RevealProps = { + children: ReactNode + className?: string + /** Custom animation class applied when in view, e.g. anim-slide-left */ + variant?: string + delayMs?: number +} + +export function Reveal({ children, className = '', variant = 'anim-rise', delayMs = 0 }: RevealProps) { + const ref = useRef(null) + + useEffect(() => { + const node = ref.current + if (!node) return + + if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { + node.classList.add('is-in') + return + } + + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + node.classList.add('is-in') + observer.unobserve(node) + } + }) + }, + { threshold: 0.16, rootMargin: '0px 0px -6% 0px' }, + ) + + observer.observe(node) + return () => observer.disconnect() + }, []) + + return ( +
+ {children} +
+ ) +} diff --git a/src/content/deep/assets.ts b/src/content/deep/assets.ts new file mode 100644 index 0000000..4a6319b --- /dev/null +++ b/src/content/deep/assets.ts @@ -0,0 +1,34 @@ +export const deepImages = { + brand: [ + '/assets/brand/emb_p6_5.png', + '/assets/brand/emb_p31_1.png', + '/assets/brand/emb_p15_3.png', + '/assets/brand/emb_p33_1.png', + '/assets/brand/photo_p11_1.jpg', + '/assets/brand/photo_p8_4.jpg', + ], + poetry: [ + '/assets/poetry/emb_p33_4.png', + '/assets/poetry/emb_p49_4.png', + '/assets/poetry/emb_p59_4.png', + '/assets/poetry/emb_p67_4.png', + '/assets/poetry/emb_p25_4.png', + '/assets/poetry/emb_p66_4.png', + ], + qingxiang: [ + '/assets/qingxiang/emb_p7_5.png', + '/assets/qingxiang/emb_p6_8.png', + '/assets/qingxiang/emb_p7_4.png', + '/assets/qingxiang/emb_p12_2.png', + '/assets/qingxiang/emb_p7_6.png', + '/assets/qingxiang/emb_p6_2.png', + '/assets/t30-bottle.png', + ], +} + +export function resolveStageRedirect(pathname: string): string | null { + if (pathname.startsWith('/culture/')) return '/brand' + if (pathname.startsWith('/poetry/') && pathname !== '/poetry') return '/poetry' + if (pathname.startsWith('/qingxiang/') && pathname !== '/qingxiang') return '/qingxiang' + return null +} diff --git a/src/content/deep/culture.ts b/src/content/deep/culture.ts new file mode 100644 index 0000000..14cfcf3 --- /dev/null +++ b/src/content/deep/culture.ts @@ -0,0 +1,307 @@ +import type { DeepPageContent } from './types' +import { deepImages } from './assets' + +const B = deepImages.brand + +/** Deep-page images are unique across culture pages (no reuse). */ +export const culturePages: DeepPageContent[] = [ + { + path: '/culture/status', + group: 'culture', + navLabel: '文化地位', + eyebrow: '品牌传承 · 深读', + title: '杜康文化在中国酒文化中的地位', + lead: '杜康,是中国秫酒的「酒宗」「酒祖」。杜康造酒,不仅肇始了华夏酒业的辉煌诞生,铸就了酒行业顶礼膜拜的精神图腾,而且创造了行业特征与地域色彩交相辉映的杜康文化。', + layout: 'essay', + images: [B[0]], + blocks: [ + { + type: 'paragraph', + text: '经过上下五千年的岁月积淀,这种文化形态所蕴含的思想观念、人文情怀、道德规范和意志品质,已成为中国酒文化的标志性符号。历史典籍的记载奠定了杜康的酒祖地位,使杜康文化成为中国酒文化的「精神原点」。', + }, + { + type: 'heading', + text: '酒神的诞生', + }, + { + type: 'paragraph', + text: '从谷物发酵到文明觉醒,杜康文化被赋予通神媒介,成为礼制变迁的物化见证。酒祖杜康被世人尊崇为「酒神」,是杜康文化区别于其他酒文化的主要特征。世人敬奉杜康的记载始见于隋唐。继隋人王绩的《祭杜康新庙文》之后,关于「酒神」的颂词便不断地见诸文人笔下。', + }, + { + type: 'quote', + text: '他年血食汝,当配杜康神。', + source: '宋 · 苏轼《饮酒四首》', + }, + { + type: 'paragraph', + text: '在民间,对杜康的崇拜以及和酒神对话的宗教意识更具生命力。酒祖故里的杜康祠祭祀酒祖的完整仪轨,酿酒作坊供奉杜康神像的传统已延续千年。杜康封坛仪式、祭祖大典等传统习俗一直保持着上古酒祭的遗风。', + }, + { + type: 'heading', + text: '酒以成礼', + }, + { + type: 'paragraph', + text: '杜康文化衍化出的「饮惟祀」的酒德观念,揭示了「国之大事,在祀在戎」的深层关联,塑造了中国人「酒以成礼」的文明传统。这位「始作秫酒」的传奇人物,早已超越了具体的历史人物形象,演变为民族创造力的精神图腾。', + }, + { + type: 'paragraph', + text: '因而,理解杜康文化,不能只停留在「一个酒名」的层面。它是典籍立名、祠祀传承、诗酒互证与当代产业复兴共同编织的文化系统——既属于历史,也属于仍在杯盏间延续的日常。', + }, + ], + closing: '站在今日回望,杜康如一坛陈年佳酿——愈久愈醇,愈传愈清。', + }, + { + path: '/culture/person', + group: 'culture', + navLabel: '杜康其人', + eyebrow: '品牌传承 · 深读', + title: '杜康其人', + lead: '先秦典籍《世本》载「杜康作秫酒」;东汉许慎《说文解字》谓:「古者少康初作箕帚、秫酒。少康,杜康也。」酒之所兴,肇自上皇。', + layout: 'person', + images: [B[1]], + blocks: [ + { + type: 'paragraph', + text: '关于杜康的生平,历代文献记载虽有异说,但其「始作秫酒」的文化身份却高度一致。杜康既是人名,也逐渐成为地名与酒名——三重身份相互映照,构成中国酒文化最独特的符号结构。', + }, + { + type: 'heading', + text: '典籍中的酒祖', + }, + { + type: 'paragraph', + text: '《世本》将杜康写入文明源头叙事;《说文解字》以语言学佐证「少康即杜康」。后世史家、文人不断追述,使杜康从传说人物上升为可被祭祀、可被吟咏、可被继承的文化共主。', + }, + { + type: 'list', + items: [ + '人名:始酿秫酒的传奇人物', + '地名:杜康村、杜康泉、杜康仙庄等地理记忆', + '酒名:杜康成为清香美酒与诗酒意象的通行符号', + ], + }, + { + type: 'heading', + text: '从人物到符号', + }, + { + type: 'paragraph', + text: '当「杜康」同时指向人、地、酒,它便不再只是传记对象,而是一套可被世代调用的文化语法。正因如此,走进杜康,从来不只是认识一个人,而是进入一整套关于粮食、礼乐、故土与诗心的文明系统。', + }, + ], + }, + { + path: '/culture/brew', + group: 'culture', + navLabel: '杜康造酒', + eyebrow: '品牌传承 · 深读', + title: '杜康造酒', + lead: '西晋江统《酒诰》云:酒之所兴,肇自上皇;或云仪狄,一曰杜康。有饭不尽,委余空桑,郁积成味,久蓄气芳——本出于此,不由奇方。', + layout: 'timeline', + images: [B[2]], + blocks: [ + { + type: 'list', + items: [ + '余饭委空桑:偶然的发酵,成为文明对自然法则的觉悟', + '以秫为骨:原料之纯,决定酒体之正', + '以曲为魂:曲药生香,技艺传续', + '清蒸二次清:后世清香路径仍可辨认的工艺基因', + '从作坊到祠祀:造酒升华为礼乐与祭祀的文明工程', + ], + }, + { + type: 'heading', + text: '空桑造酒', + }, + { + type: 'paragraph', + text: '「空桑造酒」的叙事,把偶然的余饭发酵,升华为文明对自然法则的觉悟。杜康并非炫技的奇方发明者,而是把「以秫为骨、以曲为魂」的智慧带入人间日常的那一位。', + }, + { + type: 'quote', + text: '有饭不尽,委余空桑,郁积成味,久蓄气芳。', + source: '晋 · 江统《酒诰》', + }, + { + type: 'paragraph', + text: '秫酒传统强调原料之纯与工艺之清。清蒸、清糟、清烧的路径,在后世清香型白酒中仍清晰可辨。杜康造酒遗址公园内,至今仍生长着被称为「酒树」的古树,枝繁叶茂,见证酒兴千年。', + }, + ], + closing: '技进乎道,香传千年。', + }, + { + path: '/culture/temple', + group: 'culture', + navLabel: '杜康祠', + eyebrow: '品牌传承 · 深读', + title: '杜康祠', + lead: '杜康因始创秫酒被称为酒祖。唐宋以来,杜康祠、杜康庙遍布各地;古人敬酒祖、拜酒神,多在杜康祠内完成。', + layout: 'shrine', + images: [B[3]], + blocks: [ + { + type: 'paragraph', + text: '杜康造酒遗址公园内的杜康祠,为当今规模大、保留完整的古建筑群之一。祠祀仪轨延续封坛祭祖的遗风,使「饮惟祀」的酒德观念可触可感。', + }, + { + type: 'heading', + text: '祠祀与诗心', + }, + { + type: 'paragraph', + text: '苏轼有「从今东坡室,不立杜康祀」之句,正说明杜康祠祀在文人精神世界中的位置——可立可罢,却始终是心灵秩序的参照。陆游「堂上祠杜康」、周淑禧《杜康庙》等作品,亦不断加固这一文化记忆。', + }, + { + type: 'list', + items: ['封坛祭祖:延续上古酒祭遗风', '供奉神像:酿酒作坊千年传统', '诗酒互证:祠祀进入文人书写'], + }, + { + type: 'paragraph', + text: '走进杜康祠,看见的不只是建筑与香火,更是一条把「酒」抬升为「礼」的文化路径:敬畏粮食、敬畏创造、敬畏可共享的人间秩序。', + }, + ], + }, + { + path: '/culture/sites', + group: 'culture', + navLabel: '造酒遗址', + eyebrow: '品牌传承 · 深读', + title: '杜康造酒遗址', + lead: '杜康村、杜康泉、空桑涧……酒祖故里的山水与作坊,把「故土」写成可以走入的文化现场。', + layout: 'sites', + images: [B[4]], + blocks: [ + { + type: 'heading', + text: '杜康村', + }, + { + type: 'paragraph', + text: '村落因酒祖得名,也因酒香延续。山水环抱之中,作坊、祠庙与口述传统并存,构成活态的遗产空间。访客在巷陌与田野间行走,便是在阅读一部不用翻页的酒史。', + }, + { + type: 'heading', + text: '杜康泉', + }, + { + type: 'paragraph', + text: '泉脉滋养酿造,也滋养地方记忆。好水出好酒,在酒祖叙事里不是广告语,而是地理与工艺相互成就的常识。泉、曲、粮、火,共同写下清香的底色。', + }, + { + type: 'heading', + text: '遗址中的文明证据', + }, + { + type: 'paragraph', + text: '从空桑传说到全国重点文物保护单位的碑刻与陵寝记忆,故里把「可说的史」与「可见的物」叠合在一起,让访客在行走中完成对酒祖的确认。', + }, + ], + }, + { + path: '/culture/figures', + group: 'culture', + navLabel: '名人与杜康', + eyebrow: '品牌传承 · 深读', + title: '名人与杜康', + lead: '三曹、苏轼、邵雍,乃至近现代政治人物与杜康的交集,使酒祖叙事不断获得新的时代回声。', + layout: 'figures', + images: [B[5]], + blocks: [ + { + type: 'heading', + text: '三曹与杜康', + }, + { + type: 'paragraph', + text: '曹操《短歌行》「何以解忧,唯有杜康」一出,杜康从酒祖之名跃升为诗心密码。曹植等作品亦把酒与志向、生命感喟相连,奠定魏晋诗性转化的基调。', + }, + { + type: 'heading', + text: '苏轼与杜康', + }, + { + type: 'paragraph', + text: '苏轼一生爱酒,也爱杜康。贬谪海南途中,仍以杜康为兄弟相别、自我安顿的意象——「从今东坡室,不立杜康祀」的旷达背后,是诗酒对命运的温柔对抗。', + }, + { + type: 'heading', + text: '时代回响', + }, + { + type: 'paragraph', + text: '从邵雍安乐窝的哲思,到当代「复兴杜康」的历史批示记忆,名人与杜康的对话从未停止。酒祖因此始终活在公共文化的现场,而不只沉睡在典籍里。', + }, + ], + }, + { + path: '/culture/chronicle', + group: 'culture', + navLabel: '大事记', + eyebrow: '品牌传承 · 深读', + title: '杜康大事记', + lead: '从先秦典籍立名,到魏晋诗性转化,再到祠祀千年与当代品牌复兴——时间本身,就是最好的陈酿。', + layout: 'timeline', + images: [], + blocks: [ + { + type: 'list', + items: [ + '先秦:典籍记载「杜康作秫酒」,酒祖身份确立', + '魏晋:曹操《短歌行》完成诗性转化,杜康进入文人精神世界', + '隋唐:祭文与祠庙推动酒神崇拜,杜康可祀可敬', + '唐宋以降:杜康祠庙广布,文人吟咏与地方祭祀并行', + '近现代:故里保护、产业复兴与文化传播相互推动', + '当代:酒祖杜康清香品牌复兴,好客机制让千年清香可落地', + ], + }, + { + type: 'heading', + text: '香传的线索', + }, + { + type: 'paragraph', + text: '大事记不是年表的堆砌,而是一条「香传」的线索:每一次被书写、被祭祀、被酿造,都是杜康文化的再一次醒酒。沿着时间往前走,也能看见清香如何从典籍走入杯盏,从纪念走入日常。', + }, + ], + closing: '先秦立名 → 魏晋诗化 → 祠祀千年 → 当代复兴', + }, + { + path: '/culture/factory', + group: 'culture', + navLabel: '酒厂介绍', + eyebrow: '品牌传承 · 深读', + title: '酒厂介绍', + lead: '山西杜康酒业扎根杏花村千年酿酒圣地,与清香名酒同源同脉,一清到底。', + layout: 'factory', + images: [], + blocks: [ + { + type: 'paragraph', + text: '酒厂承续酒祖故里与产区生态,以清香工艺与品质体系服务宴请与日常多场景。品牌不只卖酒,更把「酒祖叙事 + 清香表达 + 好客机制」做成可感知的体验。', + }, + { + type: 'heading', + text: '产区与使命', + }, + { + type: 'paragraph', + text: '杏花村一带的酿酒微气候与生态,为清香提供了稳定的地理底座。企业以「坚守纯粹品质,悦享清逸人生」为使命句,把品质、体验与城市运营放在同一条链路里。', + }, + { + type: 'list', + items: [ + '产区:杏花村一带酿酒生态与微气候', + '工艺:清香「7321」路径,讲究清蒸二次清', + '体验:文化馆、品鉴与溯源之旅可走入', + '使命:坚守纯粹品质,悦享清逸人生', + ], + }, + { + type: 'paragraph', + text: '当酒厂资源与城市运营、门店核销连成闭环,酒祖的清香便从典籍走进餐桌,从纪念走进日常。', + }, + ], + }, +] diff --git a/src/content/deep/poetry.ts b/src/content/deep/poetry.ts new file mode 100644 index 0000000..e91a17e --- /dev/null +++ b/src/content/deep/poetry.ts @@ -0,0 +1,126 @@ +import type { DeepPageContent } from './types' +import { deepImages } from './assets' + +const P = deepImages.poetry + +/** Unique images among poetry deep pages. */ +export const poetryDeepPages: DeepPageContent[] = [ + { + path: '/poetry/anthology', + group: 'poetry', + navLabel: '诗酒选萃', + eyebrow: '诗酒文化 · 深读', + title: '酒香醉天下,千年诗未央', + lead: '「诗酒」二字,是中国人心里最动人的共鸣。以杜康为意象创作的诗词曲赋,名家荟萃:曹操、曹植、杜甫、白居易、苏轼、辛弃疾……把一抹醇香写进东方美学。', + layout: 'poem-wall', + images: [P[0]], + blocks: [ + { + type: 'paragraph', + text: '《杜康古诗词曲赋译注》精选汉代至清代关于杜康的韵文作品数十篇。走进这些篇章,才能体味先贤对生命、创造与宿命的感悟。诗与酒彼此成全:酒给诗以温度,诗给酒以永恒。', + }, + { + type: 'heading', + text: '主诗签 · 曹操《短歌行》', + }, + { + type: 'quote', + text: '对酒当歌,人生几何?譬如朝露,去日苦多。……何以解忧,唯有杜康。', + source: '东汉 · 曹操《短歌行》', + }, + { + type: 'paragraph', + text: '一边饮酒一边高歌,一边感慨叹息:人生短促,像晨露转瞬即逝。什么可以消除心中的忧愁?唯有杜康美酒。魏武帝以此完成从酒祖之名到诗心密码的决定性转化。', + }, + { + type: 'heading', + text: '辅诗签 · 苏轼', + }, + { + type: 'quote', + text: '他年血食汝,当配杜康神。', + source: '宋 · 苏轼', + }, + { + type: 'heading', + text: '辅诗签 · 白居易', + }, + { + type: 'quote', + text: '不似杜康神用速,十分一盏便开眉。', + source: '唐 · 白居易', + }, + { + type: 'paragraph', + text: '白居易写杜康酒能使人愁苦尽消;十分之一杯便足以开眉展颜——神速、开眉,是唐人对杜康最亲切的体认。', + }, + { + type: 'heading', + text: '辅诗签 · 辛弃疾', + }, + { + type: 'quote', + text: '杜康初筮,正得云雷。', + source: '宋 · 辛弃疾', + }, + { + type: 'paragraph', + text: '从魏武的感喟,到唐人的开眉,再到宋人的神思——杜康完成了从「酒祖」到「诗心密码」的转化,成为文人精神世界的通行意象。', + }, + ], + closing: '斟半盏清醑,展卷轻吟:让酒香携着古人的魂魄,穿越千年与我们共醉。', + }, + { + path: '/poetry/tang', + group: 'poetry', + navLabel: '唐宋余韵', + eyebrow: '诗酒文化 · 深读', + title: '唐宋余韵:开眉与神思', + lead: '唐人开眉,宋人神思。杜康在不同朝代被反复调用,成为情绪、命运与礼赞的公共修辞。', + layout: 'ink-scroll', + images: [P[1]], + blocks: [ + { + type: 'heading', + text: '江统《酒诰》', + }, + { + type: 'quote', + text: '酒之所兴,肇自上皇。或云仪狄,一曰杜康。有饭不尽,委余空桑,郁积成味,久蓄气芳。本出于此,不由奇方。', + source: '晋 · 江统', + }, + { + type: 'paragraph', + text: '这篇文献把造酒还原为自然与日用的相遇,也为后世「空桑造酒」图像提供了经典出处。它提醒我们:杜康之美,首先来自对日常与自然的诚实。', + }, + { + type: 'heading', + text: '王绩《祭杜康新庙文》', + }, + { + type: 'paragraph', + text: '隋唐之际,祭文把杜康正式推上「可祀」的神位。酒祖不仅可饮可咏,更可敬可拜——诗酒文化由此与祠祀传统合流。庙与诗、香火与墨迹,共同把杜康写进公共记忆。', + }, + { + type: 'heading', + text: '苏黄辛陆的回声', + }, + { + type: 'paragraph', + text: '苏轼、张耒、晁说之、陆游等不断以杜康入诗。或配神,或皈依,或庙里做忠臣——杜康成为文人自我安顿时最顺手的一杯。', + }, + { + type: 'list', + items: [ + '唐:开眉、神用速,贴近日常情感', + '宋:配神、初筮云雷,指向命运与哲思', + '后世:祭庙、踏青、题咏,杜康成为可游可祀的文化现场', + ], + }, + { + type: 'paragraph', + text: '读唐宋余韵,是在听一条悠长的回声:每个时代都借杜康说出自己的忧与喜。酒未冷,诗未央。', + }, + ], + }, +] diff --git a/src/content/deep/qingxiang.ts b/src/content/deep/qingxiang.ts new file mode 100644 index 0000000..901b1a3 --- /dev/null +++ b/src/content/deep/qingxiang.ts @@ -0,0 +1,273 @@ +import type { DeepPageContent } from './types' +import { deepImages } from './assets' + +const Q = deepImages.qingxiang + +/** + * Unique images across qingxiang deep pages: + * project=Q5, style=Q3, experience=Q1, tour=Q0 hall + * position / tasting = text-only + * Q2/Q4/Q6 reserved for main landing (hall/storefront/bottle) + */ +export const qingxiangDeepPages: DeepPageContent[] = [ + { + path: '/qingxiang/project', + group: 'qingxiang', + navLabel: '项目与赛道', + eyebrow: '清香宝典 · 深读', + title: '清香是未来白酒行业的黄金赛道', + lead: '浓香内卷、酱香回落的时代,清香正成为确定性更强的黄金赛道。酒祖杜康扎根山西杏花村——千年酒都,与清香名酒同源同脉,一清到底。', + layout: 'manifesto', + images: [Q[5]], + blocks: [ + { + type: 'paragraph', + text: '山西杜康酒业有限公司以酒祖杜康清香系列产品为经营主线,位于中国白酒名镇山西汾阳。产区与名酒企业同脉相邻,共享酿酒微气候与生态。选择清香,是选择一条更干净、更可持续、更适配当代饮酒场景的路径。', + }, + { + type: 'heading', + text: '杜康清香模式', + }, + { + type: 'paragraph', + text: '以杜康文化为核心,以沉浸式体验为营销抓手,把社群变成增长引擎。一套可复制的体验闭环:一座杜康文化馆,一瓶杜康清香酒,一桌杜康好客宴,一群杜康粉丝圈。', + }, + { + type: 'list', + items: [ + '文化馆:可参观、可讲解、可品鉴', + '产品:清香表达清晰,适配宴请与日常', + '宴席:酒餐同赴,把体验落在餐桌上', + '社群:口碑裂变,让清香可传播', + ], + }, + { + type: 'paragraph', + text: '赛道判断要落到可运营的模式上。清香不只是风味标签,更是「文化可讲、产品可品、宴请可落、社群可传」的系统能力。', + }, + ], + }, + { + path: '/qingxiang/position', + group: 'qingxiang', + navLabel: '定位与价值', + eyebrow: '清香宝典 · 深读', + title: '杜康清香的定位与使命', + lead: '承千年清韵,铸清香白酒标杆企业。守古法清酿,酿纯粹绵柔清雅好酒。', + layout: 'matrix', + images: [], + blocks: [ + { + type: 'heading', + text: '四维定位', + }, + { + type: 'list', + items: [ + '企业定位:承千年清韵,铸清香白酒标杆企业', + '品质定位:守古法清酿,酿纯粹绵柔清雅好酒', + '品牌定位:传酒祖清魂,塑高端清香文化名酒', + '营销定位:拓清香赛道,引全民清雅饮酒新风尚', + ], + }, + { + type: 'heading', + text: '价值观', + }, + { + type: 'list', + items: [ + '对产品:真材实料,好酒说话', + '对客户:以客为尊,让好客也能赚钱', + '对员工:成长与成果共享', + '对股东:稳健经营,可持续回报', + ], + }, + { + type: 'heading', + text: '使命', + }, + { + type: 'paragraph', + text: '使命句:坚守纯粹品质,悦享清逸人生。定位不是口号墙,而是产品、体验与合作机制共同兑现的承诺边界。', + }, + ], + }, + { + path: '/qingxiang/style', + group: 'qingxiang', + navLabel: '风格与工艺', + eyebrow: '清香宝典 · 深读', + title: '绵 · 净 · 雅,与清香五大法宝', + lead: '粮香纯正无杂味,清香干净通透;入口绵柔顺滑,落口爽利干脆;杂醇含量低,不口干、不上头,醒酒快。', + layout: 'triad', + images: [Q[3]], + blocks: [ + { + type: 'heading', + text: '绵', + }, + { + type: 'paragraph', + text: '入口绵柔顺滑,余味悠长。宴请与日常都需要「喝得下去、坐得住」的体感,绵是清香最易亲近的第一印象。', + }, + { + type: 'heading', + text: '净', + }, + { + type: 'paragraph', + text: '清香通透,一清到底,无杂味杂香。「净」是工艺自信:清蒸二次清的路径,让干净成为可被验证的风格。', + }, + { + type: 'heading', + text: '雅', + }, + { + type: 'paragraph', + text: '低刺激、多场景,商务与雅集皆宜。雅不是疏离,而是让饮酒回到从容与体面。', + }, + { + type: 'heading', + text: '工艺要点', + }, + { + type: 'paragraph', + text: '大麦、豌豆、高粱三种原料;清香「7321」工艺,讲究「清蒸二次清」「一清到底」,味道更醇厚。', + }, + { + type: 'heading', + text: '五大法宝', + }, + { + type: 'list', + items: [ + '产地:扎根杏花村千年酿酒圣地,同源同脉', + '基因:与龙头清香企业同脉同艺的品质参照', + '产能与粮源:稳定供给,品质可控', + '团队:专业品评与全链路品控', + '资本与体系:支撑产品规划与渠道建设', + ], + }, + ], + closing: '千年杜康,醉美清香。', + }, + { + path: '/qingxiang/tasting', + group: 'qingxiang', + navLabel: '品鉴玩法', + eyebrow: '清香宝典 · 深读', + title: '抿 · 咂 · 呵,与更多品鉴玩法', + lead: '一场好的品鉴,不只是喝,而是把感官、故事与互动编织在一起。', + layout: 'steps', + images: [], + blocks: [ + { + type: 'list', + items: [ + '抿——微启触香,品粮香本味', + '咂——舌卷含香,品绵柔入喉', + '呵——缓缓呵气,品回甘生津', + ], + }, + { + type: 'heading', + text: '观色 · 闻香 · 品味 · 余味', + }, + { + type: 'paragraph', + text: '观色:清亮透明微黄。闻香:粮香纯正清爽。品味:绵柔爽净,一清到底。余味:干净悠长,不上头。把感官步骤说清楚,用户才敢相信「好喝」不是推销。', + }, + { + type: 'heading', + text: '更多玩法', + }, + { + type: 'paragraph', + text: '地动山摇、肌肤相亲、酒王大赛、看酒花观挂杯、背标法等,让用户亲手证明「好不好喝」,比千言万语更有说服力。一次沉浸体验,往往胜过十次广告。', + }, + ], + }, + { + path: '/qingxiang/experience', + group: 'qingxiang', + navLabel: '沉浸体验', + eyebrow: '清香宝典 · 深读', + title: '三级沉浸式体验与品鉴会', + lead: '场景体验是用户快速认知的重要武器,也是制造口碑、传播引爆的发源地。', + layout: 'scenes', + images: [Q[1]], + blocks: [ + { + type: 'heading', + text: '三级体验', + }, + { + type: 'list', + items: [ + '酒厂文化溯源之旅:参观酿造、包装、酒库与遗址', + '杜康清香文化馆:沉浸式产品与文化体验', + '品鉴会 123:一场品鉴宴、两支宣传片、三本手册', + ], + }, + { + type: 'heading', + text: '文化馆「五个一」', + }, + { + type: 'list', + items: [ + '一尊酒祖像', + '一幅画(空桑秽饭图)', + '一首诗歌(《短歌行》)', + '一座杜康祠', + '一份伟大的批示记忆:复兴杜康,为国争光', + ], + }, + { + type: 'heading', + text: '体验闭环', + }, + { + type: 'paragraph', + text: '品鉴结束要闭环:发朋友圈、加好友、确认回访。体验不是热闹一场,而是把信任留下来。', + }, + ], + }, + { + path: '/qingxiang/tour', + group: 'qingxiang', + navLabel: '文化馆与溯源', + eyebrow: '清香宝典 · 深读', + title: '文化馆体验与酒厂溯源', + lead: '把杜康故事做成可走入的空间:讲解、观影、玩法、DIY 调酒与品鉴宴,一气呵成。', + layout: 'tour', + images: [Q[0]], + blocks: [ + { + type: 'list', + items: [ + '杜康文化讲解(约 10 分钟)', + '观看杜康清香宣传片(约 10 分钟)', + '白酒鉴赏玩法 2~3 种', + 'DIY 自调酒:留下专属标签', + '品鉴宴席与盲品', + '领导总结与欢送', + ], + }, + { + type: 'heading', + text: '溯源之旅', + }, + { + type: 'paragraph', + text: '走进厂区与遗址,看见粮、曲、窖、酒的真实路径。清香的「一清到底」,最终要在现场被看见、被闻到、被记住。空间叙事与产线真实,共同完成信任交付。', + }, + { + type: 'paragraph', + text: '文化馆不是展板堆砌,而是把酒祖、清香与好客连成可跟随的路径。每一次到访,都应留下可复述的故事与可回访的关系。', + }, + ], + closing: '让每一次到访,都成为一次清雅之约。', + }, +] diff --git a/src/content/deep/types.ts b/src/content/deep/types.ts new file mode 100644 index 0000000..60f3dd5 --- /dev/null +++ b/src/content/deep/types.ts @@ -0,0 +1,39 @@ +export type DeepBlock = + | { type: 'paragraph'; text: string } + | { type: 'quote'; text: string; source?: string } + | { type: 'list'; items: string[] } + | { type: 'heading'; text: string } + +/** Distinct page shells — not just a CSS rename of one template */ +export type DeepLayoutKind = + | 'essay' + | 'person' + | 'timeline' + | 'shrine' + | 'sites' + | 'figures' + | 'factory' + | 'poem-wall' + | 'ink-scroll' + | 'manifesto' + | 'matrix' + | 'triad' + | 'steps' + | 'scenes' + | 'tour' + +export type DeepPageContent = { + path: string + group: 'culture' | 'poetry' | 'qingxiang' + navLabel: string + eyebrow: string + title: string + lead: string + /** @deprecated kept for theme hints; prefer layout */ + variant?: 'classic' | 'scroll' | 'stage' | 'river' + layout: DeepLayoutKind + /** Unique across all deep pages; empty = text-only */ + images: string[] + blocks: DeepBlock[] + closing?: string +} diff --git a/src/content/nav.ts b/src/content/nav.ts new file mode 100644 index 0000000..42b1373 --- /dev/null +++ b/src/content/nav.ts @@ -0,0 +1,94 @@ +import { culturePages } from './deep/culture' +import { poetryDeepPages } from './deep/poetry' +import { qingxiangDeepPages } from './deep/qingxiang' +import type { DeepPageContent } from './deep/types' + +export const allDeepPages: DeepPageContent[] = [...culturePages, ...poetryDeepPages, ...qingxiangDeepPages] + +export const deepPageMap = Object.fromEntries(allDeepPages.map((p) => [p.path, p])) as Record< + string, + DeepPageContent +> + +export type NavChild = { label: string; path: string; kind: 'main' | 'deep' } + +export type NavGroup = { + id: string + label: string + /** first landing when clicking group title on desktop */ + entryPath: string + children: NavChild[] +} + +export const navGroups: NavGroup[] = [ + { + id: 'culture', + label: '酒祖文化', + entryPath: '/brand', + children: [ + { label: '品牌传承', path: '/brand', kind: 'main' }, + { label: '诗酒文化', path: '/poetry', kind: 'main' }, + ...culturePages.map((p) => ({ label: p.navLabel, path: p.path, kind: 'deep' as const })), + ...poetryDeepPages.map((p) => ({ label: p.navLabel, path: p.path, kind: 'deep' as const })), + ], + }, + { + id: 'qingxiang', + label: '清香臻品', + entryPath: '/qingxiang', + children: [ + { label: '清香', path: '/qingxiang', kind: 'main' }, + ...qingxiangDeepPages.map((p) => ({ label: p.navLabel, path: p.path, kind: 'deep' as const })), + ], + }, + { + id: 'haoke', + label: '好客体系', + entryPath: '/haoke', + children: [ + { label: '好客模式', path: '/haoke', kind: 'main' }, + { label: '三端协同', path: '/system', kind: 'main' }, + ], + }, + { + id: 'tech', + label: '科技实力', + entryPath: '/tech', + children: [ + { label: '科技驱动', path: '/tech', kind: 'main' }, + { label: '酒厂实力', path: '/subsidy', kind: 'main' }, + { label: '科技板块', path: '/tech-detail', kind: 'main' }, + ], + }, + { + id: 'contact', + label: '合作联系', + entryPath: '/partner', + children: [ + { label: '城市合伙人', path: '/partner', kind: 'main' }, + { label: '联系我们', path: '/contact', kind: 'main' }, + ], + }, +] + +/** flat main modules for stage mode */ +export const stageNavItems = [ + { path: '/', label: '首页' }, + { path: '/brand', label: '品牌传承' }, + { path: '/poetry', label: '诗酒文化' }, + { path: '/qingxiang', label: '清香' }, + { path: '/haoke', label: '好客模式' }, + { path: '/system', label: '三端协同' }, + { path: '/tech', label: '科技驱动' }, + { path: '/subsidy', label: '酒厂实力' }, + { path: '/partner', label: '城市合伙人' }, + { path: '/tech-detail', label: '科技板块' }, + { path: '/contact', label: '联系我们' }, +] + +export function findGroupByPath(pathname: string) { + return navGroups.find((g) => + g.children.some((c) => pathname === c.path || (c.path !== '/' && pathname.startsWith(`${c.path}/`))), + ) +} + diff --git a/src/content/site.ts b/src/content/site.ts new file mode 100644 index 0000000..b957f59 --- /dev/null +++ b/src/content/site.ts @@ -0,0 +1,327 @@ +export const navItems = [ + { path: '/brand', label: '品牌传承' }, + { path: '/poetry', label: '诗酒文化' }, + { path: '/qingxiang', label: '清香' }, + { path: '/haoke', label: '好客模式' }, + { path: '/system', label: '三端协同' }, + { path: '/tech', label: '科技驱动' }, + { path: '/subsidy', label: '酒厂实力' }, + { path: '/partner', label: '城市合伙人' }, + { path: '/tech-detail', label: '科技板块' }, + { path: '/contact', label: '联系我们' }, +] as const + +export const hero = { + brand: '酒祖杜康', + subBrand: '杜康好客', + title: '千年酒祖,一清到底', + subtitle: + '你请客,我买单。买酒送等价好客权益,到合作门店抵餐——让酒与席,同赴一场清雅之约。', + primaryCta: { label: '走进酒祖杜康', to: '/brand' }, + secondaryCta: { label: '了解城市合伙人', to: '/partner' }, +} + +export const brand = { + eyebrow: '品牌传承', + title: '酒祖杜康:中国酒文化的精神原点', + lead: + '杜康,被尊为秫酒「酒宗」「酒祖」,更被世人敬奉为「酒神」。从典籍到诗篇,从故里到祠祀,杜康不只是一杯酒的名字——它是华夏酿造文明的精神图腾。', + cards: [ + { + title: '典籍立祖', + text: '《世本》载「杜康作秫酒」;《说文解字》谓「少康,杜康也」。酒之所兴,肇自上皇——杜康造酒,写入中华文明的源头叙事。', + }, + { + title: '故里承源', + text: '杜康村、杜康泉、空桑涧……酒祖故里的山水与作坊,延续着「以秫为骨、以曲为魂」的古老智慧,让技进乎道,香传千年。', + }, + { + title: '酒以成礼', + text: '从封坛祭祖到「饮惟祀」的酒德观念,杜康文化把粮食之精,升华为礼乐之器——国之大事,在祀在戎,酒以成礼。', + }, + ], + timeline: ['先秦典籍立名', '魏晋诗性转化', '杜康祠祀千年', '当代酒祖品牌复兴'], + closing: '站在今日回望,杜康如一坛陈年佳酿——愈久愈醇,愈传愈清。', + deepReads: [ + { label: '文化地位', path: '/culture/status', blurb: '酒宗酒祖与酒神崇拜,何以成为中国酒文化精神原点。' }, + { label: '杜康其人', path: '/culture/person', blurb: '人名·地名·酒名:三重身份如何写成文明符号。' }, + { label: '杜康造酒', path: '/culture/brew', blurb: '空桑造酒与以秫为骨、以曲为魂的工艺叙事。' }, + { label: '杜康祠', path: '/culture/temple', blurb: '祠祀仪轨与「饮惟祀」的酒德传统。' }, + { label: '造酒遗址', path: '/culture/sites', blurb: '杜康村、杜康泉与可走入的故里现场。' }, + { label: '名人与杜康', path: '/culture/figures', blurb: '从三曹到苏轼,诗心与酒祖的对话。' }, + { label: '大事记', path: '/culture/chronicle', blurb: '先秦立名到当代复兴的香传线索。' }, + { label: '酒厂介绍', path: '/culture/factory', blurb: '杏花村产区、清香工艺与可感知体验。' }, + ], +} + +export const poetry = { + eyebrow: '诗酒文化', + title: '何以解忧,唯有杜康', + lead: + '「诗酒」二字,是中国人心里最动人的共鸣。千载光阴里,曹操、杜甫、白居易、苏轼、辛弃疾……无数名家以杜康为意象,把一抹醇香写进东方美学。', + mainPoem: { + quote: '对酒当歌,人生几何?……何以解忧,唯有杜康。', + source: '东汉 · 曹操《短歌行》', + }, + poems: [ + { quote: '他年血食汝,当配杜康神。', source: '宋 · 苏轼' }, + { quote: '不似杜康神用速,十分一盏便开眉。', source: '唐 · 白居易' }, + { quote: '杜康初筮,正得云雷。', source: '宋 · 辛弃疾' }, + ], + reading: + '从魏武的感喟,到唐人的开眉,再到宋人的神思——杜康完成了从「酒祖」到「诗心密码」的转化,成为文人精神世界的通行意象。', + closing: '斟半盏清醑,展卷轻吟:让酒香携着古人的魂魄,穿越千年与我们共醉。', + deepReads: [ + { label: '诗酒选萃', path: '/poetry/anthology', blurb: '主诗签与辅诗签:曹操、苏轼、白居易、辛弃疾。' }, + { label: '唐宋余韵', path: '/poetry/tang', blurb: '《酒诰》、祭文与开眉神思的时代回声。' }, + ], +} + +export const qingxiang = { + eyebrow: '清香宝典', + title: '千年杜康,醉美清香', + lead: + '浓香内卷、酱香回落的时代,清香正成为确定性更强的黄金赛道。酒祖杜康扎根山西杏花村——千年酒都,与清香名酒同源同脉,一清到底。', + positions: [ + { title: '企业定位', text: '承千年清韵,铸清香白酒标杆企业。' }, + { title: '品质定位', text: '守古法清酿,酿纯粹绵柔清雅好酒。' }, + { title: '品牌定位', text: '传酒祖清魂,塑高端清香文化名酒。' }, + { title: '营销定位', text: '拓清香赛道,引全民清雅饮酒新风尚。' }, + ], + styleWords: ['绵', '净', '雅'], + styleText: + '粮香纯正无杂味,清香干净通透;入口绵柔顺滑,落口爽利干脆;杂醇含量低,不口干、不上头,醒酒快——适配小酌与宴席多场景。', + craft: '大麦、豌豆、高粱三种原料;清香「7321」工艺,讲究「清蒸二次清」「一清到底」,味道更醇厚。', + origin: '扎根杏花村千年酿酒圣地,同源同脉,品质有据。', + tasting: [ + { title: '抿', text: '微启触香,品粮香本味' }, + { title: '咂', text: '舌卷含香,品绵柔入喉' }, + { title: '呵', text: '缓缓呵气,品回甘生津' }, + ], + mission: '坚守纯粹品质,悦享清逸人生。', + product: '酒祖杜康清香系列 T30', + deepReads: [ + { label: '项目与赛道', path: '/qingxiang/project', blurb: '黄金赛道判断与可复制的清香体验闭环。' }, + { label: '定位与价值', path: '/qingxiang/position', blurb: '四维定位、价值观与使命句。' }, + { label: '风格与工艺', path: '/qingxiang/style', blurb: '绵净雅与清香五大法宝。' }, + { label: '品鉴玩法', path: '/qingxiang/tasting', blurb: '抿咂呵与互动证明好喝。' }, + { label: '沉浸体验', path: '/qingxiang/experience', blurb: '三级体验与文化馆五个一。' }, + { label: '文化馆与溯源', path: '/qingxiang/tour', blurb: '到访流程与厂区溯源路径。' }, + ], +} + +export const haoke = { + eyebrow: '杜康好客', + title: '你请客,我买单', + lead: + '杜康好客,是酒祖杜康面向宴请场景的供应链与权益平台:总部供酒,城市合伙人推广,门店核销好客权益,用户一次购买,同时覆盖「酒 + 餐」。', + oneLiner: '买酒,送等价好客权益;到合作门店,按面额抵餐。', + points: [ + { + title: '酒餐同赴', + text: '商务宴请不必再「酒一套、餐一套」分开算。买多少酒,送多少面额的好客权益,让席间更从容。', + }, + { + title: '线上线下一体', + text: '小程序购酒、同城送达或现场提货;好客权益到合作门店核销——品牌、履约与核销,同一条链路。', + }, + { + title: '与餐饮共度时艰', + text: '把酒厂资源与门店客流重新连上:用户得实惠,门店得核销结算,合伙人得城市运营空间——让清香美酒,成为餐桌上的暖流。', + }, + ], + closing: '千年酒祖的清香,遇见一套可落地的好客机制。', +} + +export const system = { + eyebrow: '三端协同', + title: '城市合伙人 · 门店 · 用户,一城一盘棋', + lead: + '杜康好客用一套系统,把「推得动、核得清、买得爽」连成闭环——每一端各司其职,全城一起把清香与好客做起来。', + ends: [ + { + title: '城市合伙人', + role: '开城运营者:拓店、组仓配、带团队,让品牌在一座城真正落地。', + caps: '门店拓展与入驻协同 · 推广与代下单 · 佣金与经营数据可见', + }, + { + title: '合作门店', + role: '好客权益核销端:把用户带回餐桌,用核销结算反哺门店经营。', + caps: '手机号/核销码核销 · 核销记录可查 · 结算路径清晰', + }, + { + title: '用户', + role: '购酒与权益的享受者:小程序下单,酒到席、权益到店。', + caps: '清香选购 · 1:1 好客权益 · 同城配送/现场提货', + }, + ], + loop: '合伙人拓店 → 用户购酒得权益 → 门店核销结算 → 再反哺城市运营', + closing: '三端同屏,好客才成立;系统在线,信任才可复制。', +} + +export const tech = { + eyebrow: '科技驱动', + title: '让白酒行业,跑在可运营的数字轨道上', + lead: + '传统白酒拼品牌、拼渠道;杜康好客把「购酒—权益—核销—结算」做成在线闭环,让酒厂资源、城市运营与餐饮门店,第一次用同一套系统对话。', + points: [ + { + title: '四端一体', + text: '用户小程序、门店核销、城市合伙人、总部管控——权限分离、数据同源,开城可复制。', + }, + { + title: '全链路闭环', + text: '下单履约、好客权益发放、门店核销、结算回款可视可追,减少「口头承诺、纸面对账」。', + }, + { + title: '宴请场景数字化', + text: '面向商务宴请高频人群:酒到席、权益到店,把一次消费同时服务「喝」与「吃」。', + }, + { + title: '城市运营中台', + text: '拓店、推广归因、经营数据与热力洞察,服务合伙人把一座城「盘清楚、推得动」。', + }, + ], + claim: + '科技不是白酒的装饰,而是穿越周期的基础设施——帮酒厂更精准触达,帮餐饮更快回血,帮合伙人更可控地开城。', + cta: { label: '查看科技板块详情', to: '/tech-detail' }, +} + +export const subsidy = { + eyebrow: '酒厂实力', + title: '十亿级支持,与餐饮共度寒冬', + subtitle: '酒祖杜康清香 · 真资源入场,真补贴到位', + lead: + '当餐饮遭遇客流与成本的双重压力,杜康好客选择站到餐桌这一边:以酒厂之力,把补贴与流量送进合作门店,把清香美酒变成可核销、可回血的经营助力。', + number: '十亿', + numberNote: + '酒厂专项支持规模:十亿级资源投入,用于权益让利、门店激励与城市拓展——不是口号,是可落地的好客供给。', + points: [ + { + title: '品牌硬实力', + text: '酒祖杜康清香背书,杏花村产区同源同脉;宴请场景有故事、有品质、有辨识度。', + }, + { + title: '补贴真机制', + text: '用户购酒即获等价好客权益,到店抵餐;门店核销有结算路径,让「请吃饭」变成双方都愿意持续的生意。', + }, + { + title: '共度周期', + text: '寒冬里最缺的不是又一张海报,而是把客流、酒水与结算打通的系统——杜康好客,为此而来。', + }, + ], + closing: '酒厂出资源,科技出闭环,门店与用户同受益。', + footnote: '支持细则以合作政策为准。', +} + +export const partner = { + eyebrow: '城市合伙人', + title: '携酒祖入城,共建一座城的好客', + lead: + '若你认同酒祖杜康的清香价值,也看好「酒 + 餐」的数字化机会——欢迎了解城市合伙人:用系统化能力,把品牌、门店与用户在一座城运营起来。', + points: [ + { title: '杜康实力', text: '酒祖品牌 + 清香产品矩阵 + 十亿级支持背书' }, + { title: '科技底座', text: '三端协同、全链路可追踪,开城不靠口头账' }, + { title: '定制风格', text: '城市策略、拓店节奏与运营支持,按城匹配' }, + { + title: '适合谁', + text: '有本地餐饮/渠道资源 · 认同长期运营 · 愿意用系统做管理的城市操盘手', + }, + { + title: '我们提供', + text: '品牌与货盘支持 · 四端系统权限 · 拓店与培训协同 · 结算与数据可见', + }, + ], + primaryCta: { label: '了解合作方式', to: '/contact' }, + secondaryCta: { label: '查看科技板块', to: '/tech-detail' }, +} + +export const techDetail = { + eyebrow: '科技板块', + title: '可运营、可结算、可规模化的好客系统', + lead: + '杜康好客科技板块,围绕「开城—履约—核销—结算—洞察」构建四端能力,让白酒宴请场景从经验驱动,升级为数据与流程驱动。', + ports: [ + { + title: '用户端', + text: '清香选购与展示 · 下单履约(同城配送/现场提货) · 好客权益领取与使用 · 售后工单与发票入口', + }, + { + title: '门店核销端', + text: '手机号/核销码核销 · 核销记录可查 · 结算与提现协同(细则以政策为准)', + }, + { + title: '城市合伙人端', + text: '门店资料与入驻协同 · 推广/代下单 · 佣金与经营数据可见 · 子账号与权限管理', + }, + { + title: '总部管控与数据', + text: '城市开通与审核 · 全链路订单/核销洞察 · 热力与经营分析 · 结算打款协同', + }, + ], + highlights: [ + '一套账本贯穿购酒到核销', + '权限分离保障多方协作', + '开城可复制降低口头协同成本', + ], + closing: '科技板块的目标很明确:让每一瓶清香、每一笔好客权益、每一次门店核销,都跑在可信的轨道上。', + contactHint: '了解更多请联系杜康好客 · 项目负责人', +} + +export const contact = { + eyebrow: '联系我们', + title: '扫码咨询 · 对接项目负责人', + lead: '现场如需进一步了解酒祖杜康清香、好客模式或城市合作,请扫码添加对接人,或致电联系。', + role: '杜康好客 · 项目负责人', + name: '吕丹', + phone: '13073729990', + wechatHint: '扫一扫上方二维码,添加项目负责人微信。', +} + +export const footer = { + brandLine: '酒祖杜康 · 杜康好客', + slogan: '你请客,我买单', + copyright: '© 杜康好客 2026', + icp: '晋ICP备2026004970号', + compliance: + '理性饮酒,未成年人禁止饮酒。本展示内容仅供品牌与合作了解,不构成任何收益承诺。', + dataNote: '行业数据引自公开研究报告,仅供参考。支持细则以合作政策为准。', +} + +export const moduleEntries = [ + { to: '/brand', label: '品牌传承', desc: '酒祖精神原点' }, + { to: '/poetry', label: '诗酒文化', desc: '何以解忧,唯有杜康' }, + { to: '/qingxiang', label: '清香', desc: '绵 · 净 · 雅' }, + { to: '/haoke', label: '好客模式', desc: '你请客,我买单' }, + { to: '/system', label: '三端协同', desc: '一城一盘棋' }, + { to: '/tech', label: '科技驱动', desc: '可运营的数字轨道' }, + { to: '/subsidy', label: '酒厂实力', desc: '十亿级支持' }, + { to: '/partner', label: '城市合伙人', desc: '共建一座城的好客' }, + { to: '/tech-detail', label: '科技板块', desc: '四端系统详情' }, + { to: '/contact', label: '联系我们', desc: '扫码对接负责人' }, +] as const + +/** Pure visuals only (no PDF page screenshots with baked-in text) */ +export const images = { + logo: '/assets/logo.png', + qr: '/assets/qr-contact.png', + t30: '/assets/t30-bottle.png', + brand: { + manor: '/assets/brand/emb_p6_5.png', + monument: '/assets/brand/emb_p31_1.png', + landscape: '/assets/brand/emb_p15_3.png', + relic: '/assets/brand/emb_p33_1.png', + }, + poetry: { + inkA: '/assets/poetry/emb_p33_4.png', + inkB: '/assets/poetry/emb_p49_4.png', + inkC: '/assets/poetry/emb_p59_4.png', + inkD: '/assets/poetry/emb_p67_4.png', + }, + qingxiang: { + hall: '/assets/qingxiang/emb_p7_4.png', + interior: '/assets/qingxiang/emb_p6_2.png', + storefront: '/assets/qingxiang/emb_p7_6.png', + scene: '/assets/qingxiang/emb_p12_2.png', + }, +} diff --git a/src/hooks/useMobile.ts b/src/hooks/useMobile.ts new file mode 100644 index 0000000..d09b8f1 --- /dev/null +++ b/src/hooks/useMobile.ts @@ -0,0 +1,29 @@ +import { useEffect, useState } from 'react' + +export function useIsMobile(breakpoint = 768) { + const [isMobile, setIsMobile] = useState(() => { + if (typeof window === 'undefined') return false + return window.innerWidth < breakpoint + }) + + useEffect(() => { + if (typeof window === 'undefined') return + + const mql = window.matchMedia(`(max-width: ${breakpoint - 0.02}px)`) + const onChange = (e: MediaQueryListEvent) => { + setIsMobile(e.matches) + } + + setIsMobile(mql.matches) + + if (mql.addEventListener) { + mql.addEventListener('change', onChange) + return () => mql.removeEventListener('change', onChange) + } else { + mql.addListener(onChange) + return () => mql.removeListener(onChange) + } + }, [breakpoint]) + + return isMobile +} diff --git a/src/hooks/useStageMode.tsx b/src/hooks/useStageMode.tsx new file mode 100644 index 0000000..634633b --- /dev/null +++ b/src/hooks/useStageMode.tsx @@ -0,0 +1,14 @@ +import { createContext, useContext, useMemo, type ReactNode } from 'react' +import { useLocation } from 'react-router-dom' + +const StageContext = createContext(false) + +export function StageProvider({ children }: { children: ReactNode }) { + const location = useLocation() + const isStage = useMemo(() => new URLSearchParams(location.search).get('mode') === 'stage', [location.search]) + return {children} +} + +export function useStageMode() { + return useContext(StageContext) +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..b4c3425 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,12 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import App from './App' +import './styles/tokens.css' +import './styles/animations.css' +import './styles/responsive.css' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/mobile/MobileShell.css b/src/mobile/MobileShell.css new file mode 100644 index 0000000..a50e527 --- /dev/null +++ b/src/mobile/MobileShell.css @@ -0,0 +1,237 @@ +/* ===== Mobile Shell Dedicated Styling ===== */ +.mobile-shell { + min-height: 100vh; + min-height: 100dvh; + display: flex; + flex-direction: column; + background: var(--paper, #f7f2ea); + color: var(--ink, #1a1512); + padding-bottom: env(safe-area-inset-bottom, 0px); + position: relative; + overflow-x: hidden; +} + +/* Fixed Header with Status Bar Safe Area Top */ +.m-header { + position: fixed; + top: 0; + left: 0; + right: 0; + height: calc(3.6rem + env(safe-area-inset-top, 0px)); + padding-top: env(safe-area-inset-top, 0px); + padding-left: 1rem; + padding-right: 1rem; + box-sizing: border-box; + z-index: 1000; + background: rgba(247, 242, 234, 0.95); + backdrop-filter: blur(12px); + border-bottom: 1px solid rgba(166, 28, 32, 0.12); + display: flex; + align-items: center; + justify-content: space-between; + transition: background 0.3s ease; +} + +.theme-tech .m-header { + background: rgba(18, 16, 20, 0.95); + border-bottom-color: rgba(196, 163, 90, 0.2); +} + +.m-brand { + display: flex; + align-items: center; + gap: 0.5rem; + text-decoration: none; +} + +.m-logo { + width: 2rem; + height: 2rem; + object-fit: contain; +} + +.m-title { + font-family: 'Noto Serif SC', serif; + font-size: 1.1rem; + font-weight: 600; + color: var(--brand, #a61c20); + letter-spacing: 0.05em; +} + +.theme-tech .m-title { + color: var(--gold, #c4a35a); +} + +.m-header-actions { + display: flex; + align-items: center; + gap: 0.6rem; +} + +.m-stage-badge { + padding: 0.25rem 0.6rem; + border-radius: 1rem; + font-size: 0.72rem; + color: #ffffff; + background: linear-gradient(135deg, #a61c20 0%, #7d1216 100%); + border: 1px solid rgba(196, 163, 90, 0.3); + text-decoration: none; + font-weight: 500; + box-shadow: 0 2px 8px rgba(166, 28, 32, 0.25); +} + +.m-menu-btn { + width: 2.5rem; + height: 2.5rem; + border: none; + background: transparent; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 0.32rem; + cursor: pointer; + z-index: 1002; + padding: 0; +} + +.m-menu-btn span { + width: 1.3rem; + height: 2px; + background: var(--brand, #a61c20); + border-radius: 1px; + transition: all 0.3s ease; +} + +.theme-tech .m-menu-btn span { + background: var(--gold, #c4a35a); +} + +.m-menu-btn.is-open span:nth-child(1) { + transform: translateY(6px) rotate(45deg); +} + +.m-menu-btn.is-open span:nth-child(2) { + opacity: 0; +} + +.m-menu-btn.is-open span:nth-child(3) { + transform: translateY(-6px) rotate(-45deg); +} + +/* Drawer Overlay & Panel */ +.m-drawer-overlay { + position: fixed; + inset: 0; + z-index: 1000; + background: rgba(0, 0, 0, 0.5); + backdrop-filter: blur(4px); + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + +.m-drawer-overlay.is-open { + opacity: 1; + visibility: visible; +} + +.m-drawer { + position: fixed; + top: calc(3.6rem + env(safe-area-inset-top, 0px)); + right: 0; + bottom: 0; + width: min(20rem, 85vw); + background: #f7f2ea; + z-index: 1001; + padding: 1.25rem 1.25rem calc(2rem + env(safe-area-inset-bottom, 0px)); + transform: translateX(100%); + transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1); + overflow-y: auto; + -webkit-overflow-scrolling: touch; + box-shadow: -10px 0 30px rgba(0, 0, 0, 0.2); +} + +.theme-tech .m-drawer { + background: #141117; + color: #f3ece4; +} + +.m-drawer.is-open { + transform: translateX(0); +} + +.m-drawer-section { + margin-bottom: 1.25rem; +} + +.m-drawer-sec-title { + font-size: 0.78rem; + letter-spacing: 0.15em; + color: var(--gold, #c4a35a); + margin: 0 0 0.5rem; + padding-bottom: 0.3rem; + border-bottom: 1px solid rgba(196, 163, 90, 0.2); +} + +.m-drawer-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.7rem 0.5rem; + font-size: 0.95rem; + color: var(--ink, #1a1512); + text-decoration: none; + border-bottom: 1px solid rgba(166, 28, 32, 0.06); + border-radius: 0.2rem; + transition: background 0.2s ease; +} + +.theme-tech .m-drawer-item { + color: #f3ece4; + border-bottom-color: rgba(196, 163, 90, 0.08); +} + +.m-drawer-item.is-active { + color: var(--brand, #a61c20); + font-weight: 600; + background: rgba(166, 28, 32, 0.08); +} + +.theme-tech .m-drawer-item.is-active { + color: var(--gold, #c4a35a); + background: rgba(196, 163, 90, 0.12); +} + +.m-drawer-sublist { + padding-left: 0.85rem; + display: grid; + gap: 0.2rem; + margin-top: 0.2rem; +} + +.m-drawer-subitem { + display: block; + padding: 0.5rem 0.5rem; + font-size: 0.86rem; + color: var(--ink-soft, #5c534c); + text-decoration: none; + border-radius: 0.2rem; +} + +.theme-tech .m-drawer-subitem { + color: rgba(243, 236, 228, 0.7); +} + +.m-drawer-subitem.is-active { + color: var(--brand, #a61c20); + font-weight: 600; +} + +/* Main Content Wrapper - Push down content to avoid Fixed Header overlap */ +.m-main { + flex: 1; + width: 100%; + padding-top: calc(3.6rem + env(safe-area-inset-top, 0px)); + box-sizing: border-box; +} diff --git a/src/mobile/MobileShell.tsx b/src/mobile/MobileShell.tsx new file mode 100644 index 0000000..b67827f --- /dev/null +++ b/src/mobile/MobileShell.tsx @@ -0,0 +1,103 @@ +import { useEffect, useState, type ReactNode } from 'react' +import { Link, NavLink, Outlet, useLocation } from 'react-router-dom' +import { navGroups } from '../content/nav' +import { images } from '../content/site' +import { Footer } from '../components/Footer' +import './MobileShell.css' + +const techRoutes = new Set(['/tech', '/subsidy', '/partner', '/tech-detail', '/contact']) + +export function MobileShell({ children }: { children?: ReactNode }) { + const location = useLocation() + const [drawerOpen, setDrawerOpen] = useState(false) + const isTechPage = techRoutes.has(location.pathname) + + // Close drawer on navigation + useEffect(() => { + setDrawerOpen(false) + window.scrollTo({ top: 0, behavior: 'auto' }) + }, [location.pathname, location.search]) + + // Prevent background scroll when drawer is open + useEffect(() => { + document.body.style.overflow = drawerOpen ? 'hidden' : '' + return () => { + document.body.style.overflow = '' + } + }, [drawerOpen]) + + return ( +
+ {/* Mobile Top Header */} +
+ + 杜康好客 + 杜康好客 + + +
+ + 大屏展控 + + +
+
+ + {/* Drawer Mask & Navigation Panel */} +
setDrawerOpen(false)} + /> +
+
+ 全站导航目录 +
+ +
+ setDrawerOpen(false)} + > + 首页 + + +
+ + {navGroups.map((group) => ( +
+
{group.label}
+
+ {group.children.map((child) => ( + `m-drawer-subitem ${isActive ? 'is-active' : ''}`} + onClick={() => setDrawerOpen(false)} + > + {child.label} + + ))} +
+
+ ))} +
+ + {/* Main Content Area */} +
+ {children || } +
+ +
+
+ ) +} diff --git a/src/mobile/MobileViews.css b/src/mobile/MobileViews.css new file mode 100644 index 0000000..b402d15 --- /dev/null +++ b/src/mobile/MobileViews.css @@ -0,0 +1,292 @@ +/* ===== Mobile Views Dedicated CSS ===== */ + +.m-view-container { + width: 100%; + padding: 1.25rem 1rem 2.5rem; + box-sizing: border-box; + display: flex; + flex-direction: column; + gap: 1.25rem; +} + +/* Header & Typography */ +.m-eyebrow { + display: inline-flex; + align-items: center; + gap: 0.4rem; + font-size: 0.8rem; + color: var(--brand, #a61c20); + letter-spacing: 0.15em; +} + +.m-eyebrow::before { + content: ''; + width: 1rem; + height: 1px; + background: currentColor; +} + +.theme-tech .m-eyebrow { + color: var(--gold, #c4a35a); +} + +.m-page-title { + font-family: 'Noto Serif SC', serif; + font-size: clamp(1.4rem, 5.5vw, 1.85rem); + font-weight: 600; + margin: 0.2rem 0 0.6rem; + color: var(--ink, #1a1512); + line-height: 1.35; +} + +.theme-tech .m-page-title { + color: #ffffff; +} + +.m-lead { + font-size: 0.95rem; + line-height: 1.65; + color: var(--ink-soft, #5c534c); + margin: 0 0 1rem; +} + +.theme-tech .m-lead { + color: rgba(243, 236, 228, 0.78); +} + +.m-closing { + margin-top: 1rem; + padding-top: 0.85rem; + border-top: 1px solid rgba(196, 163, 90, 0.3); + font-family: 'Noto Serif SC', serif; + font-size: 0.95rem; + color: var(--gold, #c4a35a); + text-align: center; +} + +/* Card Component */ +.m-card { + background: rgba(255, 255, 255, 0.85); + border: 1px solid rgba(166, 28, 32, 0.12); + border-radius: 0.5rem; + padding: 1.15rem 1.1rem; + box-shadow: 0 4px 15px rgba(26, 21, 18, 0.05); + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.theme-tech .m-card { + background: rgba(28, 25, 31, 0.85); + border-color: rgba(196, 163, 90, 0.22); + color: #f3ece4; +} + +.m-card h3 { + font-family: 'Noto Serif SC', serif; + font-size: 1.1rem; + margin: 0; + color: var(--brand, #a61c20); +} + +.theme-tech .m-card h3 { + color: var(--gold, #c4a35a); +} + +.m-card p { + font-size: 0.9rem; + line-height: 1.6; + color: var(--ink-soft, #5c534c); + margin: 0; +} + +.theme-tech .m-card p { + color: rgba(243, 236, 228, 0.75); +} + +/* Button & CTAs */ +.m-btn { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 2.75rem; + padding: 0.6rem 1.25rem; + border-radius: 0.3rem; + font-size: 0.92rem; + font-weight: 500; + text-decoration: none; + transition: all 0.25s ease; +} + +.m-btn-primary { + background: var(--brand, #a61c20); + color: #ffffff; + box-shadow: 0 4px 12px rgba(166, 28, 32, 0.3); +} + +.m-btn-outline { + border: 1px solid var(--brand, #a61c20); + color: var(--brand, #a61c20); + background: transparent; +} + +.theme-tech .m-btn-outline { + border-color: var(--gold, #c4a35a); + color: var(--gold, #c4a35a); +} + +/* Mobile Hero Component */ +.m-hero { + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + padding: 1.5rem 0 1rem; +} + +.m-hero-sub { + font-size: 0.88rem; + color: var(--gold, #c4a35a); + letter-spacing: 0.15em; + font-weight: 600; +} + +.m-hero-title { + font-family: 'Noto Serif SC', serif; + font-size: clamp(1.8rem, 7vw, 2.5rem); + color: var(--brand, #a61c20); + margin: 0; + line-height: 1.25; +} + +.m-hero-img { + width: min(12rem, 50vw); + height: auto; + margin: 0.5rem auto; + filter: drop-shadow(0 10px 20px rgba(0, 0, 0, 0.15)); +} + +/* Specific Cards & Rings */ +.m-rings-row { + display: flex; + justify-content: center; + gap: 1rem; + margin: 0.85rem 0; +} + +.m-ring-item { + width: 3.2rem; + height: 3.2rem; + border-radius: 50%; + border: 1px solid var(--gold, #c4a35a); + background: rgba(166, 28, 32, 0.08); + display: grid; + place-items: center; + font-family: 'Noto Serif SC', serif; + font-size: 1.15rem; + font-weight: 600; + color: var(--brand, #a61c20); +} + +.theme-tech .m-ring-item { + background: rgba(196, 163, 90, 0.12); + color: var(--gold, #c4a35a); +} + +.m-poem-box { + background: linear-gradient(135deg, rgba(166, 28, 32, 0.06), rgba(196, 163, 90, 0.08)); + border: 1px solid rgba(196, 163, 90, 0.3); + padding: 1.25rem 1rem; + border-radius: 0.4rem; + text-align: center; +} + +.m-poem-quote { + font-family: 'Noto Serif SC', serif; + font-size: 1.15rem; + line-height: 1.7; + color: var(--brand, #a61c20); + margin: 0 0 0.5rem; +} + +.theme-tech .m-poem-quote { + color: var(--gold, #c4a35a); +} + +.m-poem-source { + font-size: 0.82rem; + color: var(--ink-soft, #5c534c); +} + +.theme-tech .m-poem-source { + color: rgba(243, 236, 228, 0.65); +} + +.m-big-num { + font-family: 'Noto Serif SC', serif; + font-size: 3.8rem; + font-weight: 700; + color: var(--brand, #a61c20); + line-height: 1; + text-shadow: 0 2px 10px rgba(166, 28, 32, 0.2); + text-align: center; + margin: 0.3rem 0; +} + +.theme-tech .m-big-num { + color: var(--gold, #c4a35a); +} + +.m-qr-card { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + padding: 1.5rem 1rem; + gap: 1rem; +} + +.m-qr-img { + width: 10rem; + height: 10rem; + padding: 0.5rem; + background: #ffffff; + border-radius: 0.4rem; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); +} + +.m-qr-img img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.m-deep-links { + margin-top: 1.25rem; + padding-top: 1rem; + border-top: 1px solid rgba(166, 28, 32, 0.12); + display: grid; + gap: 0.65rem; +} + +.m-deep-card { + padding: 0.85rem 0.95rem; + background: rgba(255, 255, 255, 0.6); + border-left: 3px solid var(--gold, #c4a35a); + border-radius: 0.2rem; + text-decoration: none; + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.m-deep-card strong { + font-size: 0.95rem; + color: var(--brand, #a61c20); +} + +.m-deep-card span { + font-size: 0.82rem; + color: var(--ink-soft, #5c534c); +} diff --git a/src/mobile/MobileViews.tsx b/src/mobile/MobileViews.tsx new file mode 100644 index 0000000..5ea4c72 --- /dev/null +++ b/src/mobile/MobileViews.tsx @@ -0,0 +1,468 @@ +import { Link, Outlet, useLocation } from 'react-router-dom' +import { + brand, + contact, + haoke, + hero, + images, + partner, + poetry, + qingxiang, + subsidy, + system, + tech, + techDetail, +} from '../content/site' +import './MobileViews.css' + +export function MobileViews() { + const location = useLocation() + const path = location.pathname + + switch (path) { + case '/': + return + case '/brand': + return + case '/poetry': + return + case '/qingxiang': + return + case '/haoke': + return + case '/system': + return + case '/tech': + return + case '/subsidy': + return + case '/partner': + return + case '/tech-detail': + return + case '/contact': + return + default: + return + } +} + +/* 1. Mobile Home View */ +function MobileHomeView() { + return ( +
+
+
{hero.subBrand} · 移动全景
+

{hero.brand}

+

+ {hero.title} +

+ 酒祖杜康 T30 +

+ {hero.subtitle} +

+
+ + {hero.primaryCta.label} + + + {hero.secondaryCta.label} + +
+
+
+ ) +} + +/* 2. Mobile Brand View */ +function MobileBrandView() { + return ( +
+
+
{brand.eyebrow}
+

{brand.title}

+

{brand.lead}

+
+ +
+ {brand.cards.map((card, idx) => ( +
+
0{idx + 1}
+

{card.title}

+

{card.text}

+
+ ))} +
+ +
+

故里文明印记

+ 杜康庄园 +
+ {brand.timeline.map((item) => ( +
+ + {item} +
+ ))} +
+
+ +
{brand.closing}
+ +
+
深度阅读
+ {brand.deepReads.map((dp) => ( + + {dp.label} › + {dp.blurb} + + ))} +
+
+ ) +} + +/* 3. Mobile Poetry View */ +function MobilePoetryView() { + return ( +
+
+
{poetry.eyebrow}
+

{poetry.title}

+

{poetry.lead}

+
+ +
+

“{poetry.mainPoem.quote}”

+
—— {poetry.mainPoem.source}
+
+ +
+ {poetry.poems.map((p) => ( +
+

“{p.quote}”

+
—— {p.source}
+
+ ))} +
+ +
{poetry.closing}
+ +
+
诗酒专题
+ {poetry.deepReads.map((dp) => ( + + {dp.label} › + {dp.blurb} + + ))} +
+
+ ) +} + +/* 4. Mobile Qingxiang View */ +function MobileQingxiangView() { + return ( +
+
+
{qingxiang.eyebrow}
+

{qingxiang.title}

+

{qingxiang.lead}

+
+ +
+ 酒祖杜康清香 T30 +
+ {qingxiang.styleWords.map((word) => ( +
+ {word} +
+ ))} +
+
+ +
+ {qingxiang.positions.map((pos) => ( +
+

{pos.title}

+

{pos.text}

+
+ ))} +
+ +
+

品鉴仪式 · 抿咂呵

+
+ {qingxiang.tasting.map((t) => ( +
+ {t.title}: + {t.text} +
+ ))} +
+
+ +
{qingxiang.mission}
+ +
+
清香宝典专题
+ {qingxiang.deepReads.map((dp) => ( + + {dp.label} › + {dp.blurb} + + ))} +
+
+ ) +} + +/* 5. Mobile Haoke View */ +function MobileHaokeView() { + return ( +
+
+
{haoke.eyebrow}
+

{haoke.title}

+

{haoke.lead}

+
+ +
+

核心商业机制

+

+ {haoke.oneLiner} +

+
+ +
+ {haoke.points.map((pt) => ( +
+

{pt.title}

+

{pt.text}

+
+ ))} +
+ +
{haoke.closing}
+
+ ) +} + +/* 6. Mobile System View */ +function MobileSystemView() { + return ( +
+
+
{system.eyebrow}
+

{system.title}

+

{system.lead}

+
+ +
+ {system.ends.map((end) => ( +
+

{end.title}

+

{end.role}

+
+ 核心能力:{end.caps} +
+
+ ))} +
+ +
+
闭环链路
+

{system.loop}

+
+ +
{system.closing}
+
+ ) +} + +/* 7. Mobile Tech View */ +function MobileTechView() { + return ( +
+
+
{tech.eyebrow}
+

{tech.title}

+

{tech.lead}

+
+ +
+ {tech.points.map((pt) => ( +
+

{pt.title}

+

{pt.text}

+
+ ))} +
+ +
{tech.claim}
+ +
+ + {tech.cta.label} + +
+
+ ) +} + +/* 8. Mobile Subsidy View */ +function MobileSubsidyView() { + return ( +
+
+
{subsidy.eyebrow}
+

{subsidy.title}

+
+ {subsidy.subtitle} +
+

{subsidy.lead}

+
+ +
+
专项补贴规模
+
{subsidy.number}
+

{subsidy.numberNote}

+
+ +
+ {subsidy.points.map((pt) => ( +
+

{pt.title}

+

{pt.text}

+
+ ))} +
+ +
{subsidy.closing}
+
+ ) +} + +/* 9. Mobile Partner View */ +function MobilePartnerView() { + return ( +
+
+
{partner.eyebrow}
+

{partner.title}

+

{partner.lead}

+
+ +
+ {partner.points.map((pt) => ( +
+

{pt.title}

+

{pt.text}

+
+ ))} +
+ +
+ + {partner.primaryCta.label} + + + {partner.secondaryCta.label} + +
+
+ ) +} + +/* 10. Mobile Tech Detail View */ +function MobileTechDetailView() { + return ( +
+
+
{techDetail.eyebrow}
+

{techDetail.title}

+

{techDetail.lead}

+
+ +
+ {techDetail.ports.map((port) => ( +
+

{port.title}

+

{port.text}

+
+ ))} +
+ +
{techDetail.closing}
+
+ ) +} + +/* 11. Mobile Contact View */ +function MobileContactView() { + return ( +
+
+
{contact.eyebrow}
+

{contact.title}

+

{contact.lead}

+
+ +
+
+ 微信二维码 +
+
+

{contact.name}

+
+ {contact.role} +
+ + 📞 {contact.phone} + +

+ {contact.wechatHint} +

+
+
+
+ ) +} diff --git a/src/pages/Brand.css b/src/pages/Brand.css new file mode 100644 index 0000000..0a225f3 --- /dev/null +++ b/src/pages/Brand.css @@ -0,0 +1,102 @@ +.brand-layout { + display: grid; + grid-template-columns: 1.2fr 0.8fr; + gap: 2.5rem; + margin-top: 1rem; +} + +.brand-timeline { + position: relative; + display: grid; + gap: 1.75rem; + padding-left: 1.5rem; +} + +.brand-line { + position: absolute; + left: 0.35rem; + top: 0.4rem; + bottom: 0.4rem; + width: 1px; + background: var(--brand); + transform-origin: top; + animation: drawLineY 1.2s var(--ease) both; +} + +.brand-item { + position: relative; +} + +.brand-item::before { + content: ''; + position: absolute; + left: -1.32rem; + top: 0.45rem; + width: 0.55rem; + height: 0.55rem; + border-radius: 50%; + background: var(--brand); +} + +.brand-num { + display: block; + color: var(--gold); + letter-spacing: 0.14em; + font-size: 0.85rem; + margin-bottom: 0.35rem; +} + +.brand-vtitle { + writing-mode: vertical-rl; + float: left; + margin: 0 0.85rem 0 0; + color: var(--brand); + font-size: 1.35rem; + letter-spacing: 0.2em; + height: 7rem; +} + +.brand-aside { + display: grid; + gap: 1rem; + align-content: start; +} + +.brand-photo img { + aspect-ratio: 4 / 3; + object-fit: cover; + width: 100%; +} + +.brand-photo.secondary img { + aspect-ratio: 16 / 10; +} + +.brand-era { + list-style: none; + margin: 2.5rem 0 0; + padding: 0; + display: flex; + flex-wrap: wrap; + gap: 0.75rem 1.5rem; + border-top: 1px solid var(--gold-soft); + padding-top: 1.5rem; +} + +.brand-era li { + color: var(--brand); + font-size: 1.05rem; +} + +@media (max-width: 48rem) { + .brand-layout { + grid-template-columns: 1fr; + } + + .brand-vtitle { + writing-mode: horizontal-tb; + float: none; + height: auto; + margin: 0 0 0.5rem; + } +} diff --git a/src/pages/Brand.tsx b/src/pages/Brand.tsx new file mode 100644 index 0000000..4612ed4 --- /dev/null +++ b/src/pages/Brand.tsx @@ -0,0 +1,68 @@ +import { Link } from 'react-router-dom' +import { Reveal } from '../components/Reveal' +import { brand, images } from '../content/site' +import './Brand.css' + +export function BrandPage() { + return ( +
+
+ +

{brand.eyebrow}

+

{brand.title}

+

{brand.lead}

+
+ +
+
+
+ {brand.cards.map((card, i) => ( + + {String(i + 1).padStart(2, '0')} +

{card.title}

+

{card.text}

+
+ ))} +
+ + +
+ 酒祖故里景致 +
+
+ 酒祖相关文物保护单位 +
+
+
+ + +
    + {brand.timeline.map((item) => ( +
  1. + {item} +
  2. + ))} +
+

{brand.closing}

+
+ +
+ +

深度阅读

+

从典籍、故里、祠祀到酒厂,按篇章走进品牌传承全文脉络。

+
+
+ {brand.deepReads.map((item, i) => ( + + + {item.label} + {item.blurb} + + + ))} +
+
+
+
+ ) +} diff --git a/src/pages/Contact.css b/src/pages/Contact.css new file mode 100644 index 0000000..5959595 --- /dev/null +++ b/src/pages/Contact.css @@ -0,0 +1,77 @@ +.contact-ceremony { + text-align: center; +} + +.contact-lead { + margin-inline: auto; + text-align: center; +} + +.contact-meet { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 3rem; + align-items: center; + justify-items: center; + margin-top: 2.5rem; + max-width: 42rem; + margin-inline: auto; +} + +.contact-info { + text-align: center; + display: grid; + gap: 0.35rem; + justify-items: center; +} + +.role { + margin: 0; + color: var(--gold); + letter-spacing: 0.14em; + font-size: 0.95rem; +} + +.name { + margin: 0; + font-size: clamp(2rem, 1.6rem + 1.2vw, 2.75rem); + letter-spacing: 0.12em; +} + +.phone { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 2.75rem; + margin-top: 0.5rem; + font-size: 1.35rem; + color: var(--gold); + letter-spacing: 0.08em; + border-bottom: 1px solid rgba(196, 163, 90, 0.35); +} + +.qr-block { + text-align: center; +} + +.qr-image { + width: min(14rem, 70vw); + margin: 0 auto 0.85rem; + padding: 0.65rem; + background: #fff; + border-radius: 0.2rem; + box-shadow: var(--shadow-soft); +} + +.qr-block p { + margin: 0; + color: var(--ink-soft); + font-size: 0.9rem; +} + +@media (max-width: 48rem) { + .contact-meet { + grid-template-columns: 1fr; + gap: 2rem; + } +} diff --git a/src/pages/Contact.tsx b/src/pages/Contact.tsx new file mode 100644 index 0000000..872161c --- /dev/null +++ b/src/pages/Contact.tsx @@ -0,0 +1,32 @@ +import { Reveal } from '../components/Reveal' +import { contact, images } from '../content/site' +import './Contact.css' + +export function ContactPage() { + return ( +
+
+ +

{contact.eyebrow}

+

{contact.title}

+

{contact.lead}

+
+ +
+ +

{contact.role}

+

{contact.name}

+ + {contact.phone} + +
+ + + 项目负责人微信二维码 +

{contact.wechatHint}

+
+
+
+
+ ) +} diff --git a/src/pages/DeepPage.tsx b/src/pages/DeepPage.tsx new file mode 100644 index 0000000..67eab42 --- /dev/null +++ b/src/pages/DeepPage.tsx @@ -0,0 +1,22 @@ +import { useParams, Navigate, useLocation } from 'react-router-dom' +import { DeepLayout } from '../components/DeepLayout' +import { deepPageMap } from '../content/nav' +import { useStageMode } from '../hooks/useStageMode' +import { resolveStageRedirect } from '../content/deep/assets' + +export function DeepPage() { + const { slug } = useParams() + const location = useLocation() + const isStage = useStageMode() + const section = location.pathname.split('/').filter(Boolean)[0] + const path = `/${section}/${slug}` + + if (isStage) { + const main = resolveStageRedirect(path) ?? '/' + return + } + + const page = deepPageMap[path] + if (!page) return + return +} diff --git a/src/pages/Haoke.css b/src/pages/Haoke.css new file mode 100644 index 0000000..08a74ec --- /dev/null +++ b/src/pages/Haoke.css @@ -0,0 +1,58 @@ +.haoke-page { + position: relative; +} + +.haoke-banner { + position: absolute; + inset: 0 0 auto 0; + height: 14rem; + background-size: cover; + background-position: center; + opacity: 0.18; + mask-image: linear-gradient(180deg, #000, transparent); +} + +.haoke-slogan { + margin: 1.5rem 0 2.5rem; + font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.4rem); + color: var(--brand); + line-height: 1.45; + max-width: 40rem; +} + +.haoke-steps { + display: grid; + gap: 0; + border-left: 1px solid rgba(166, 28, 32, 0.25); + margin-left: 0.55rem; + padding-left: 1.5rem; +} + +.haoke-step { + position: relative; + display: grid; + grid-template-columns: auto 1fr; + gap: 0.85rem; + padding: 1.15rem 0 1.5rem; +} + +.haoke-dot { + position: absolute; + left: -1.85rem; + top: 1.45rem; + width: 0.7rem; + height: 0.7rem; + border-radius: 50%; + background: var(--brand); + box-shadow: 0 0 0 0.35rem rgba(166, 28, 32, 0.12); +} + +.haoke-step h3 { + margin: 0 0 0.4rem; + color: var(--brand); +} + +.haoke-step p { + margin: 0; + color: var(--ink-soft); +} diff --git a/src/pages/Haoke.tsx b/src/pages/Haoke.tsx new file mode 100644 index 0000000..4c62f15 --- /dev/null +++ b/src/pages/Haoke.tsx @@ -0,0 +1,44 @@ +import { Link } from 'react-router-dom' +import { Reveal } from '../components/Reveal' +import { haoke, images } from '../content/site' +import './Haoke.css' + +export function HaokePage() { + return ( +
+
+
+ +

{haoke.eyebrow}

+

{haoke.title}

+

{haoke.lead}

+
+ + + {haoke.oneLiner} + + +
+ {haoke.points.map((point, i) => ( + + +
+

{point.title}

+

{point.text}

+
+
+ ))} +
+ + +

{haoke.closing}

+
+ + 了解三端协同 + +
+
+
+
+ ) +} diff --git a/src/pages/Home.css b/src/pages/Home.css new file mode 100644 index 0000000..75cc63c --- /dev/null +++ b/src/pages/Home.css @@ -0,0 +1,118 @@ +.hero { + position: relative; + min-height: calc(100vh - var(--nav-h)); + display: flex; + align-items: center; + overflow: hidden; + padding: 3rem 0 4rem; +} + +.hero-bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + transform: scale(1.05); + animation: softZoom 1.4s var(--ease) both; +} + +.hero-mask { + position: absolute; + inset: 0; + background: linear-gradient( + 105deg, + rgba(247, 242, 234, 0.94) 0%, + rgba(247, 242, 234, 0.82) 42%, + rgba(247, 242, 234, 0.35) 70%, + rgba(18, 16, 20, 0.25) 100% + ); +} + +.hero-grid { + position: relative; + z-index: 1; + display: grid; + grid-template-columns: 1.15fr 0.85fr; + gap: 2.5rem; + align-items: center; +} + +.hero-brand { + margin: 0; + font-size: clamp(2.4rem, 2rem + 2vw, 4rem); + color: var(--brand); + letter-spacing: 0.12em; +} + +.hero-subbrand { + margin: 0.35rem 0 1.25rem; + color: var(--ink-soft); + letter-spacing: 0.35em; + font-size: 0.95rem; +} + +.hero-title { + margin: 0 0 1rem; + font-size: clamp(1.8rem, 1.4rem + 1.4vw, 2.8rem); +} + +.hero-subtitle { + margin: 0; + max-width: 34rem; + color: var(--ink-soft); + font-size: 1.05rem; +} + +.hero-visual { + justify-self: center; + width: min(22rem, 100%); + filter: drop-shadow(0 1.5rem 2.5rem rgba(26, 21, 18, 0.25)); +} + +.hero-visual img { + width: 100%; + height: auto; + object-fit: contain; +} + +.modules { + background: linear-gradient(180deg, transparent, rgba(166, 28, 32, 0.04)); +} + +.module-rail { + display: flex; + gap: 1rem; + overflow-x: auto; + padding-bottom: 0.75rem; + scroll-snap-type: x mandatory; +} + +.module-rail-item { + flex: 0 0 auto; + width: min(14rem, 72vw); + min-height: 9rem; + padding: 1.2rem 1.1rem; + border-left: 2px solid var(--brand); + background: rgba(255, 255, 255, 0.55); + scroll-snap-align: start; + display: flex; + flex-direction: column; + gap: 0.4rem; + transition: transform 0.35s var(--ease), background 0.35s var(--ease); +} + +.module-rail-item:hover { + transform: translateY(-0.25rem); + background: #fff; +} + +.module-index { + font-size: 0.78rem; + letter-spacing: 0.14em; + color: var(--brand); +} + +.module-desc { + color: var(--ink-soft); + font-size: 0.88rem; +} diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx new file mode 100644 index 0000000..cb5d86a --- /dev/null +++ b/src/pages/Home.tsx @@ -0,0 +1,61 @@ +import { Link } from 'react-router-dom' +import { Reveal } from '../components/Reveal' +import { hero, images, moduleEntries } from '../content/site' +import './Home.css' + +export function HomePage() { + return ( + <> +
+
+
+
+
+

{hero.brand}

+

+ {hero.subBrand} +

+

+ {hero.title} +

+

+ {hero.subtitle} +

+
+ + {hero.primaryCta.label} + + + {hero.secondaryCta.label} + +
+
+
+ 酒祖杜康清香系列 T30 +
+
+
+ +
+
+ +

探索杜康好客

+

十大篇章

+

从酒祖文脉到好客闭环,循定稿结构逐章走进。

+
+
+ {moduleEntries.map((item, index) => ( + + + {String(index + 1).padStart(2, '0')} + {item.label} + {item.desc} + + + ))} +
+
+
+ + ) +} diff --git a/src/pages/Partner.css b/src/pages/Partner.css new file mode 100644 index 0000000..7869e29 --- /dev/null +++ b/src/pages/Partner.css @@ -0,0 +1,54 @@ +.partner-layout { + display: grid; + grid-template-columns: 1.2fr 0.8fr; + gap: 2.5rem; + align-items: start; +} + +.partner-list { + list-style: none; + margin: 1.5rem 0 0; + padding: 0; + display: grid; + gap: 0; +} + +.partner-row li { + display: grid; + grid-template-columns: 3rem 1fr; + gap: 0.85rem; + padding: 1.1rem 0; + border-bottom: 1px solid var(--tech-line); +} + +.partner-idx { + color: var(--gold); + font-size: 1.15rem; +} + +.partner-row h3 { + margin: 0 0 0.35rem; + color: var(--gold); + font-size: 1.1rem; +} + +.partner-row p { + margin: 0; + color: var(--ink-soft); +} + +.partner-aside .media-frame img { + width: 100%; + aspect-ratio: 4 / 5; + object-fit: cover; +} + +.partner-cta { + margin-top: 1.25rem; +} + +@media (max-width: 48rem) { + .partner-layout { + grid-template-columns: 1fr; + } +} diff --git a/src/pages/Partner.tsx b/src/pages/Partner.tsx new file mode 100644 index 0000000..62de2ce --- /dev/null +++ b/src/pages/Partner.tsx @@ -0,0 +1,48 @@ +import { Link } from 'react-router-dom' +import { Reveal } from '../components/Reveal' +import { images, partner } from '../content/site' +import './Partner.css' + +export function PartnerPage() { + return ( +
+
+
+ +

{partner.eyebrow}

+

{partner.title}

+

{partner.lead}

+
+ +
    + {partner.points.map((point, i) => ( + +
  1. + {String(i + 1).padStart(2, '0')} +
    +

    {point.title}

    +

    {point.text}

    +
    +
  2. +
    + ))} +
+
+ + +
+ +
+
+ + {partner.primaryCta.label} + + + {partner.secondaryCta.label} + +
+
+
+
+ ) +} diff --git a/src/pages/Poetry.css b/src/pages/Poetry.css new file mode 100644 index 0000000..2e984a5 --- /dev/null +++ b/src/pages/Poetry.css @@ -0,0 +1,87 @@ +.poetry-page { + position: relative; + overflow: hidden; +} + +.poetry-bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + opacity: 0.12; + pointer-events: none; +} + +.poetry-shell { + position: relative; + z-index: 1; +} + +.poem-stage { + margin: 1.5rem 0 2rem; +} + +.poem-main { + margin: 0 auto; + max-width: 36rem; + padding: 2rem 1.75rem; + background: rgba(255, 255, 255, 0.72); + border: 1px solid rgba(166, 28, 32, 0.15); + writing-mode: vertical-rl; + text-orientation: mixed; + min-height: 18rem; +} + +.poem-main p { + margin: 0; + font-size: 1.35rem; + letter-spacing: 0.14em; + line-height: 2; +} + +.poem-main cite, +.poem-slip cite { + display: block; + margin-top: 1rem; + font-style: normal; + color: var(--ink-soft); + font-size: 0.9rem; + font-family: 'Noto Sans SC', sans-serif; +} + +.poem-scatter { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.25rem; + align-items: stretch; + margin-bottom: 2rem; +} + +.poem-slip { + display: flex; + flex-direction: column; + justify-content: space-between; + height: 100%; + padding: 1.25rem 1.1rem; + background: rgba(247, 242, 234, 0.95); + border-top: 2px solid var(--brand); + box-shadow: var(--shadow-soft); + box-sizing: border-box; +} + +.poem-slip cite { + margin-top: auto; + padding-top: 0.85rem; +} + +@media (max-width: 48rem) { + .poem-main { + writing-mode: horizontal-tb; + text-orientation: mixed; + min-height: auto; + } + + .poem-scatter { + grid-template-columns: 1fr; + } +} diff --git a/src/pages/Poetry.tsx b/src/pages/Poetry.tsx new file mode 100644 index 0000000..05a42c3 --- /dev/null +++ b/src/pages/Poetry.tsx @@ -0,0 +1,57 @@ +import { Link } from 'react-router-dom' +import { Reveal } from '../components/Reveal' +import { images, poetry } from '../content/site' +import './Poetry.css' + +export function PoetryPage() { + return ( +
+
+
+ +

{poetry.eyebrow}

+

{poetry.title}

+

{poetry.lead}

+
+ + +
+

{poetry.mainPoem.quote}

+ {poetry.mainPoem.source} +
+
+ +
+ {poetry.poems.map((poem, i) => ( + +

「{poem.quote}」

+ {poem.source} +
+ ))} +
+ + +

{poetry.reading}

+

{poetry.closing}

+
+ +
+ +

深度阅读

+

选萃与唐宋余韵,把诗酒长卷摊开细读。

+
+
+ {poetry.deepReads.map((item, i) => ( + + + {item.label} + {item.blurb} + + + ))} +
+
+
+
+ ) +} diff --git a/src/pages/Qingxiang.css b/src/pages/Qingxiang.css new file mode 100644 index 0000000..cbc9df0 --- /dev/null +++ b/src/pages/Qingxiang.css @@ -0,0 +1,138 @@ +.qx-stage { + position: relative; + display: grid; + place-items: center; + min-height: 22rem; + margin: 1.5rem 0 2rem; +} + +.qx-bottle { + width: min(14rem, 46vw); + z-index: 2; +} + +.qx-bottle img { + width: 100%; + filter: drop-shadow(0 1rem 2rem rgba(26, 21, 18, 0.28)); +} + +.qx-rings { + position: absolute; + inset: 0; + pointer-events: none; +} + +.qx-ring { + position: absolute; + width: 4.2rem; + height: 4.2rem; + border: 1px solid var(--brand); + border-radius: 50%; + display: grid; + place-items: center; + background: rgba(255, 255, 255, 0.75); + color: var(--brand); + font-size: 1.5rem; +} + +.ring-0 { + left: 8%; + top: 18%; +} +.ring-1 { + right: 10%; + top: 12%; +} +.ring-2 { + right: 18%; + bottom: 16%; +} + +.qx-style-text { + text-align: center; + margin-inline: auto; +} + +.qx-cross { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1rem; + max-width: 48rem; + margin: 0 auto 2.5rem; +} + +.qx-arm { + padding: 1.2rem 1.1rem; + border: 1px solid rgba(166, 28, 32, 0.14); + background: rgba(255, 255, 255, 0.5); +} + +.qx-arm h3 { + margin: 0 0 0.5rem; + color: var(--brand); + font-size: 1.1rem; +} + +.qx-arm p { + margin: 0; + color: var(--ink-soft); + font-size: 0.95rem; +} + +.arm-0 { + border-right: none; + border-bottom: none; +} +.arm-1 { + border-bottom: none; +} +.arm-2 { + border-right: none; +} + +.qx-split { + display: grid; + grid-template-columns: 1.05fr 0.95fr; + gap: 2rem; + align-items: center; +} + +.qx-h { + color: var(--brand); + margin: 1.2rem 0 0.45rem; +} + +.qx-taste { + display: grid; + gap: 0.65rem; + margin: 1.25rem 0; +} + +.qx-taste strong { + color: var(--brand); + margin-right: 0.65rem; +} + +.qx-split .media-frame img { + width: 100%; + aspect-ratio: 16 / 10; + object-fit: contain; + background: rgba(0, 0, 0, 0.03); +} + +@media (max-width: 48rem) { + .qx-cross, + .qx-split { + grid-template-columns: 1fr; + } + + .qx-arm { + border: 1px solid rgba(166, 28, 32, 0.14) !important; + } + + .qx-ring { + width: 3.2rem; + height: 3.2rem; + font-size: 1.15rem; + } +} diff --git a/src/pages/Qingxiang.tsx b/src/pages/Qingxiang.tsx new file mode 100644 index 0000000..bc63623 --- /dev/null +++ b/src/pages/Qingxiang.tsx @@ -0,0 +1,85 @@ +import { Link } from 'react-router-dom' +import { Reveal } from '../components/Reveal' +import { images, qingxiang } from '../content/site' +import './Qingxiang.css' + +export function QingxiangPage() { + return ( +
+
+ +

{qingxiang.eyebrow}

+

{qingxiang.title}

+

{qingxiang.lead}

+
+ +
+ + {qingxiang.product} + +
+ {qingxiang.styleWords.map((word, i) => ( + + {word} + + ))} +
+
+ + +

{qingxiang.styleText}

+
+ +
+ {qingxiang.positions.map((item, i) => ( + +

{item.title}

+

{item.text}

+
+ ))} +
+ +
+ +

工艺要点

+

{qingxiang.craft}

+

产地

+

{qingxiang.origin}

+
+ {qingxiang.tasting.map((step) => ( +
+ {step.title} + {step.text} +
+ ))} +
+

{qingxiang.mission}

+

产品露出:{qingxiang.product}

+
+ +
+ 杜康清香酒文化场景 +
+
+
+ +
+ +

清香宝典 · 深读

+

赛道、定位、工艺、品鉴、体验与溯源,各篇独立展开。

+
+
+ {qingxiang.deepReads.map((item, i) => ( + + + {item.label} + {item.blurb} + + + ))} +
+
+
+
+ ) +} diff --git a/src/pages/Subsidy.css b/src/pages/Subsidy.css new file mode 100644 index 0000000..0ee2f73 --- /dev/null +++ b/src/pages/Subsidy.css @@ -0,0 +1,59 @@ +.subsidy-center { + text-align: center; +} + +.subsidy-sub { + color: var(--gold); + letter-spacing: 0.12em; + margin: 0 0 1rem; +} + +.big-number { + font-size: clamp(4.5rem, 3rem + 6vw, 8rem); + color: var(--gold); + line-height: 1; + margin: 1rem 0 1rem; + opacity: 0; + transform: scale(0.8); + transition: opacity 0.9s var(--ease), transform 0.9s cubic-bezier(0.34, 1.4, 0.64, 1); +} + +.big-number.is-in { + opacity: 1; + transform: scale(1); +} + +.number-note { + max-width: 40rem; + margin-inline: auto; + text-align: center; +} + +.subsidy-ring { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.25rem; + text-align: left; + margin: 2rem 0; +} + +.subsidy-point { + padding: 0 0.25rem 0 1rem; + border-left: 2px solid var(--gold); +} + +.subsidy-point h3 { + margin: 0 0 0.5rem; + color: var(--gold); +} + +.subsidy-point p { + margin: 0; + color: var(--ink-soft); +} + +@media (max-width: 48rem) { + .subsidy-ring { + grid-template-columns: 1fr; + } +} diff --git a/src/pages/Subsidy.tsx b/src/pages/Subsidy.tsx new file mode 100644 index 0000000..d34452c --- /dev/null +++ b/src/pages/Subsidy.tsx @@ -0,0 +1,61 @@ +import { useEffect, useRef, useState } from 'react' +import { Reveal } from '../components/Reveal' +import { subsidy } from '../content/site' +import './Subsidy.css' + +export function SubsidyPage() { + const [showNumber, setShowNumber] = useState(false) + const numberRef = useRef(null) + + useEffect(() => { + const node = numberRef.current + if (!node) return + const observer = new IntersectionObserver( + (entries) => { + if (entries.some((e) => e.isIntersecting)) { + setShowNumber(true) + observer.disconnect() + } + }, + { threshold: 0.35 }, + ) + observer.observe(node) + return () => observer.disconnect() + }, []) + + return ( +
+
+ +

{subsidy.eyebrow}

+

{subsidy.title}

+

{subsidy.subtitle}

+

+ {subsidy.lead} +

+
+ +
+ {subsidy.number} +
+ +

{subsidy.numberNote}

+
+ +
+ {subsidy.points.map((point, i) => ( + +

{point.title}

+

{point.text}

+
+ ))} +
+ + +

{subsidy.closing}

+

{subsidy.footnote}

+
+
+
+ ) +} diff --git a/src/pages/System.css b/src/pages/System.css new file mode 100644 index 0000000..fe136e0 --- /dev/null +++ b/src/pages/System.css @@ -0,0 +1,47 @@ +.system-tri { + position: relative; + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.25rem; + margin: 2.5rem 0; + padding-top: 1rem; +} + +.system-node { + padding: 1.35rem 1.2rem; + background: rgba(255, 255, 255, 0.6); + border: 1px solid rgba(166, 28, 32, 0.16); + min-height: 12rem; +} + +.system-node h3 { + margin: 0 0 0.65rem; + color: var(--brand); +} + +.system-node p { + margin: 0; + color: var(--ink-soft); + font-size: 0.95rem; +} + +.system-node .caps { + margin-top: 0.9rem; + padding-top: 0.9rem; + border-top: 1px dashed rgba(166, 28, 32, 0.2); + font-size: 0.85rem; +} + +.system-loop { + margin: 0; + padding: 1.2rem 1.4rem; + border: 1px dashed rgba(166, 28, 32, 0.28); + color: var(--brand); + font-size: 1.1rem; +} + +@media (max-width: 48rem) { + .system-tri { + grid-template-columns: 1fr; + } +} diff --git a/src/pages/System.tsx b/src/pages/System.tsx new file mode 100644 index 0000000..5648bbb --- /dev/null +++ b/src/pages/System.tsx @@ -0,0 +1,38 @@ +import { Link } from 'react-router-dom' +import { Reveal } from '../components/Reveal' +import { system } from '../content/site' +import './System.css' + +export function SystemPage() { + return ( +
+
+ +

{system.eyebrow}

+

{system.title}

+

{system.lead}

+
+ +
+ {system.ends.map((item, i) => ( + +

{item.title}

+

{item.role}

+

{item.caps}

+
+ ))} +
+ + +

{system.loop}

+

{system.closing}

+
+ + 科技驱动 + +
+
+
+
+ ) +} diff --git a/src/pages/Tech.css b/src/pages/Tech.css new file mode 100644 index 0000000..d12d28c --- /dev/null +++ b/src/pages/Tech.css @@ -0,0 +1,101 @@ +.tech-page { + position: relative; + overflow: hidden; +} + +.tech-grid-bg { + position: absolute; + inset: 0; + background-image: linear-gradient(rgba(196, 163, 90, 0.08) 1px, transparent 1px), + linear-gradient(90deg, rgba(196, 163, 90, 0.08) 1px, transparent 1px); + background-size: 2.5rem 2.5rem; + mask-image: radial-gradient(circle at center, #000 20%, transparent 75%); + pointer-events: none; +} + +.tech-orbit { + position: relative; + display: grid; + grid-template-columns: 1fr 1fr; + grid-auto-rows: 1fr; + gap: 1.25rem; + margin: 3rem 0 2rem; + align-items: stretch; +} + +.tech-orbit > .reveal-base { + height: 100%; + min-height: 11rem; + display: flex; +} + +.tech-core { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + width: 6rem; + height: 6rem; + border-radius: 50%; + border: 1px solid var(--gold); + display: grid; + place-items: center; + text-align: center; + color: var(--gold); + letter-spacing: 0.1em; + background: rgba(28, 25, 31, 0.9); + z-index: 2; + font-size: 0.95rem; + pointer-events: none; +} + +.tech-sat { + width: 100%; + height: 100%; + min-height: 11rem; + padding: 1.3rem 1.2rem; + background: var(--tech-card); + border: 1px solid var(--tech-line); + display: flex; + flex-direction: column; + box-sizing: border-box; +} + +.tech-sat h3 { + margin: 0 0 0.55rem; + color: var(--gold); + flex-shrink: 0; +} + +.tech-sat p { + margin: 0; + color: var(--ink-soft); + font-size: 0.95rem; + flex: 1; +} + +.sat-0, +.sat-1, +.sat-2, +.sat-3 { + justify-self: stretch; + max-width: none; + margin-top: 0; +} + +@media (max-width: 48rem) { + .tech-orbit { + grid-template-columns: 1fr; + grid-auto-rows: auto; + } + + .tech-core { + position: static; + transform: none; + margin: 0 auto 1rem; + } + + .tech-sat { + min-height: 9rem; + } +} diff --git a/src/pages/Tech.tsx b/src/pages/Tech.tsx new file mode 100644 index 0000000..e32bccd --- /dev/null +++ b/src/pages/Tech.tsx @@ -0,0 +1,40 @@ +import { Link } from 'react-router-dom' +import { Reveal } from '../components/Reveal' +import { tech } from '../content/site' +import './Tech.css' + +export function TechPage() { + return ( +
+
+
+ +

{tech.eyebrow}

+

{tech.title}

+

{tech.lead}

+
+ +
+
+ 数字轨道 +
+ {tech.points.map((point, i) => ( + +

{point.title}

+

{point.text}

+
+ ))} +
+ + +

{tech.claim}

+
+ + {tech.cta.label} + +
+
+
+
+ ) +} diff --git a/src/pages/TechDetail.css b/src/pages/TechDetail.css new file mode 100644 index 0000000..d01b50e --- /dev/null +++ b/src/pages/TechDetail.css @@ -0,0 +1,54 @@ +.spec-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1px; + background: var(--tech-line); + border: 1px solid var(--tech-line); + margin: 2rem 0; +} + +.spec-card { + background: var(--tech-card); + padding: 1.5rem 1.35rem; + position: relative; +} + +.spec-no { + position: absolute; + top: 1rem; + right: 1.1rem; + color: rgba(196, 163, 90, 0.45); + font-size: 1.5rem; +} + +.spec-card h3 { + margin: 0 0 0.65rem; + color: var(--gold); +} + +.spec-card p { + margin: 0; + color: var(--ink-soft); + max-width: 28rem; +} + +.spec-highlights { + list-style: none; + margin: 0 0 1.5rem; + padding: 0; + display: flex; + flex-wrap: wrap; + gap: 0.75rem 1.5rem; +} + +.spec-highlights li { + color: var(--gold); + border-bottom: 1px solid rgba(196, 163, 90, 0.35); + padding-bottom: 0.2rem; +} + +@media (max-width: 48rem) { + .spec-grid { + grid-template-columns: 1fr; + } +} diff --git a/src/pages/TechDetail.tsx b/src/pages/TechDetail.tsx new file mode 100644 index 0000000..2a71ca1 --- /dev/null +++ b/src/pages/TechDetail.tsx @@ -0,0 +1,50 @@ +import { Link } from 'react-router-dom' +import { Reveal } from '../components/Reveal' +import { techDetail } from '../content/site' +import './TechDetail.css' + +export function TechDetailPage() { + return ( +
+
+ +

{techDetail.eyebrow}

+

{techDetail.title}

+

{techDetail.lead}

+
+ +
+ {techDetail.ports.map((port, i) => ( + + {String(i + 1).padStart(2, '0')} +

{port.title}

+

{port.text}

+
+ ))} +
+ + +
    + {techDetail.highlights.map((item) => ( +
  • + {item} +
  • + ))} +
+

{techDetail.closing}

+

{techDetail.contactHint}

+
+ + 联系我们 + +
+
+
+
+ ) +} diff --git a/src/stage/StageShell.css b/src/stage/StageShell.css new file mode 100644 index 0000000..9153150 --- /dev/null +++ b/src/stage/StageShell.css @@ -0,0 +1,298 @@ +/* ===== Stage Shell Ambient Theme & HUD ===== */ +.stage-shell { + position: relative; + width: 100vw; + height: 100vh; + height: 100dvh; + overflow: hidden; + background: #0e0c10; + background-image: + radial-gradient(circle at 15% 20%, rgba(166, 28, 32, 0.15) 0%, transparent 40%), + radial-gradient(circle at 85% 80%, rgba(196, 163, 90, 0.12) 0%, transparent 45%), + linear-gradient(180deg, #141117 0%, #0c0a0e 100%); + color: #f3ece4; + font-family: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif; + user-select: none; +} + +/* Subtle grid overlay for tech/exhibition feel */ +.stage-shell::before { + content: ''; + position: absolute; + inset: 0; + background-image: + linear-gradient(rgba(196, 163, 90, 0.03) 1px, transparent 1px), + linear-gradient(90deg, rgba(196, 163, 90, 0.03) 1px, transparent 1px); + background-size: 4rem 4rem; + pointer-events: none; + z-index: 0; +} + +/* HUD Top Bar with Safe Area Top */ +.stage-hud-top { + position: absolute; + top: 0; + left: 0; + right: 0; + height: calc(4.5rem + env(safe-area-inset-top, 0px)); + padding-top: env(safe-area-inset-top, 0px); + padding-left: 2.5rem; + padding-right: 2.5rem; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: space-between; + z-index: 50; + background: linear-gradient(180deg, rgba(14, 12, 16, 0.95) 0%, rgba(14, 12, 16, 0) 100%); + border-bottom: 1px solid rgba(196, 163, 90, 0.15); + backdrop-filter: blur(8px); +} + +.stage-brand { + display: flex; + align-items: center; + gap: 0.85rem; + text-decoration: none; +} + +.stage-logo { + width: 2.4rem; + height: 2.4rem; + object-fit: contain; + filter: drop-shadow(0 0 8px rgba(196, 163, 90, 0.4)); +} + +.stage-title { + font-family: 'Noto Serif SC', serif; + font-size: 1.25rem; + font-weight: 600; + letter-spacing: 0.12em; + color: var(--gold, #c4a35a); + background: linear-gradient(135deg, #f3ece4 0%, #c4a35a 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.stage-badge { + padding: 0.2rem 0.6rem; + border-radius: 0.2rem; + font-size: 0.75rem; + letter-spacing: 0.1em; + background: rgba(166, 28, 32, 0.25); + border: 1px solid rgba(166, 28, 32, 0.5); + color: #f3ece4; +} + +/* Slide Nav Pills */ +.stage-nav-pills { + display: flex; + align-items: center; + gap: 0.35rem; + background: rgba(28, 25, 31, 0.7); + padding: 0.3rem 0.5rem; + border-radius: 2rem; + border: 1px solid rgba(196, 163, 90, 0.2); +} + +.stage-nav-pill { + padding: 0.35rem 0.85rem; + border-radius: 1.5rem; + font-size: 0.82rem; + color: rgba(243, 236, 228, 0.65); + text-decoration: none; + transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1); + white-space: nowrap; +} + +.stage-nav-pill:hover { + color: #f3ece4; + background: rgba(196, 163, 90, 0.15); +} + +.stage-nav-pill.is-active { + color: #121014; + background: linear-gradient(135deg, #e8d08d 0%, #c4a35a 100%); + font-weight: 600; + box-shadow: 0 0 12px rgba(196, 163, 90, 0.35); +} + +/* AutoPlay Button, Exit & Index Indicator */ +.stage-hud-actions { + display: flex; + align-items: center; + gap: 0.85rem; +} + +.stage-autoplay-btn { + display: inline-flex; + align-items: center; + gap: 0.35rem; + padding: 0.35rem 0.75rem; + border-radius: 1.5rem; + font-size: 0.78rem; + color: rgba(243, 236, 228, 0.85); + background: rgba(28, 25, 31, 0.8); + border: 1px solid rgba(196, 163, 90, 0.3); + cursor: pointer; + transition: all 0.25s ease; +} + +.stage-autoplay-btn.is-playing { + color: var(--gold, #c4a35a); + border-color: rgba(196, 163, 90, 0.6); + background: rgba(196, 163, 90, 0.15); +} + +.stage-play-icon { + font-size: 0.7rem; +} + +.stage-index-num { + font-family: 'Noto Serif SC', serif; + font-size: 1.1rem; + letter-spacing: 0.1em; + color: rgba(196, 163, 90, 0.85); +} + +.stage-exit-btn { + display: inline-flex; + align-items: center; + gap: 0.4rem; + padding: 0.4rem 1rem; + border-radius: 0.2rem; + font-size: 0.82rem; + color: #f3ece4; + background: rgba(166, 28, 32, 0.3); + border: 1px solid rgba(166, 28, 32, 0.6); + cursor: pointer; + transition: all 0.25s ease; + text-decoration: none; +} + +.stage-exit-btn:hover { + background: rgba(166, 28, 32, 0.7); + color: #ffffff; + box-shadow: 0 0 15px rgba(166, 28, 32, 0.4); +} + +/* Main Viewport Container */ +.stage-viewport { + position: absolute; + inset: 0; + z-index: 10; + display: flex; + align-items: center; + justify-content: center; + padding: calc(4.5rem + env(safe-area-inset-top, 0px)) 2.5rem calc(2.5rem + env(safe-area-inset-bottom, 0px)); +} + +/* Bottom Progress & Hints with Safe Area Bottom */ +.stage-hud-bottom { + position: absolute; + bottom: calc(0.85rem + env(safe-area-inset-bottom, 0px)); + left: 0; + right: 0; + z-index: 50; + display: flex; + flex-direction: column; + align-items: center; + gap: 0.4rem; + pointer-events: none; +} + +.stage-dots { + display: flex; + align-items: center; + gap: 0.5rem; + pointer-events: auto; +} + +.stage-dot { + position: relative; + width: 0.5rem; + height: 0.5rem; + border-radius: 50%; + background: rgba(196, 163, 90, 0.25); + border: none; + padding: 0; + cursor: pointer; + overflow: hidden; + transition: all 0.3s ease; +} + +.stage-dot.is-active { + width: 2rem; + border-radius: 0.25rem; + background: rgba(196, 163, 90, 0.3); +} + +.stage-dot-progress { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 100%; + background: linear-gradient(90deg, var(--brand, #a61c20), var(--gold, #c4a35a)); + border-radius: 0.25rem; + transform-origin: left; + animation: stageProgressBar 6s linear forwards; +} + +@keyframes stageProgressBar { + from { + transform: scaleX(0); + } + to { + transform: scaleX(1); + } +} + +.stage-keyboard-hint { + font-size: 0.72rem; + color: rgba(243, 236, 228, 0.4); + letter-spacing: 0.08em; +} + +/* Mobile Responsive Adjustments for Stage Shell */ +@media (max-width: 48rem) { + .stage-hud-top { + padding-left: 1rem; + padding-right: 1rem; + height: calc(3.6rem + env(safe-area-inset-top, 0px)); + } + + .stage-nav-pills { + display: none; + } + + .stage-viewport { + padding-top: calc(3.6rem + env(safe-area-inset-top, 0px)); + padding-left: 1rem; + padding-right: 1rem; + padding-bottom: calc(3rem + env(safe-area-inset-bottom, 0px)); + } + + .stage-exit-btn span:first-child { + display: none; + } +} + +/* Animations */ +.stage-view-anim { + width: 100%; + height: 100%; + animation: stageFadeIn 0.5s cubic-bezier(0.22, 1, 0.36, 1) both; +} + +@keyframes stageFadeIn { + from { + opacity: 0; + transform: scale(0.98) translateY(10px); + filter: blur(4px); + } + to { + opacity: 1; + transform: scale(1) translateY(0); + filter: blur(0); + } +} diff --git a/src/stage/StageShell.tsx b/src/stage/StageShell.tsx new file mode 100644 index 0000000..40bf1f4 --- /dev/null +++ b/src/stage/StageShell.tsx @@ -0,0 +1,159 @@ +import { useCallback, useEffect, useRef, useState } from 'react' +import { Link, useLocation, useNavigate } from 'react-router-dom' +import { stageNavItems } from '../content/nav' +import { images } from '../content/site' +import { StageViews } from './StageViews' +import './StageShell.css' + +const AUTOPLAY_INTERVAL_MS = 6000 // 6s per slide + +export function StageShell() { + const location = useLocation() + const navigate = useNavigate() + const touchStartX = useRef(null) + const [isAutoPlay, setIsAutoPlay] = useState(true) + + const currentIndex = stageNavItems.findIndex((item) => item.path === location.pathname) + const activeIdx = currentIndex >= 0 ? currentIndex : 0 + + const goToSlide = useCallback( + (idx: number) => { + const target = stageNavItems[idx] + if (!target) return + const url = target.path === '/' ? '/?mode=stage' : `${target.path}?mode=stage` + navigate(url) + }, + [navigate], + ) + + const handlePrev = useCallback(() => { + const prevIdx = (activeIdx - 1 + stageNavItems.length) % stageNavItems.length + goToSlide(prevIdx) + }, [activeIdx, goToSlide]) + + const handleNext = useCallback(() => { + const nextIdx = (activeIdx + 1) % stageNavItems.length + goToSlide(nextIdx) + }, [activeIdx, goToSlide]) + + // Auto-play interval timer + useEffect(() => { + if (!isAutoPlay) return + const timer = setInterval(() => { + handleNext() + }, AUTOPLAY_INTERVAL_MS) + return () => clearInterval(timer) + }, [isAutoPlay, handleNext]) + + // Touch Swipe navigation for mobile + const handleTouchStart = (e: React.TouchEvent) => { + touchStartX.current = e.touches[0].clientX + } + + const handleTouchEnd = (e: React.TouchEvent) => { + if (touchStartX.current === null) return + const diffX = e.changedTouches[0].clientX - touchStartX.current + if (diffX > 50) { + handlePrev() + } else if (diffX < -50) { + handleNext() + } + touchStartX.current = null + } + + // Keyboard navigation + useEffect(() => { + const onKey = (e: KeyboardEvent) => { + if (e.key === 'ArrowRight' || e.key === 'ArrowDown' || e.key === 'PageDown' || e.key === ' ') { + e.preventDefault() + handleNext() + } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'PageUp') { + e.preventDefault() + handlePrev() + } + } + window.addEventListener('keydown', onKey) + return () => window.removeEventListener('keydown', onKey) + }, [handleNext, handlePrev]) + + const normalUrl = location.pathname === '/' ? '/' : location.pathname + + return ( +
+ {/* Top HUD */} +
+ + 杜康好客 + 杜康好客 + 全景展控 + + + {/* Module Navigation Pills */} + + + {/* Index, AutoPlay Toggle & Exit */} +
+ + + + {String(activeIdx + 1).padStart(2, '0')} / {String(stageNavItems.length).padStart(2, '0')} + + + + 退出展控 + + +
+
+ + {/* Main Exhibition Viewport */} +
+
+ +
+
+ + {/* Bottom Progress, Dots & Hints */} +
+
+ {stageNavItems.map((item, idx) => ( + + ))} +
+
每 6 秒自动切换展控 · 支持键盘方向键与手机划屏
+
+
+ ) +} diff --git a/src/stage/StageViews.css b/src/stage/StageViews.css new file mode 100644 index 0000000..afe2a85 --- /dev/null +++ b/src/stage/StageViews.css @@ -0,0 +1,672 @@ +/* ===== Stage Views Presentation CSS ===== */ + +:root { + --stage-brand: #a61c20; + --stage-gold: #c4a35a; + --stage-gold-light: #e8d08d; + --stage-glass-bg: rgba(28, 25, 31, 0.78); + --stage-glass-border: rgba(196, 163, 90, 0.22); + --stage-glow: rgba(196, 163, 90, 0.15); +} + +.stage-view-container { + width: 100%; + max-width: 82rem; + height: 100%; + margin: 0 auto; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + box-sizing: border-box; +} + +/* Glass Card Component */ +.stage-card { + background: var(--stage-glass-bg); + border: 1px solid var(--stage-glass-border); + backdrop-filter: blur(14px); + border-radius: 0.5rem; + padding: 1.5rem 1.75rem; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35); + transition: all 0.35s cubic-bezier(0.22, 1, 0.36, 1); + position: relative; + overflow: hidden; +} + +.stage-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 2px; + background: linear-gradient(90deg, transparent, var(--stage-gold), transparent); + opacity: 0.6; +} + +.stage-card:hover { + border-color: rgba(196, 163, 90, 0.5); + box-shadow: 0 12px 35px rgba(166, 28, 32, 0.25); + transform: translateY(-2px); +} + +/* Common Header Typography */ +.stage-eyebrow { + font-size: clamp(0.8rem, 1vw, 0.95rem); + color: var(--stage-gold); + letter-spacing: 0.2em; + margin: 0 0 0.5rem; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.stage-eyebrow::before { + content: ''; + width: 1.5rem; + height: 2px; + background: var(--stage-brand); +} + +.stage-page-title { + font-family: 'Noto Serif SC', serif; + font-size: clamp(1.8rem, 2.5vw, 2.75rem); + font-weight: 600; + margin: 0 0 0.85rem; + color: #ffffff; + letter-spacing: 0.05em; + background: linear-gradient(135deg, #ffffff 0%, #f3ece4 60%, var(--stage-gold-light) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.stage-lead { + font-size: clamp(0.95rem, 1.2vw, 1.15rem); + line-height: 1.6; + color: rgba(243, 236, 228, 0.8); + max-width: 52rem; + margin: 0 auto 1.5rem; + text-align: center; +} + +.stage-closing { + font-family: 'Noto Serif SC', serif; + font-size: clamp(1rem, 1.3vw, 1.25rem); + color: var(--stage-gold); + letter-spacing: 0.1em; + margin-top: 1.25rem; + text-align: center; + padding-top: 0.85rem; + border-top: 1px solid rgba(196, 163, 90, 0.2); + width: 100%; +} + +/* Stagger Animation Base */ +.stage-stagger { + opacity: 0; + animation: stageSlideUp 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; + animation-delay: calc(var(--i, 0) * 80ms); +} + +@keyframes stageSlideUp { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +/* ==================== Slide 1: Home ==================== */ +.stage-home-grid { + display: grid; + grid-template-columns: 1.2fr 0.8fr; + gap: 3rem; + align-items: center; + width: 100%; +} + +.stage-home-copy { + display: flex; + flex-direction: column; + align-items: flex-start; + text-align: left; +} + +.stage-home-brand { + font-family: 'Noto Serif SC', serif; + font-size: clamp(2.5rem, 4vw, 4.2rem); + color: var(--stage-brand); + margin: 0; + letter-spacing: 0.15em; + text-shadow: 0 0 20px rgba(166, 28, 32, 0.4); +} + +.stage-home-sub { + font-size: clamp(1.2rem, 1.8vw, 1.6rem); + color: var(--stage-gold); + letter-spacing: 0.12em; + margin: 0.2rem 0 1rem; +} + +.stage-home-title { + font-family: 'Noto Serif SC', serif; + font-size: clamp(2rem, 3.2vw, 3.2rem); + color: #ffffff; + margin: 0 0 1rem; + letter-spacing: 0.08em; + line-height: 1.25; +} + +.stage-home-desc { + font-size: clamp(1rem, 1.25vw, 1.25rem); + color: rgba(243, 236, 228, 0.82); + line-height: 1.75; + margin-bottom: 2rem; + max-width: 40rem; +} + +.stage-home-visual { + display: flex; + justify-content: center; + align-items: center; + position: relative; +} + +.stage-home-visual img { + width: min(20rem, 36vh); + height: auto; + filter: drop-shadow(0 15px 30px rgba(0, 0, 0, 0.6)); + animation: stageFloat 4s ease-in-out infinite; +} + +.stage-pedestal { + position: absolute; + bottom: -1rem; + width: 18rem; + height: 2.5rem; + background: radial-gradient(ellipse at center, rgba(196, 163, 90, 0.4) 0%, rgba(166, 28, 32, 0.2) 50%, transparent 75%); + border-radius: 50%; + filter: blur(8px); +} + +@keyframes stageFloat { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-12px); } +} + +/* ==================== Slide 2: Brand ==================== */ +.stage-brand-grid { + display: grid; + grid-template-columns: 1.1fr 0.9fr; + gap: 2.5rem; + width: 100%; + align-items: center; +} + +.stage-brand-cards { + display: grid; + gap: 1.1rem; +} + +.stage-brand-card { + display: grid; + grid-template-columns: 3rem 1fr; + gap: 1rem; + align-items: start; +} + +.stage-card-num { + font-family: 'Noto Serif SC', serif; + font-size: 1.5rem; + color: var(--stage-gold); +} + +.stage-brand-card h3 { + font-family: 'Noto Serif SC', serif; + font-size: 1.25rem; + color: #ffffff; + margin: 0 0 0.4rem; +} + +.stage-brand-card p { + font-size: 0.95rem; + color: rgba(243, 236, 228, 0.75); + margin: 0; + line-height: 1.6; +} + +.stage-brand-media { + display: flex; + flex-direction: column; + gap: 1.25rem; +} + +.stage-brand-media img { + width: 100%; + max-height: 14rem; + object-fit: cover; + border-radius: 0.35rem; + border: 1px solid var(--stage-glass-border); +} + +.stage-timeline-row { + display: flex; + justify-content: space-around; + width: 100%; + margin-top: 1.5rem; + padding: 1rem; + background: var(--stage-glass-bg); + border: 1px solid var(--stage-glass-border); + border-radius: 0.35rem; +} + +.stage-timeline-item { + display: flex; + align-items: center; + gap: 0.65rem; + font-family: 'Noto Serif SC', serif; + font-size: 1.05rem; + color: var(--stage-gold-light); +} + +.stage-timeline-dot { + width: 0.5rem; + height: 0.5rem; + background: var(--stage-brand); + border-radius: 50%; + box-shadow: 0 0 8px var(--stage-brand); +} + +/* ==================== Slide 3: Poetry ==================== */ +.stage-poetry-layout { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2.5rem; + align-items: center; + width: 100%; +} + +.stage-poem-main { + background: linear-gradient(145deg, rgba(38, 30, 42, 0.9), rgba(28, 25, 31, 0.85)); + border: 1px solid rgba(196, 163, 90, 0.35); + padding: 2.2rem; + border-radius: 0.5rem; + text-align: center; +} + +.stage-poem-quote { + font-family: 'Noto Serif SC', serif; + font-size: clamp(1.4rem, 2vw, 2rem); + line-height: 1.8; + color: var(--stage-gold-light); + margin: 0 0 1rem; +} + +.stage-poem-cite { + font-size: 0.95rem; + color: rgba(243, 236, 228, 0.6); + font-style: normal; +} + +.stage-poem-slips { + display: grid; + gap: 1.1rem; +} + +.stage-poem-slip p { + font-family: 'Noto Serif SC', serif; + font-size: 1.1rem; + color: #ffffff; + margin: 0 0 0.4rem; +} + +.stage-poem-slip cite { + font-size: 0.88rem; + color: var(--stage-gold); + font-style: normal; +} + +/* ==================== Slide 4: Qingxiang ==================== */ +.stage-qx-grid { + display: grid; + grid-template-columns: 0.85fr 0.8fr 0.85fr; + gap: 1.5rem; + align-items: center; + width: 100%; +} + +.stage-qx-center { + display: flex; + flex-direction: column; + align-items: center; + position: relative; +} + +.stage-qx-center img { + width: min(16rem, 30vh); + height: auto; + filter: drop-shadow(0 10px 25px rgba(0, 0, 0, 0.5)); + animation: stageFloat 4s ease-in-out infinite; +} + +.stage-qx-rings { + display: flex; + gap: 0.85rem; + margin-top: 1rem; +} + +.stage-qx-ring { + width: 3.5rem; + height: 3.5rem; + border-radius: 50%; + border: 1px solid var(--stage-gold); + background: rgba(166, 28, 32, 0.2); + display: grid; + place-items: center; + font-family: 'Noto Serif SC', serif; + font-size: 1.25rem; + color: var(--stage-gold-light); + box-shadow: 0 0 15px rgba(196, 163, 90, 0.2); +} + +.stage-qx-list { + display: grid; + gap: 1rem; +} + +.stage-qx-item h3 { + font-family: 'Noto Serif SC', serif; + font-size: 1.15rem; + color: var(--stage-gold); + margin: 0 0 0.3rem; +} + +.stage-qx-item p { + font-size: 0.92rem; + color: rgba(243, 236, 228, 0.75); + margin: 0; + line-height: 1.55; +} + +/* ==================== Slide 5: Haoke ==================== */ +.stage-haoke-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2.5rem; + align-items: center; + width: 100%; +} + +.stage-haoke-slogan { + font-family: 'Noto Serif SC', serif; + font-size: clamp(2rem, 3vw, 3rem); + color: var(--stage-brand); + margin: 0 0 1rem; + text-shadow: 0 0 15px rgba(166, 28, 32, 0.3); +} + +.stage-haoke-mechanism { + display: grid; + gap: 1.2rem; +} + +.stage-haoke-mech-card { + border-left: 3px solid var(--stage-brand); +} + +.stage-haoke-mech-card h3 { + font-family: 'Noto Serif SC', serif; + font-size: 1.2rem; + color: var(--stage-gold-light); + margin: 0 0 0.4rem; +} + +.stage-haoke-mech-card p { + font-size: 0.95rem; + color: rgba(243, 236, 228, 0.78); + margin: 0; + line-height: 1.6; +} + +/* ==================== Slide 6: System ==================== */ +.stage-system-tri { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.5rem; + width: 100%; + margin-bottom: 1.5rem; +} + +.stage-system-card h3 { + font-family: 'Noto Serif SC', serif; + font-size: 1.3rem; + color: var(--stage-gold); + margin: 0 0 0.6rem; +} + +.stage-system-card .role { + font-size: 0.98rem; + color: rgba(243, 236, 228, 0.9); + margin-bottom: 0.85rem; + line-height: 1.6; +} + +.stage-system-card .caps { + font-size: 0.85rem; + color: rgba(196, 163, 90, 0.85); + padding-top: 0.75rem; + border-top: 1px dashed rgba(196, 163, 90, 0.25); + margin: 0; +} + +.stage-loop-bar { + width: 100%; + padding: 1.2rem; + background: rgba(166, 28, 32, 0.15); + border: 1px dashed var(--stage-brand); + border-radius: 0.4rem; + text-align: center; + font-family: 'Noto Serif SC', serif; + font-size: 1.15rem; + color: var(--stage-gold-light); +} + +/* ==================== Slide 7: Tech ==================== */ +.stage-tech-orbit { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1.5rem; + width: 100%; +} + +.stage-sat-card h3 { + font-family: 'Noto Serif SC', serif; + font-size: 1.25rem; + color: var(--stage-gold); + margin: 0 0 0.5rem; +} + +.stage-sat-card p { + font-size: 0.95rem; + color: rgba(243, 236, 228, 0.78); + margin: 0; + line-height: 1.6; +} + +/* ==================== Slide 8: Subsidy ==================== */ +.stage-subsidy-layout { + display: grid; + grid-template-columns: 0.85fr 1.15fr; + gap: 2.5rem; + align-items: center; + width: 100%; +} + +.stage-subsidy-hero { + text-align: center; + background: radial-gradient(circle at center, rgba(166, 28, 32, 0.2) 0%, rgba(28, 25, 31, 0.8) 75%); +} + +.stage-big-num { + font-family: 'Noto Serif SC', serif; + font-size: clamp(4.5rem, 8vw, 7.5rem); + font-weight: 700; + color: var(--stage-brand); + text-shadow: 0 0 30px rgba(166, 28, 32, 0.5); + line-height: 1; + margin: 0.5rem 0; +} + +.stage-subsidy-cards { + display: grid; + gap: 1.2rem; +} + +.stage-subsidy-card h3 { + font-family: 'Noto Serif SC', serif; + font-size: 1.2rem; + color: var(--stage-gold); + margin: 0 0 0.4rem; +} + +.stage-subsidy-card p { + font-size: 0.95rem; + color: rgba(243, 236, 228, 0.78); + margin: 0; + line-height: 1.6; +} + +/* ==================== Slide 9: Partner ==================== */ +.stage-partner-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2rem; + width: 100%; +} + +.stage-partner-section h3 { + font-family: 'Noto Serif SC', serif; + font-size: 1.25rem; + color: var(--stage-brand); + margin: 0 0 0.85rem; + border-bottom: 1px solid rgba(166, 28, 32, 0.3); + padding-bottom: 0.4rem; +} + +.stage-partner-list { + list-style: none; + padding: 0; + margin: 0; + display: grid; + gap: 0.85rem; +} + +.stage-partner-list li { + display: flex; + align-items: flex-start; + gap: 0.65rem; + font-size: 0.95rem; + color: rgba(243, 236, 228, 0.85); + line-height: 1.55; +} + +.stage-partner-list li::before { + content: '◆'; + color: var(--stage-gold); + font-size: 0.8rem; + margin-top: 0.2rem; +} + +/* ==================== Slide 10: Tech Detail ==================== */ +.stage-ports-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1.5rem; + width: 100%; +} + +.stage-port-card h3 { + font-family: 'Noto Serif SC', serif; + font-size: 1.2rem; + color: var(--stage-gold); + margin: 0 0 0.5rem; +} + +.stage-port-card p { + font-size: 0.92rem; + color: rgba(243, 236, 228, 0.78); + margin: 0; + line-height: 1.6; +} + +/* ==================== Slide 11: Contact ==================== */ +.stage-contact-box { + display: flex; + align-items: center; + justify-content: center; + gap: 3.5rem; + padding: 2.5rem 3.5rem; + background: linear-gradient(135deg, rgba(38, 30, 42, 0.9), rgba(28, 25, 31, 0.85)); + border: 1px solid var(--stage-glass-border); + border-radius: 0.6rem; + box-shadow: 0 15px 40px rgba(0, 0, 0, 0.5); +} + +.stage-qr-frame { + width: 11rem; + height: 11rem; + padding: 0.65rem; + background: #ffffff; + border-radius: 0.4rem; + box-shadow: 0 0 25px rgba(196, 163, 90, 0.3); +} + +.stage-qr-frame img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.stage-contact-info h2 { + font-family: 'Noto Serif SC', serif; + font-size: 2rem; + color: var(--stage-brand); + margin: 0 0 0.3rem; +} + +.stage-contact-info .role { + font-size: 1.1rem; + color: var(--stage-gold); + margin-bottom: 1.25rem; +} + +.stage-contact-info .phone { + font-size: 1.8rem; + font-weight: 700; + color: #ffffff; + letter-spacing: 0.08em; + margin-bottom: 0.85rem; +} + +.stage-contact-info .hint { + font-size: 0.9rem; + color: rgba(243, 236, 228, 0.6); + margin: 0; +} + +/* Responsive Scaling for Ultra-wide / Smaller Display Height */ +@media (max-height: 800px) { + .stage-view-container { + transform: scale(0.92); + } +} + +@media (max-height: 700px) { + .stage-view-container { + transform: scale(0.82); + } +} diff --git a/src/stage/StageViews.tsx b/src/stage/StageViews.tsx new file mode 100644 index 0000000..d40f682 --- /dev/null +++ b/src/stage/StageViews.tsx @@ -0,0 +1,511 @@ +import { Link } from 'react-router-dom' +import { + brand, + contact, + haoke, + hero, + images, + partner, + poetry, + qingxiang, + subsidy, + system, + tech, + techDetail, +} from '../content/site' +import './StageViews.css' + +interface StageViewsProps { + activePath: string +} + +export function StageViews({ activePath }: StageViewsProps) { + switch (activePath) { + case '/': + return + case '/brand': + return + case '/poetry': + return + case '/qingxiang': + return + case '/haoke': + return + case '/system': + return + case '/tech': + return + case '/subsidy': + return + case '/partner': + return + case '/tech-detail': + return + case '/contact': + return + default: + return + } +} + +/* 1. Home View */ +function StageHomeView() { + return ( +
+
+
+
+ {hero.subBrand} · 全景展面 +
+

+ {hero.brand} +

+
+ 杜康好客 +
+

+ {hero.title} +

+

+ {hero.subtitle} +

+
+ + 进入品牌展厅 › + +
+
+ +
+ 酒祖杜康 T30 +
+
+
+
+ ) +} + +/* 2. Brand View */ +function StageBrandView() { + return ( +
+
+ {brand.eyebrow} +
+

+ {brand.title} +

+

+ {brand.lead} +

+ +
+
+ {brand.cards.map((card, idx) => ( +
+
0{idx + 1}
+
+

{card.title}

+

{card.text}

+
+
+ ))} +
+ +
+ 杜康庄园 + 造酒遗址 +
+
+ +
+ {brand.timeline.map((item) => ( +
+ + {item} +
+ ))} +
+
+ ) +} + +/* 3. Poetry View */ +function StagePoetryView() { + return ( +
+
+ {poetry.eyebrow} +
+

+ {poetry.title} +

+

+ {poetry.lead} +

+ +
+
+

“{poetry.mainPoem.quote}”

+ —— {poetry.mainPoem.source} +
+ +
+ {poetry.poems.map((poem, idx) => ( +
+

“{poem.quote}”

+ —— {poem.source} +
+ ))} +
+
+ +
+ {poetry.closing} +
+
+ ) +} + +/* 4. Qingxiang View */ +function StageQingxiangView() { + return ( +
+
+ {qingxiang.eyebrow} +
+

+ {qingxiang.title} +

+

+ {qingxiang.lead} +

+ +
+
+ {qingxiang.positions.slice(0, 2).map((pos, idx) => ( +
+

{pos.title}

+

{pos.text}

+
+ ))} +
+ +
+ 酒祖杜康清香 T30 +
+ {qingxiang.styleWords.map((word) => ( +
+ {word} +
+ ))} +
+
+ +
+ {qingxiang.positions.slice(2, 4).map((pos, idx) => ( +
+

{pos.title}

+

{pos.text}

+
+ ))} +
+
+ +
+ {qingxiang.mission} +
+
+ ) +} + +/* 5. Haoke View */ +function StageHaokeView() { + return ( +
+
+ {haoke.eyebrow} +
+

+ {haoke.title} +

+

+ {haoke.lead} +

+ +
+
+

+ 核心模式机制 +

+
+ {haoke.oneLiner} +
+

{haoke.closing}

+
+ +
+ {haoke.points.map((pt, idx) => ( +
+

{pt.title}

+

{pt.text}

+
+ ))} +
+
+
+ ) +} + +/* 6. System View */ +function StageSystemView() { + return ( +
+
+ {system.eyebrow} +
+

+ {system.title} +

+

+ {system.lead} +

+ +
+ {system.ends.map((end, idx) => ( +
+

{end.title}

+
{end.role}
+

核心能力:{end.caps}

+
+ ))} +
+ +
+ 闭环链路:{system.loop} +
+
+ ) +} + +/* 7. Tech View */ +function StageTechView() { + return ( +
+
+ {tech.eyebrow} +
+

+ {tech.title} +

+

+ {tech.lead} +

+ +
+ {tech.points.map((pt, idx) => ( +
+

{pt.title}

+

{pt.text}

+
+ ))} +
+ +
+ {tech.claim} +
+
+ ) +} + +/* 8. Subsidy View */ +function StageSubsidyView() { + return ( +
+
+ {subsidy.eyebrow} +
+

+ {subsidy.title} +

+

+ {subsidy.lead} +

+ +
+
+
专项资源规模
+
{subsidy.number}
+

{subsidy.numberNote}

+
+ +
+ {subsidy.points.map((pt, idx) => ( +
+

{pt.title}

+

{pt.text}

+
+ ))} +
+
+ +
+ {subsidy.closing} +
+
+ ) +} + +/* 9. Partner View */ +function StagePartnerView() { + return ( +
+
+ {partner.eyebrow} +
+

+ {partner.title} +

+

+ {partner.lead} +

+ +
+
+

核心竞争优势

+
    + {partner.points.slice(0, 3).map((pt) => ( +
  • + {pt.title}: {pt.text} +
  • + ))} +
+
+ +
+

合作要求与支持

+
    + {partner.points.slice(3, 5).map((pt) => ( +
  • + {pt.title}: {pt.text} +
  • + ))} +
+
+
+ +
+ + 立即联系合作 › + +
+
+ ) +} + +/* 10. Tech Detail View */ +function StageTechDetailView() { + return ( +
+
+ {techDetail.eyebrow} +
+

+ {techDetail.title} +

+

+ {techDetail.lead} +

+ +
+ {techDetail.ports.map((port, idx) => ( +
+

{port.title}

+

{port.text}

+
+ ))} +
+ +
+ {techDetail.closing} +
+
+ ) +} + +/* 11. Contact View */ +function StageContactView() { + return ( +
+
+ {contact.eyebrow} +
+

+ {contact.title} +

+

+ {contact.lead} +

+ +
+
+ 微信二维码 +
+ +
+

{contact.name}

+
{contact.role}
+
{contact.phone}
+

{contact.wechatHint}

+
+
+
+ ) +} diff --git a/src/styles/animations.css b/src/styles/animations.css new file mode 100644 index 0000000..39ebb88 --- /dev/null +++ b/src/styles/animations.css @@ -0,0 +1,291 @@ +@keyframes fadeRise { + from { + opacity: 0; + transform: translateY(1.25rem); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes softZoom { + from { + opacity: 0; + transform: scale(1.08); + } + to { + opacity: 1; + transform: scale(1); + } +} + +@keyframes slideLeft { + from { + opacity: 0; + transform: translateX(-2rem); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +@keyframes slideRight { + from { + opacity: 0; + transform: translateX(2rem); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +@keyframes unroll { + from { + opacity: 0; + clip-path: inset(0 0 100% 0); + } + to { + opacity: 1; + clip-path: inset(0 0 0 0); + } +} + +@keyframes inkBloom { + from { + opacity: 0; + filter: blur(8px); + transform: scale(0.96); + } + to { + opacity: 1; + filter: blur(0); + transform: scale(1); + } +} + +@keyframes popScale { + from { + opacity: 0; + transform: scale(0.5); + } + to { + opacity: 1; + transform: scale(1); + } +} + +@keyframes letterSweep { + from { + opacity: 0; + letter-spacing: 0.55em; + } + to { + opacity: 1; + letter-spacing: 0.08em; + } +} + +@keyframes floatY { + 0%, + 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-0.6rem); + } +} + +@keyframes drawLineY { + from { + transform: scaleY(0); + } + to { + transform: scaleY(1); + } +} + +@keyframes expandOut { + from { + opacity: 0; + transform: scale(0.7); + } + to { + opacity: 1; + transform: scale(1); + } +} + +@keyframes diagIn { + from { + opacity: 0; + transform: translate(1.5rem, 1.5rem); + } + to { + opacity: 1; + transform: translate(0, 0); + } +} + +@keyframes meetInLeft { + from { + opacity: 0; + transform: translateX(-3rem); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +@keyframes meetInRight { + from { + opacity: 0; + transform: translateX(3rem); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +.reveal-base { + opacity: 0; +} + +.reveal-base.is-in { + opacity: 1; +} + +.anim-rise { + transform: translateY(1.25rem); + transition: opacity 0.8s var(--ease), transform 0.8s var(--ease); +} +.anim-rise.is-in { + transform: translateY(0); +} + +.anim-slide-left { + transform: translateX(-2rem); + transition: opacity 0.85s var(--ease), transform 0.85s var(--ease); +} +.anim-slide-left.is-in { + transform: translateX(0); +} + +.anim-slide-right { + transform: translateX(2rem); + transition: opacity 0.85s var(--ease), transform 0.85s var(--ease); +} +.anim-slide-right.is-in { + transform: translateX(0); +} + +.anim-zoom { + transform: scale(1.08); + transition: opacity 1s var(--ease), transform 1s var(--ease); +} +.anim-zoom.is-in { + transform: scale(1); +} + +.anim-unroll { + clip-path: inset(0 0 100% 0); + transition: opacity 1s var(--ease), clip-path 1.1s var(--ease); +} +.anim-unroll.is-in { + clip-path: inset(0 0 0 0); +} + +.anim-ink { + filter: blur(8px); + transform: scale(0.96); + transition: opacity 1s var(--ease), filter 1s var(--ease), transform 1s var(--ease); +} +.anim-ink.is-in { + filter: blur(0); + transform: scale(1); +} + +.anim-pop { + transform: scale(0.5); + transition: opacity 0.6s var(--ease), transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); +} +.anim-pop.is-in { + transform: scale(1); +} + +.anim-sweep { + letter-spacing: 0.55em; + transition: opacity 1s var(--ease), letter-spacing 1.1s var(--ease); +} +.anim-sweep.is-in { + letter-spacing: 0.08em; +} + +.anim-expand { + transform: scale(0.7); + transition: opacity 0.8s var(--ease), transform 0.8s var(--ease); +} +.anim-expand.is-in { + transform: translate(0) scale(1); +} + +.anim-diag { + transform: translate(1.5rem, 1.5rem); + transition: opacity 0.75s var(--ease), transform 0.75s var(--ease); +} +.anim-diag.is-in { + transform: translate(0, 0); +} + +.anim-meet-left { + transform: translateX(-3rem); + transition: opacity 0.9s var(--ease), transform 0.9s var(--ease); +} +.anim-meet-left.is-in { + transform: translateX(0); +} + +.anim-meet-right { + transform: translateX(3rem); + transition: opacity 0.9s var(--ease), transform 0.9s var(--ease); +} +.anim-meet-right.is-in { + transform: translateX(0); +} + +.hero-float { + animation: floatY 4.5s ease-in-out infinite; +} + +.media-frame img, +.hero-visual img { + transition: transform 0.8s var(--ease); +} + +.media-frame:hover img { + transform: scale(1.03); +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + .reveal-base, + .hero-float, + .media-frame img, + .btn, + .page-enter { + animation: none !important; + transition: none !important; + opacity: 1 !important; + transform: none !important; + filter: none !important; + clip-path: none !important; + letter-spacing: normal !important; + } +} diff --git a/src/styles/responsive.css b/src/styles/responsive.css new file mode 100644 index 0000000..9ca798b --- /dev/null +++ b/src/styles/responsive.css @@ -0,0 +1,97 @@ +@media (max-width: 48rem) { + :root { + --nav-h: 3.75rem; + } + + .desktop-only { + display: none !important; + } + + .page-section { + padding: 3.5rem 0 !important; + } + + .split { + grid-template-columns: 1fr !important; + gap: 1.75rem !important; + } + + .hero { + min-height: auto !important; + padding: 5.5rem 0 3rem !important; + } + + .hero-grid { + grid-template-columns: 1fr !important; + gap: 2rem !important; + } + + .hero-title { + font-size: 2rem !important; + } + + .module-grid, + .card-grid, + .ends-grid, + .ports-grid, + .qx-cross, + .qx-split, + .spec-grid, + .subsidy-ring, + .partner-layout, + .brand-layout, + .contact-meet, + .system-tri, + .tech-orbit { + grid-template-columns: 1fr !important; + } + + .module-rail { + margin-inline: -0.25rem; + } + + .poem-main { + writing-mode: horizontal-tb !important; + text-orientation: mixed !important; + min-height: auto !important; + padding: 1.5rem !important; + } + + .timeline { + flex-direction: column !important; + align-items: flex-start !important; + } + + .contact-grid { + grid-template-columns: 1fr !important; + } + + .nav-links { + display: none; + } + + .photo-placeholder { + max-width: 100% !important; + } + + .loop-line { + flex-direction: column; + align-items: flex-start; + } +} + +@media (min-width: 48.0625rem) { + .mobile-only { + display: none !important; + } +} + +@media (min-width: 90rem) { + .page-title { + font-size: 3rem; + } + + .hero-title { + font-size: 3.5rem !important; + } +} diff --git a/src/styles/tokens.css b/src/styles/tokens.css new file mode 100644 index 0000000..7ac550a --- /dev/null +++ b/src/styles/tokens.css @@ -0,0 +1,242 @@ +:root { + --brand: #a61c20; + --brand-deep: #7d1216; + --brand-soft: rgba(166, 28, 32, 0.08); + --gold: #c4a35a; + --gold-soft: rgba(196, 163, 90, 0.35); + --ink: #1a1512; + --ink-soft: #5c534c; + --paper: #f7f2ea; + --paper-deep: #ebe3d6; + --white: #ffffff; + --tech-bg: #121014; + --tech-card: #1c191f; + --tech-line: rgba(196, 163, 90, 0.28); + --max: min(72rem, 92vw); + --nav-h: 4.5rem; + --ease: cubic-bezier(0.22, 1, 0.36, 1); + --shadow-soft: 0 1.25rem 3rem rgba(26, 21, 18, 0.08); +} + +/* rem base: 375px -> 14px, 1920px -> 18px */ +html { + font-size: clamp(0.875rem, 0.75rem + 0.35vw, 1.125rem); + scroll-behavior: smooth; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +body { + margin: 0; + color: var(--ink); + background: var(--paper); + font-family: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif; + line-height: 1.7; + -webkit-font-smoothing: antialiased; +} + +img { + max-width: 100%; + display: block; +} + +a { + color: inherit; + text-decoration: none; +} + +button { + font: inherit; + cursor: pointer; + border: none; + background: none; +} + +h1, +h2, +h3, +.serif { + font-family: 'Noto Serif SC', 'Songti SC', serif; + font-weight: 600; + line-height: 1.35; + letter-spacing: 0.02em; +} + +.container { + width: var(--max); + margin-inline: auto; +} + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 2.75rem; + padding: 0.7rem 1.6rem; + border-radius: 0.15rem; + transition: background 0.35s var(--ease), color 0.35s var(--ease), transform 0.35s var(--ease), + box-shadow 0.35s var(--ease); +} + +.btn-primary { + background: var(--brand); + color: var(--white); +} + +.btn-primary:hover { + background: var(--brand-deep); + transform: translateY(-0.1rem); + box-shadow: var(--shadow-soft); +} + +.btn-ghost { + color: var(--brand); + border: 1px solid var(--brand); + background: transparent; +} + +.btn-ghost:hover { + background: var(--brand-soft); +} + +.btn-light { + background: var(--white); + color: var(--brand); +} + +.btn-light:hover { + transform: translateY(-0.1rem); +} + +.eyebrow { + display: inline-flex; + align-items: center; + gap: 0.55rem; + color: var(--brand); + font-size: 0.875rem; + letter-spacing: 0.18em; + text-transform: none; + margin-bottom: 0.85rem; +} + +.eyebrow::before { + content: ''; + width: 1.5rem; + height: 1px; + background: var(--brand); +} + +.page-title { + font-size: clamp(1.75rem, 1.4rem + 1.2vw, 2.75rem); + margin: 0 0 1rem; +} + +.lead { + font-size: 1.05rem; + color: var(--ink-soft); + max-width: 42rem; + margin: 0 0 2rem; +} + +.closing { + margin-top: 2.5rem; + padding-top: 1.5rem; + border-top: 1px solid var(--gold-soft); + font-family: 'Noto Serif SC', serif; + font-size: 1.1rem; + color: var(--ink); +} + +.theme-tech { + --ink: #f3ece4; + --ink-soft: rgba(243, 236, 228, 0.72); + --paper: var(--tech-bg); + color: var(--ink); + background: var(--tech-bg); +} + +.theme-tech .eyebrow, +.theme-tech .closing { + color: var(--gold); +} + +.theme-tech .eyebrow::before { + background: var(--gold); +} + +.theme-tech .closing { + border-top-color: var(--tech-line); +} + +.theme-tech .btn-ghost { + color: var(--gold); + border-color: var(--gold); +} + +.theme-tech .btn-ghost:hover { + background: rgba(196, 163, 90, 0.12); +} + +.deep-read-rail { + margin-top: 3rem; + padding-top: 2rem; + border-top: 1px solid rgba(166, 28, 32, 0.12); +} + +.deep-read-title { + margin: 0 0 0.45rem; + color: var(--brand); + font-size: 1.45rem; + letter-spacing: 0.08em; +} + +.deep-read-lead { + margin: 0 0 1.35rem; + color: var(--ink-soft); +} + +.deep-read-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 0.85rem 1rem; +} + +.poetry-deep-grid { + grid-template-columns: 1fr 1fr; +} + +.deep-read-card { + display: grid; + gap: 0.35rem; + padding: 1.15rem 1.2rem; + background: rgba(255, 255, 255, 0.55); + border-left: 3px solid var(--gold); + transition: transform 0.25s var(--ease), background 0.25s var(--ease); +} + +.deep-read-card:hover { + transform: translateY(-0.15rem); + background: rgba(255, 255, 255, 0.85); +} + +.deep-read-card strong { + color: var(--brand); + font-size: 1.05rem; +} + +.deep-read-card span { + color: var(--ink-soft); + font-size: 0.92rem; + line-height: 1.55; +} + +@media (max-width: 48rem) { + .deep-read-grid, + .poetry-deep-grid { + grid-template-columns: 1fr; + } +} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..b382d79 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..953116c --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..9ffcc67 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +export default defineConfig({ + plugins: [react()], +})