feat: monochrome black & white rebrand + new Pudu robots
- Convert site from royal-blue theme to black/white monochrome (desaturate all blue-hued colors; keep WhatsApp green and error red) - Swap blue circular brand logo for mono YS mark; regenerate favicon/PWA icons - Add 6 Pudu robots (CC1 Pro, MT1 Max, MT1 Vac, T600, T600 Underride, BG1 Pro) - Fix favicon.ico to RGBA (Next 16 Turbopack decode) and Stripe apiVersion type Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c2490947d2
commit
873026a4a9
@@ -24,12 +24,12 @@ function Loader() {
|
||||
<div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '0.75rem' }}>
|
||||
<div style={{
|
||||
width: '48px', height: '48px',
|
||||
border: '3px solid rgba(59, 130, 246, 0.15)',
|
||||
borderTopColor: '#3b82f6',
|
||||
border: '3px solid rgba(153, 153, 153, 0.15)',
|
||||
borderTopColor: '#999999',
|
||||
borderRadius: '50%',
|
||||
animation: 'spin 1s linear infinite',
|
||||
}} />
|
||||
<p style={{ fontSize: '0.875rem', color: '#6a73a5', fontFamily: 'system-ui, sans-serif' }}>
|
||||
<p style={{ fontSize: '0.875rem', color: '#888888', fontFamily: 'system-ui, sans-serif' }}>
|
||||
{progress.toFixed(0)}% loaded
|
||||
</p>
|
||||
</div>
|
||||
@@ -51,13 +51,13 @@ function SceneContent({ onCapture }: { onCapture: (gl: WebGLRenderer, scene: Sce
|
||||
<SceneCapture onCapture={onCapture} />
|
||||
<Environment preset="studio" environmentIntensity={2.2} />
|
||||
<ambientLight intensity={3.4} />
|
||||
<hemisphereLight args={['#ffffff', '#3a4a78', 2.6]} />
|
||||
<hemisphereLight args={['#ffffff', '#595959', 2.6]} />
|
||||
{/* Key — front-right, strong white */}
|
||||
<directionalLight position={[5, 5, 5]} intensity={6.0} color="#ffffff" castShadow shadow-mapSize={[1024, 1024]} />
|
||||
{/* Fill — front-left, cool tint */}
|
||||
<directionalLight position={[-4, 3, 2]} intensity={4.0} color="#e8f0ff" />
|
||||
<directionalLight position={[-4, 3, 2]} intensity={4.0} color="#f4f4f4" />
|
||||
{/* Rim — behind */}
|
||||
<directionalLight position={[0, 3, -5]} intensity={2.8} color="#A6B2D8" />
|
||||
<directionalLight position={[0, 3, -5]} intensity={2.8} color="#bfbfbf" />
|
||||
{/* Top spotlight */}
|
||||
<spotLight position={[0, 8, 0]} intensity={4.5} angle={0.8} penumbra={0.45} color="#ffffff" />
|
||||
{/* Front fill — direct face/torso */}
|
||||
@@ -65,13 +65,13 @@ function SceneContent({ onCapture }: { onCapture: (gl: WebGLRenderer, scene: Sce
|
||||
{/* Face spotlight — soft direct head light */}
|
||||
<spotLight position={[0, 2.2, 4.2]} intensity={3.0} angle={0.55} penumbra={0.6} color="#ffffff" />
|
||||
{/* Bottom fill — lift the legs */}
|
||||
<directionalLight position={[0, -1, 4]} intensity={1.4} color="#dfe8ff" />
|
||||
<directionalLight position={[0, -1, 4]} intensity={1.4} color="#efefef" />
|
||||
{/* Side accents */}
|
||||
<pointLight position={[3, 1.5, 3]} intensity={2.4} color="#ffffff" distance={10} />
|
||||
<pointLight position={[-3, 1.5, 3]} intensity={2.4} color="#dfe8ff" distance={10} />
|
||||
<pointLight position={[-3, 1.5, 3]} intensity={2.4} color="#efefef" distance={10} />
|
||||
{/* Back side accents — define silhouette */}
|
||||
<pointLight position={[2.5, 2.5, -2]} intensity={1.6} color="#b0c4ff" distance={10} />
|
||||
<pointLight position={[-2.5, 2.5, -2]} intensity={1.6} color="#b0c4ff" distance={10} />
|
||||
<pointLight position={[2.5, 2.5, -2]} intensity={1.6} color="#d8d8d8" distance={10} />
|
||||
<pointLight position={[-2.5, 2.5, -2]} intensity={1.6} color="#d8d8d8" distance={10} />
|
||||
<RobotModel />
|
||||
<OrbitControls
|
||||
target={[0, 0.5, 0]}
|
||||
@@ -167,7 +167,7 @@ export function RobotCanvas() {
|
||||
gl={{ antialias: true, powerPreference: 'high-performance' }}
|
||||
style={{
|
||||
background:
|
||||
'radial-gradient(ellipse 45% 22% at 50% 82%, rgba(220, 228, 245, 0.32), transparent 70%), radial-gradient(ellipse 70% 65% at 50% 45%, rgba(80, 110, 200, 0.38), transparent 65%), linear-gradient(180deg, #1c1d2c 0%, #0f1018 60%, #0a0b13 100%)',
|
||||
'radial-gradient(ellipse 45% 22% at 50% 82%, rgba(233, 233, 233, 0.32), transparent 70%), radial-gradient(ellipse 70% 65% at 50% 45%, rgba(140, 140, 140, 0.38), transparent 65%), linear-gradient(180deg, #242424 0%, #141414 60%, #0f0f0f 100%)',
|
||||
}}
|
||||
>
|
||||
<Suspense fallback={<Loader />}>
|
||||
@@ -181,9 +181,9 @@ export function RobotCanvas() {
|
||||
style={{
|
||||
...btnBase,
|
||||
left: '1rem',
|
||||
backgroundColor: 'rgba(20, 19, 26, 0.78)',
|
||||
border: '1px solid rgba(74, 102, 216, 0.36)',
|
||||
color: '#DEE0F0',
|
||||
backgroundColor: 'rgba(23, 23, 23, 0.78)',
|
||||
border: '1px solid rgba(145, 145, 145, 0.36)',
|
||||
color: '#e7e7e7',
|
||||
boxShadow: '0 8px 22px rgba(0, 0, 0, 0.45)',
|
||||
letterSpacing: '0.04em',
|
||||
}}
|
||||
@@ -200,9 +200,9 @@ export function RobotCanvas() {
|
||||
style={{
|
||||
...btnBase,
|
||||
left: '8.5rem',
|
||||
backgroundColor: shareStatus === 'copied' ? 'rgba(127, 214, 208, 0.18)' : 'rgba(20, 19, 26, 0.78)',
|
||||
border: `1px solid ${shareStatus === 'copied' ? 'rgba(127, 214, 208, 0.6)' : 'rgba(74, 102, 216, 0.36)'}`,
|
||||
color: shareStatus === 'copied' ? '#7FD6D0' : '#DEE0F0',
|
||||
backgroundColor: shareStatus === 'copied' ? 'rgba(171, 171, 171, 0.18)' : 'rgba(23, 23, 23, 0.78)',
|
||||
border: `1px solid ${shareStatus === 'copied' ? 'rgba(171, 171, 171, 0.6)' : 'rgba(145, 145, 145, 0.36)'}`,
|
||||
color: shareStatus === 'copied' ? '#ababab' : '#e7e7e7',
|
||||
boxShadow: '0 8px 22px rgba(0, 0, 0, 0.45)',
|
||||
letterSpacing: '0.04em',
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user