Files
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Has been cancelled
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (windows-latest) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/sdk) (push) Has been cancelled
Publish SDK (npm) / publish (officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (macos-latest) (push) Has been cancelled
SDK smoke / smoke (ubuntu-latest) (push) Has been cancelled
Skill parity / diff (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

708 lines
21 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
OUTPUT="$SCRIPT_DIR/dark__liquid_flow.pptx"
echo "Building: dark--liquid-flow (LUXE Brand Visual Upgrade)"
rm -f "$OUTPUT"
officecli create "$OUTPUT"
# Colors
BG=0F0F2D
VIOLET=6C63FF
MINT=48E5C2
CORAL=FF6B8A
EBLUE=3D5AFE
AMBER=F5AF19
TITLE=F5F5FF
BODY=C8C8FF
MUTED=8888CC
# Off-canvas position
OFFSCREEN=36cm
# ============================================
# SLIDE 1 - HERO
# ============================================
echo "Building Slide 1: Hero..."
officecli add "$OUTPUT" '/' --type slide --prop layout=blank --prop background=$BG
# Scene actors: large fluid blobs (4 main blobs)
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=!!blob-1' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.35 \
--prop rotation=15 \
--prop x=2cm --prop y=3cm --prop width=12cm --prop height=8cm
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=!!blob-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.28 \
--prop rotation=25 \
--prop x=20cm --prop y=2cm --prop width=10cm --prop height=14cm
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=!!blob-3' \
--prop preset=ellipse \
--prop fill=$CORAL \
--prop opacity=0.32 \
--prop rotation=18 \
--prop x=8cm --prop y=10cm --prop width=13cm --prop height=9cm
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=!!blob-4' \
--prop preset=ellipse \
--prop fill=$EBLUE \
--prop opacity=0.38 \
--prop rotation=22 \
--prop x=24cm --prop y=11cm --prop width=9cm --prop height=11cm
# Scene actors: additional blob (hidden initially, appears in slide 3 & 5)
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=!!blob-5' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.01 \
--prop x=${OFFSCREEN} --prop y=0cm --prop width=8cm --prop height=11cm
# Scene actors: small droplets (3 droplets)
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=!!drop-1' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.55 \
--prop rotation=12 \
--prop x=15cm --prop y=5cm --prop width=3.5cm --prop height=2.8cm
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=!!drop-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.58 \
--prop rotation=28 \
--prop x=18cm --prop y=14cm --prop width=4cm --prop height=3.2cm
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=!!drop-3' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.52 \
--prop rotation=35 \
--prop x=6cm --prop y=16cm --prop width=2.8cm --prop height=3.8cm
# Content: title text
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=#s1-title' \
--prop text="LUXE" \
--prop font="Arial" \
--prop size=72 \
--prop bold=true \
--prop color=$TITLE \
--prop align=center \
--prop fill=none \
--prop x=3cm --prop y=6cm --prop width=28cm --prop height=3cm
officecli add "$OUTPUT" '/slide[1]' --type shape \
--prop 'name=#s1-subtitle' \
--prop text="品牌视觉升级 2025" \
--prop font="Arial" \
--prop size=42 \
--prop color=$BODY \
--prop align=center \
--prop fill=none \
--prop x=3cm --prop y=9.5cm --prop width=28cm --prop height=2cm
# ============================================
# SLIDE 2 - STATEMENT
# ============================================
echo "Building Slide 2: Statement..."
officecli add "$OUTPUT" '/' --type slide --prop layout=blank --prop background=$BG
officecli set "$OUTPUT" '/slide[2]' --prop transition=morph
# Move blobs (rotated and moved)
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=!!blob-1' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.40 \
--prop rotation=45 \
--prop x=4cm --prop y=1cm --prop width=15cm --prop height=10cm
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=!!blob-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.33 \
--prop rotation=52 \
--prop x=18cm --prop y=8cm --prop width=13cm --prop height=9cm
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=!!blob-3' \
--prop preset=ellipse \
--prop fill=$CORAL \
--prop opacity=0.36 \
--prop rotation=48 \
--prop x=1cm --prop y=9cm --prop width=10cm --prop height=13cm
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=!!blob-4' \
--prop preset=ellipse \
--prop fill=$EBLUE \
--prop opacity=0.42 \
--prop rotation=58 \
--prop x=22cm --prop y=3cm --prop width=11cm --prop height=8cm
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=!!blob-5' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.01 \
--prop x=${OFFSCREEN} --prop y=0cm --prop width=8cm --prop height=11cm
# Move droplets
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=!!drop-1' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.60 \
--prop rotation=38 \
--prop x=12cm --prop y=8cm --prop width=4.2cm --prop height=3.5cm
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=!!drop-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.56 \
--prop rotation=55 \
--prop x=25cm --prop y=12cm --prop width=3.2cm --prop height=4.5cm
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=!!drop-3' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.54 \
--prop rotation=62 \
--prop x=8cm --prop y=15cm --prop width=3.8cm --prop height=2.6cm
# Content: statement text
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=#s2-statement1' \
--prop text="从经典到未来" \
--prop font="Arial" \
--prop size=56 \
--prop bold=true \
--prop color=$TITLE \
--prop align=center \
--prop fill=none \
--prop x=5cm --prop y=6cm --prop width=24cm --prop height=2.5cm
officecli add "$OUTPUT" '/slide[2]' --type shape \
--prop 'name=#s2-statement2' \
--prop text="流动不止" \
--prop font="Arial" \
--prop size=48 \
--prop color=$BODY \
--prop align=center \
--prop fill=none \
--prop x=5cm --prop y=9cm --prop width=24cm --prop height=2cm
# ============================================
# SLIDE 3 - PILLARS
# ============================================
echo "Building Slide 3: Pillars..."
officecli add "$OUTPUT" '/' --type slide --prop layout=blank --prop background=$BG
officecli set "$OUTPUT" '/slide[3]' --prop transition=morph
# Move blobs (further transformed)
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=!!blob-1' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.30 \
--prop rotation=70 \
--prop x=1cm --prop y=4cm --prop width=9cm --prop height=12cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=!!blob-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.35 \
--prop rotation=78 \
--prop x=10cm --prop y=1cm --prop width=12cm --prop height=8cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=!!blob-3' \
--prop preset=ellipse \
--prop fill=$CORAL \
--prop opacity=0.28 \
--prop rotation=65 \
--prop x=23cm --prop y=2cm --prop width=10cm --prop height=13cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=!!blob-4' \
--prop preset=ellipse \
--prop fill=$EBLUE \
--prop opacity=0.38 \
--prop rotation=82 \
--prop x=15cm --prop y=10cm --prop width=14cm --prop height=9cm
# Show blob-5 on slide 3
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=!!blob-5' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.32 \
--prop rotation=72 \
--prop x=3cm --prop y=14cm --prop width=8cm --prop height=11cm
# Move droplets (only 2 visible)
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=!!drop-1' \
--prop preset=ellipse \
--prop fill=$CORAL \
--prop opacity=0.58 \
--prop rotation=68 \
--prop x=20cm --prop y=6cm --prop width=3.8cm --prop height=3cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=!!drop-2' \
--prop preset=ellipse \
--prop fill=$EBLUE \
--prop opacity=0.56 \
--prop rotation=85 \
--prop x=27cm --prop y=14cm --prop width=3.2cm --prop height=4.2cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=!!drop-3' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.01 \
--prop x=${OFFSCREEN} --prop y=0cm --prop width=3.8cm --prop height=2.6cm
# Content: pillars
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=#s3-title' \
--prop text="三大升级维度" \
--prop font="Arial" \
--prop size=56 \
--prop bold=true \
--prop color=$TITLE \
--prop align=center \
--prop fill=none \
--prop x=4cm --prop y=2cm --prop width=26cm --prop height=2cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=#s3-p1-title' \
--prop text="色彩体系" \
--prop font="Arial" \
--prop size=24 \
--prop color=$BODY \
--prop align=center \
--prop fill=none \
--prop x=5cm --prop y=7cm --prop width=8cm --prop height=1.5cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=#s3-p2-title' \
--prop text="字体系统" \
--prop font="Arial" \
--prop size=24 \
--prop color=$BODY \
--prop align=center \
--prop fill=none \
--prop x=13cm --prop y=7cm --prop width=8cm --prop height=1.5cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=#s3-p3-title' \
--prop text="动态标识" \
--prop font="Arial" \
--prop size=24 \
--prop color=$BODY \
--prop align=center \
--prop fill=none \
--prop x=21cm --prop y=7cm --prop width=8cm --prop height=1.5cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=#s3-p1-desc' \
--prop text="现代渐变与流动配色" \
--prop font="Arial" \
--prop size=18 \
--prop color=$MUTED \
--prop align=center \
--prop fill=none \
--prop x=5cm --prop y=9cm --prop width=8cm --prop height=1.2cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=#s3-p2-desc' \
--prop text="优雅衬线与几何无衬线" \
--prop font="Arial" \
--prop size=18 \
--prop color=$MUTED \
--prop align=center \
--prop fill=none \
--prop x=13cm --prop y=9cm --prop width=8cm --prop height=1.2cm
officecli add "$OUTPUT" '/slide[3]' --type shape \
--prop 'name=#s3-p3-desc' \
--prop text="响应式动效标志" \
--prop font="Arial" \
--prop size=18 \
--prop color=$MUTED \
--prop align=center \
--prop fill=none \
--prop x=21cm --prop y=9cm --prop width=8cm --prop height=1.2cm
# ============================================
# SLIDE 4 - SHOWCASE
# ============================================
echo "Building Slide 4: Showcase..."
officecli add "$OUTPUT" '/' --type slide --prop layout=blank --prop background=$BG
officecli set "$OUTPUT" '/slide[4]' --prop transition=morph
# Move blobs (new positions)
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=!!blob-1' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.35 \
--prop rotation=95 \
--prop x=22cm --prop y=1cm --prop width=11cm --prop height=9cm
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=!!blob-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.30 \
--prop rotation=105 \
--prop x=2cm --prop y=2cm --prop width=13cm --prop height=10cm
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=!!blob-3' \
--prop preset=ellipse \
--prop fill=$CORAL \
--prop opacity=0.40 \
--prop rotation=92 \
--prop x=12cm --prop y=9cm --prop width=9cm --prop height=12cm
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=!!blob-4' \
--prop preset=ellipse \
--prop fill=$EBLUE \
--prop opacity=0.33 \
--prop rotation=110 \
--prop x=24cm --prop y=10cm --prop width=10cm --prop height=8cm
# Hide blob-5 on slide 4
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=!!blob-5' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.01 \
--prop x=${OFFSCREEN} --prop y=0cm --prop width=8cm --prop height=11cm
# Move droplets (all 3 visible again)
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=!!drop-1' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.58 \
--prop rotation=100 \
--prop x=17cm --prop y=4cm --prop width=3.5cm --prop height=4.3cm
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=!!drop-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.60 \
--prop rotation=88 \
--prop x=8cm --prop y=13cm --prop width=4.2cm --prop height=3cm
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=!!drop-3' \
--prop preset=ellipse \
--prop fill=$CORAL \
--prop opacity=0.55 \
--prop rotation=115 \
--prop x=20cm --prop y=15cm --prop width=2.8cm --prop height=3.6cm
# Content: showcase
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=#s4-title' \
--prop text="产品应用展示" \
--prop font="Arial" \
--prop size=56 \
--prop bold=true \
--prop color=$TITLE \
--prop align=center \
--prop fill=none \
--prop x=4cm --prop y=3cm --prop width=26cm --prop height=2cm
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=#s4-subtitle' \
--prop text="包装设计 | 数字界面 | 空间体验" \
--prop font="Arial" \
--prop size=24 \
--prop color=$BODY \
--prop align=center \
--prop fill=none \
--prop x=5cm --prop y=8cm --prop width=24cm --prop height=2cm
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=#s4-desc1' \
--prop text="全新视觉系统已应用于产品包装、移动应用、" \
--prop font="Arial" \
--prop size=20 \
--prop color=$MUTED \
--prop align=center \
--prop fill=none \
--prop x=6cm --prop y=11cm --prop width=22cm --prop height=1.2cm
officecli add "$OUTPUT" '/slide[4]' --type shape \
--prop 'name=#s4-desc2' \
--prop text="线下门店及品牌传播的各个触点" \
--prop font="Arial" \
--prop size=20 \
--prop color=$MUTED \
--prop align=center \
--prop fill=none \
--prop x=6cm --prop y=12.5cm --prop width=22cm --prop height=1.2cm
# ============================================
# SLIDE 5 - EVIDENCE
# ============================================
echo "Building Slide 5: Evidence..."
officecli add "$OUTPUT" '/' --type slide --prop layout=blank --prop background=$BG
officecli set "$OUTPUT" '/slide[5]' --prop transition=morph
# Move blobs (data visualization feel)
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=!!blob-1' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.32 \
--prop rotation=135 \
--prop x=12cm --prop y=3cm --prop width=10cm --prop height=13cm
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=!!blob-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.38 \
--prop rotation=125 \
--prop x=3cm --prop y=8cm --prop width=8cm --prop height=11cm
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=!!blob-3' \
--prop preset=ellipse \
--prop fill=$CORAL \
--prop opacity=0.35 \
--prop rotation=118 \
--prop x=23cm --prop y=7cm --prop width=9cm --prop height=12cm
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=!!blob-4' \
--prop preset=ellipse \
--prop fill=$EBLUE \
--prop opacity=0.28 \
--prop rotation=142 \
--prop x=1cm --prop y=1cm --prop width=12cm --prop height=9cm
# Show blob-5 again on slide 5
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=!!blob-5' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.40 \
--prop rotation=130 \
--prop x=20cm --prop y=1cm --prop width=11cm --prop height=8cm
# Move droplets (only 2 visible)
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=!!drop-1' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.58 \
--prop rotation=138 \
--prop x=16cm --prop y=10cm --prop width=3.6cm --prop height=2.9cm
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=!!drop-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.56 \
--prop rotation=122 \
--prop x=6cm --prop y=15cm --prop width=4cm --prop height=3.4cm
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=!!drop-3' \
--prop preset=ellipse \
--prop fill=$CORAL \
--prop opacity=0.01 \
--prop x=${OFFSCREEN} --prop y=0cm --prop width=2.8cm --prop height=3.6cm
# Content: evidence
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=#s5-title' \
--prop text="市场成果" \
--prop font="Arial" \
--prop size=56 \
--prop bold=true \
--prop color=$TITLE \
--prop align=center \
--prop fill=none \
--prop x=4cm --prop y=2cm --prop width=26cm --prop height=2cm
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=#s5-metric1-num' \
--prop text="+45%" \
--prop font="Arial" \
--prop size=64 \
--prop bold=true \
--prop color=$MINT \
--prop align=center \
--prop fill=none \
--prop x=6cm --prop y=7cm --prop width=10cm --prop height=2.5cm
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=#s5-metric2-num' \
--prop text="+120%" \
--prop font="Arial" \
--prop size=64 \
--prop bold=true \
--prop color=$CORAL \
--prop align=center \
--prop fill=none \
--prop x=18cm --prop y=7cm --prop width=10cm --prop height=2.5cm
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=#s5-metric1-label' \
--prop text="品牌认知度提升" \
--prop font="Arial" \
--prop size=20 \
--prop color=$BODY \
--prop align=center \
--prop fill=none \
--prop x=6cm --prop y=10cm --prop width=10cm --prop height=1.2cm
officecli add "$OUTPUT" '/slide[5]' --type shape \
--prop 'name=#s5-metric2-label' \
--prop text="社交媒体互动增长" \
--prop font="Arial" \
--prop size=20 \
--prop color=$BODY \
--prop align=center \
--prop fill=none \
--prop x=18cm --prop y=10cm --prop width=10cm --prop height=1.2cm
# ============================================
# SLIDE 6 - CTA
# ============================================
echo "Building Slide 6: CTA..."
officecli add "$OUTPUT" '/' --type slide --prop layout=blank --prop background=$BG
officecli set "$OUTPUT" '/slide[6]' --prop transition=morph
# Move blobs (return to center, calmer)
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=!!blob-1' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.30 \
--prop rotation=155 \
--prop x=5cm --prop y=2cm --prop width=10cm --prop height=14cm
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=!!blob-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.35 \
--prop rotation=165 \
--prop x=18cm --prop y=1cm --prop width=13cm --prop height=10cm
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=!!blob-3' \
--prop preset=ellipse \
--prop fill=$CORAL \
--prop opacity=0.28 \
--prop rotation=148 \
--prop x=2cm --prop y=11cm --prop width=12cm --prop height=8cm
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=!!blob-4' \
--prop preset=ellipse \
--prop fill=$EBLUE \
--prop opacity=0.38 \
--prop rotation=172 \
--prop x=22cm --prop y=10cm --prop width=9cm --prop height=11cm
# Hide blob-5 on slide 6
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=!!blob-5' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.01 \
--prop x=${OFFSCREEN} --prop y=0cm --prop width=11cm --prop height=8cm
# Move droplets (all 3 visible)
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=!!drop-1' \
--prop preset=ellipse \
--prop fill=$AMBER \
--prop opacity=0.60 \
--prop rotation=160 \
--prop x=12cm --prop y=6cm --prop width=3.2cm --prop height=4cm
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=!!drop-2' \
--prop preset=ellipse \
--prop fill=$MINT \
--prop opacity=0.55 \
--prop rotation=150 \
--prop x=24cm --prop y=7cm --prop width=3.8cm --prop height=3cm
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=!!drop-3' \
--prop preset=ellipse \
--prop fill=$VIOLET \
--prop opacity=0.58 \
--prop rotation=178 \
--prop x=8cm --prop y=16cm --prop width=2.9cm --prop height=3.5cm
# Content: CTA
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=#s6-title' \
--prop text="开启品牌新纪元" \
--prop font="Arial" \
--prop size=64 \
--prop bold=true \
--prop color=$TITLE \
--prop align=center \
--prop fill=none \
--prop x=4cm --prop y=7cm --prop width=26cm --prop height=2.5cm
officecli add "$OUTPUT" '/slide[6]' --type shape \
--prop 'name=#s6-subtitle' \
--prop text="LUXE — 流动的美学 · 未来的经典" \
--prop font="Arial" \
--prop size=22 \
--prop color=$BODY \
--prop align=center \
--prop fill=none \
--prop x=5cm --prop y=10.5cm --prop width=24cm --prop height=1.5cm
# ============================================
# FINAL VALIDATION
# ============================================
officecli validate "$OUTPUT"
officecli view "$OUTPUT" outline
echo "✅ Build complete: $OUTPUT"