#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" OUTPUT="$SCRIPT_DIR/dark__space_odyssey.pptx" echo "Building: dark--space-odyssey (太空探索历程)" rm -f "$OUTPUT" officecli create "$OUTPUT" # Colors BG=0A0E27 PLANET=1E3A5F GLOW=4A5FFF GOLD=FFD700 WHITE=FFFFFF BLUE=4A90E2 CYAN=00D9FF ORANGE=F5A623 RED=D84315 MARS_RED=FF5722 MARS_ORANGE=FF6B35 PURPLE=9B59B6 PURPLE_DARK=8E44AD LIGHT_BLUE=3498DB TEXT_GRAY=B8C5D6 TEXT_LIGHT=D0D8E5 TEXT_BRIGHT=E5EAF3 # 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: space elements officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=!!planet-main' \ --prop preset=ellipse \ --prop fill=$PLANET \ --prop opacity=0.3 \ --prop x=24cm --prop y=8cm --prop width=12cm --prop height=12cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=!!glow-accent' \ --prop preset=ellipse \ --prop fill=$GLOW \ --prop opacity=0.08 \ --prop x=21cm --prop y=5cm --prop width=18cm --prop height=18cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=!!star-1' \ --prop preset=star5 \ --prop fill=$GOLD \ --prop opacity=0.6 \ --prop x=5cm --prop y=3cm --prop width=0.8cm --prop height=0.8cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=!!star-2' \ --prop preset=star5 \ --prop fill=$WHITE \ --prop opacity=0.5 \ --prop x=8cm --prop y=7cm --prop width=0.6cm --prop height=0.6cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=!!star-3' \ --prop preset=star5 \ --prop fill=$GOLD \ --prop opacity=0.7 \ --prop x=28cm --prop y=4cm --prop width=0.7cm --prop height=0.7cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=!!line-orbit' \ --prop preset=ellipse \ --prop line=$BLUE \ --prop lineWidth=0.15cm \ --prop fill=none \ --prop opacity=0.3 \ --prop x=18cm --prop y=4cm --prop width=20cm --prop height=20cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=!!dot-small' \ --prop preset=ellipse \ --prop fill=$CYAN \ --prop opacity=0.8 \ --prop x=3cm --prop y=15cm --prop width=0.4cm --prop height=0.4cm # Slide 1 content officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s1-hero-title' \ --prop text='太空探索历程' \ --prop font=苹方-简 \ --prop size=68 \ --prop bold=true \ --prop color=$WHITE \ --prop align=center \ --prop valign=middle \ --prop x=4cm --prop y=6cm --prop width=26cm --prop height=4cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s1-hero-subtitle' \ --prop text='从地球到星辰大海的伟大征程' \ --prop font=苹方-简 \ --prop size=24 \ --prop color=$TEXT_GRAY \ --prop align=center \ --prop valign=middle \ --prop x=4cm --prop y=10.5cm --prop width=26cm --prop height=2cm # Pre-create all other slide text content (off-canvas) officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s2-statement-title' \ --prop text='仰望星空,是人类与生俱来的本能' \ --prop font=苹方-简 \ --prop size=42 \ --prop bold=true \ --prop color=$WHITE \ --prop align=center \ --prop valign=middle \ --prop x=$OFFSCREEN --prop y=4cm --prop width=28cm --prop height=3cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s2-statement-text' \ --prop text='从古代天文学家绘制星图,到伽利略用望远镜观测木星卫星,再到现代火箭技术的诞生,人类从未停止探索宇宙的脚步。20世纪中叶,太空时代的大门终于被推开。' \ --prop font=苹方-简 \ --prop size=18 \ --prop color=$TEXT_LIGHT \ --prop align=center \ --prop valign=middle \ --prop x=$OFFSCREEN --prop y=8.5cm --prop width=26cm --prop height=6cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-pillar-title' \ --prop text='突破大气层:太空时代的黎明' \ --prop font=苹方-简 \ --prop size=32 \ --prop bold=true \ --prop color=$WHITE \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=2cm --prop width=28cm --prop height=2cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-p1-year' \ --prop text='1957' \ --prop font=苹方-简 \ --prop size=56 \ --prop bold=true \ --prop color=$GOLD \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=5.5cm --prop width=8cm --prop height=3cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-p1-title' \ --prop text='人造卫星' \ --prop font=苹方-简 \ --prop size=28 \ --prop bold=true \ --prop color=$WHITE \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=9cm --prop width=8cm --prop height=2cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-p1-desc' \ --prop text='苏联发射斯普特尼克1号,人类第一颗人造卫星进入轨道,标志着太空时代开启' \ --prop font=苹方-简 \ --prop size=16 \ --prop color=C0CAD9 \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=11.5cm --prop width=7cm --prop height=4cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-p2-year' \ --prop text='1961' \ --prop font=苹方-简 \ --prop size=56 \ --prop bold=true \ --prop color=$GOLD \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=5.5cm --prop width=8cm --prop height=3cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-p2-title' \ --prop text='载人飞行' \ --prop font=苹方-简 \ --prop size=28 \ --prop bold=true \ --prop color=$WHITE \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=9cm --prop width=8cm --prop height=2cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-p2-desc' \ --prop text='尤里·加加林乘坐东方1号完成108分钟环绕地球飞行,成为第一个进入太空的人类' \ --prop font=苹方-简 \ --prop size=16 \ --prop color=C0CAD9 \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=11.5cm --prop width=7cm --prop height=4cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-p3-year' \ --prop text='1965' \ --prop font=苹方-简 \ --prop size=56 \ --prop bold=true \ --prop color=$GOLD \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=5.5cm --prop width=8cm --prop height=3cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-p3-title' \ --prop text='太空行走' \ --prop font=苹方-简 \ --prop size=28 \ --prop bold=true \ --prop color=$WHITE \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=9cm --prop width=8cm --prop height=2cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s3-p3-desc' \ --prop text='列昂诺夫完成人类首次舱外活动,在太空中漂浮12分钟' \ --prop font=苹方-简 \ --prop size=16 \ --prop color=C0CAD9 \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=11.5cm --prop width=7cm --prop height=4cm # Slide 4 content officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s4-title' \ --prop text='月球征程' \ --prop font=苹方-简 \ --prop size=48 \ --prop bold=true \ --prop color=$WHITE \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=2.5cm --prop width=20cm --prop height=3cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s4-quote' \ --prop text='这是一个人的一小步,却是人类的一大步' \ --prop font=苹方-简 \ --prop size=32 \ --prop bold=true \ --prop color=$GOLD \ --prop align=left \ --prop valign=middle \ --prop x=$OFFSCREEN --prop y=6.5cm --prop width=18cm --prop height=4cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s4-data1' \ --prop text='1969年7月20日,阿波罗11号成功登月,38万公里的旅程' \ --prop font=苹方-简 \ --prop size=20 \ --prop color=$TEXT_BRIGHT \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=11cm --prop width=18cm --prop height=3cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s4-data2' \ --prop text='6次成功登月任务(1969-1972)' \ --prop font=苹方-简 \ --prop size=18 \ --prop color=$TEXT_GRAY \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=14.5cm --prop width=18cm --prop height=2cm # Slide 5 content officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-title' \ --prop text='空间站时代:在轨道上生活' \ --prop font=苹方-简 \ --prop size=32 \ --prop bold=true \ --prop color=$WHITE \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=2.5cm --prop width=28cm --prop height=2cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-station1-title' \ --prop text='和平号空间站' \ --prop font=苹方-简 \ --prop size=24 \ --prop bold=true \ --prop color=$WHITE \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=6cm --prop width=8cm --prop height=2cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-station1-year' \ --prop text='1986-2001' \ --prop font=苹方-简 \ --prop size=20 \ --prop color=$CYAN \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=8.5cm --prop width=8cm --prop height=1.5cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-station1-desc' \ --prop text='运行15年,累计接待137名宇航员,证明人类可以在太空长期生活' \ --prop font=苹方-简 \ --prop size=16 \ --prop color=C0CAD9 \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=10.5cm --prop width=7.5cm --prop height=4cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-station2-title' \ --prop text='国际空间站' \ --prop font=苹方-简 \ --prop size=24 \ --prop bold=true \ --prop color=$WHITE \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=6cm --prop width=8cm --prop height=2cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-station2-year' \ --prop text='1998-至今' \ --prop font=苹方-简 \ --prop size=20 \ --prop color=$BLUE \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=8.5cm --prop width=8cm --prop height=1.5cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-station2-desc' \ --prop text='16国合作,400km轨道高度,持续有人驻守超过23年' \ --prop font=苹方-简 \ --prop size=16 \ --prop color=C0CAD9 \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=10.5cm --prop width=7.5cm --prop height=4cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-station3-title' \ --prop text='中国空间站' \ --prop font=苹方-简 \ --prop size=24 \ --prop bold=true \ --prop color=$WHITE \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=6cm --prop width=8cm --prop height=2cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-station3-year' \ --prop text='2021-至今' \ --prop font=苹方-简 \ --prop size=20 \ --prop color=5865F2 \ --prop align=center \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=8.5cm --prop width=8cm --prop height=1.5cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s5-station3-desc' \ --prop text='自主研发,T字构型,可容纳3-6名航天员长期工作' \ --prop font=苹方-简 \ --prop size=16 \ --prop color=C0CAD9 \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=10.5cm --prop width=7.5cm --prop height=4cm # Slide 6 content officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s6-title' \ --prop text='火星梦想' \ --prop font=苹方-简 \ --prop size=48 \ --prop bold=true \ --prop color=$WHITE \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=2.5cm --prop width=15cm --prop height=3cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s6-subtitle' \ --prop text='下一个人类的家园' \ --prop font=苹方-简 \ --prop size=36 \ --prop bold=true \ --prop color=FF8A65 \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=6cm --prop width=15cm --prop height=2.5cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s6-section-title' \ --prop text='探测器先行' \ --prop font=苹方-简 \ --prop size=22 \ --prop bold=true \ --prop color=$WHITE \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=9.5cm --prop width=14cm --prop height=1.5cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s6-point1' \ --prop text='已有10+个火星探测器成功着陆,毅力号、祝融号正在工作' \ --prop font=苹方-简 \ --prop size=16 \ --prop color=$TEXT_LIGHT \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=11cm --prop width=14cm --prop height=2.5cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s6-point2' \ --prop text='技术突破 | SpaceX星舰可重复使用,NASA Artemis重返月球为火星铺路' \ --prop font=苹方-简 \ --prop size=16 \ --prop color=$TEXT_LIGHT \ --prop align=left \ --prop valign=top \ --prop x=$OFFSCREEN --prop y=13.5cm --prop width=14cm --prop height=2.5cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s6-timeline' \ --prop text='2030年代' \ --prop font=苹方-简 \ --prop size=28 \ --prop bold=true \ --prop color=$GOLD \ --prop align=right \ --prop valign=middle \ --prop x=$OFFSCREEN --prop y=8cm --prop width=10cm --prop height=2cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s6-timeline-text' \ --prop text='NASA计划实现载人登陆火星' \ --prop font=苹方-简 \ --prop size=18 \ --prop color=$WHITE \ --prop align=right \ --prop valign=middle \ --prop x=$OFFSCREEN --prop y=10.5cm --prop width=10cm --prop height=2cm # Slide 7 content officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s7-title' \ --prop text='征途未完' \ --prop font=苹方-简 \ --prop size=64 \ --prop bold=true \ --prop color=$WHITE \ --prop align=center \ --prop valign=middle \ --prop x=$OFFSCREEN --prop y=5.5cm --prop width=26cm --prop height=3.5cm officecli add "$OUTPUT" '/slide[1]' --type shape \ --prop 'name=#s7-text' \ --prop text='从第一颗卫星到空间站,从月球漫步到火星梦想,人类的探索永不止步。星辰大海,就在前方。' \ --prop font=苹方-简 \ --prop size=20 \ --prop color=$TEXT_GRAY \ --prop align=center \ --prop valign=middle \ --prop x=$OFFSCREEN --prop y=10cm --prop width=26cm --prop height=5cm # ============================================ # SLIDE 2 - STATEMENT # ============================================ echo "Building Slide 2: Statement..." officecli add "$OUTPUT" '/' --from '/slide[1]' officecli set "$OUTPUT" '/slide[2]' --prop transition=morph # Morph scene actors officecli set "$OUTPUT" '/slide[2]/shape[1]' --prop x=2cm --prop y=2cm --prop width=8cm --prop height=8cm officecli set "$OUTPUT" '/slide[2]/shape[2]' --prop x=0cm --prop y=0cm --prop width=15cm --prop height=15cm --prop opacity=0.1 officecli set "$OUTPUT" '/slide[2]/shape[3]' --prop x=26cm --prop y=5cm officecli set "$OUTPUT" '/slide[2]/shape[4]' --prop x=29cm --prop y=14cm officecli set "$OUTPUT" '/slide[2]/shape[5]' --prop x=10cm --prop y=2cm officecli set "$OUTPUT" '/slide[2]/shape[6]' --prop x=$OFFSCREEN --prop y=0cm officecli set "$OUTPUT" '/slide[2]/shape[7]' --prop x=28cm --prop y=17cm # Hide slide 1 content, show slide 2 content officecli set "$OUTPUT" '/slide[2]/shape[8]' --prop x=$OFFSCREEN --prop y=0cm officecli set "$OUTPUT" '/slide[2]/shape[9]' --prop x=$OFFSCREEN --prop y=5cm officecli set "$OUTPUT" '/slide[2]/shape[10]' --prop x=3cm --prop y=4cm officecli set "$OUTPUT" '/slide[2]/shape[11]' --prop x=4cm --prop y=8.5cm # ============================================ # SLIDE 3 - PILLARS # ============================================ echo "Building Slide 3: Pillars..." officecli add "$OUTPUT" '/' --from '/slide[1]' officecli set "$OUTPUT" '/slide[3]' --prop transition=morph # Morph scene actors - create card backgrounds officecli set "$OUTPUT" '/slide[3]/shape[1]' --prop preset=roundRect --prop fill=2A4A6F --prop opacity=0.12 --prop width=8cm --prop height=11cm --prop x=2.5cm --prop y=5cm officecli set "$OUTPUT" '/slide[3]/shape[2]' --prop preset=roundRect --prop fill=2A4A6F --prop opacity=0.12 --prop width=8cm --prop height=11cm --prop x=13cm --prop y=5cm officecli set "$OUTPUT" '/slide[3]/shape[3]' --prop x=24cm --prop y=12cm --prop width=0.6cm --prop height=0.6cm officecli set "$OUTPUT" '/slide[3]/shape[4]' --prop x=18cm --prop y=3cm --prop width=0.5cm --prop height=0.5cm officecli set "$OUTPUT" '/slide[3]/shape[5]' --prop x=30cm --prop y=8cm --prop width=0.7cm --prop height=0.7cm officecli set "$OUTPUT" '/slide[3]/shape[6]' --prop x=$OFFSCREEN --prop y=5cm officecli set "$OUTPUT" '/slide[3]/shape[7]' --prop preset=roundRect --prop fill=2A4A6F --prop opacity=0.12 --prop width=8cm --prop height=11cm --prop x=23.5cm --prop y=5cm # Hide previous content, show slide 3 content officecli set "$OUTPUT" '/slide[3]/shape[8]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[3]/shape[9]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[3]/shape[10]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[3]/shape[11]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[3]/shape[12]' --prop x=2.5cm --prop y=2cm officecli set "$OUTPUT" '/slide[3]/shape[13]' --prop x=2.5cm --prop y=5.5cm officecli set "$OUTPUT" '/slide[3]/shape[14]' --prop x=2.5cm --prop y=9cm officecli set "$OUTPUT" '/slide[3]/shape[15]' --prop x=3cm --prop y=11.5cm officecli set "$OUTPUT" '/slide[3]/shape[16]' --prop x=13cm --prop y=5.5cm officecli set "$OUTPUT" '/slide[3]/shape[17]' --prop x=13cm --prop y=9cm officecli set "$OUTPUT" '/slide[3]/shape[18]' --prop x=13.5cm --prop y=11.5cm officecli set "$OUTPUT" '/slide[3]/shape[19]' --prop x=23.5cm --prop y=5.5cm officecli set "$OUTPUT" '/slide[3]/shape[20]' --prop x=23.5cm --prop y=9cm officecli set "$OUTPUT" '/slide[3]/shape[21]' --prop x=24cm --prop y=11.5cm # ============================================ # SLIDE 4 - SHOWCASE # ============================================ echo "Building Slide 4: Showcase..." officecli add "$OUTPUT" '/' --from '/slide[1]' officecli set "$OUTPUT" '/slide[4]' --prop transition=morph # Morph scene actors - moon theme officecli set "$OUTPUT" '/slide[4]/shape[1]' --prop preset=ellipse --prop fill=$ORANGE --prop opacity=0.15 --prop width=14cm --prop height=14cm --prop x=20cm --prop y=6cm officecli set "$OUTPUT" '/slide[4]/shape[2]' --prop preset=ellipse --prop fill=$GOLD --prop opacity=0.05 --prop width=10cm --prop height=10cm --prop x=23cm --prop y=8cm officecli set "$OUTPUT" '/slide[4]/shape[3]' --prop x=2cm --prop y=15cm officecli set "$OUTPUT" '/slide[4]/shape[4]' --prop x=31cm --prop y=3cm officecli set "$OUTPUT" '/slide[4]/shape[5]' --prop x=5cm --prop y=4cm officecli set "$OUTPUT" '/slide[4]/shape[6]' --prop x=$OFFSCREEN --prop y=10cm officecli set "$OUTPUT" '/slide[4]/shape[7]' --prop preset=ellipse --prop fill=$ORANGE --prop opacity=0.4 --prop width=1.2cm --prop height=1.2cm --prop x=2cm --prop y=2cm # Hide previous content, show slide 4 content officecli set "$OUTPUT" '/slide[4]/shape[8]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[9]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[10]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[11]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[12]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[13]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[14]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[15]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[16]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[17]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[18]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[19]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[20]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[21]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[4]/shape[22]' --prop x=2.5cm --prop y=2.5cm officecli set "$OUTPUT" '/slide[4]/shape[23]' --prop x=2.5cm --prop y=6.5cm officecli set "$OUTPUT" '/slide[4]/shape[24]' --prop x=2.5cm --prop y=11cm officecli set "$OUTPUT" '/slide[4]/shape[25]' --prop x=2.5cm --prop y=14.5cm # ============================================ # SLIDE 5 - PILLARS (SPACE STATIONS) # ============================================ echo "Building Slide 5: Space Stations..." officecli add "$OUTPUT" '/' --from '/slide[1]' officecli set "$OUTPUT" '/slide[5]' --prop transition=morph # Morph scene actors - station cards officecli set "$OUTPUT" '/slide[5]/shape[1]' --prop preset=rect --prop fill=$CYAN --prop opacity=0.08 --prop width=9cm --prop height=10cm --prop x=2cm --prop y=5.5cm officecli set "$OUTPUT" '/slide[5]/shape[2]' --prop preset=rect --prop fill=$BLUE --prop opacity=0.08 --prop width=9cm --prop height=10cm --prop x=12.5cm --prop y=5.5cm officecli set "$OUTPUT" '/slide[5]/shape[3]' --prop x=6cm --prop y=3cm officecli set "$OUTPUT" '/slide[5]/shape[4]' --prop x=15cm --prop y=17cm officecli set "$OUTPUT" '/slide[5]/shape[5]' --prop x=25cm --prop y=5cm officecli set "$OUTPUT" '/slide[5]/shape[6]' --prop preset=ellipse --prop fill=$CYAN --prop opacity=0.08 --prop line=none --prop width=8cm --prop height=8cm --prop x=14cm --prop y=6cm officecli set "$OUTPUT" '/slide[5]/shape[7]' --prop preset=rect --prop fill=5865F2 --prop opacity=0.08 --prop width=9cm --prop height=10cm --prop x=23cm --prop y=5.5cm # Hide previous content, show slide 5 content officecli set "$OUTPUT" '/slide[5]/shape[8]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[9]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[10]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[11]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[12]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[13]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[14]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[15]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[16]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[17]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[18]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[19]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[20]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[21]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[22]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[23]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[24]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[25]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[5]/shape[26]' --prop x=2cm --prop y=2.5cm officecli set "$OUTPUT" '/slide[5]/shape[27]' --prop x=2.5cm --prop y=6cm officecli set "$OUTPUT" '/slide[5]/shape[28]' --prop x=2.5cm --prop y=8.5cm officecli set "$OUTPUT" '/slide[5]/shape[29]' --prop x=2.8cm --prop y=10.5cm officecli set "$OUTPUT" '/slide[5]/shape[30]' --prop x=13cm --prop y=6cm officecli set "$OUTPUT" '/slide[5]/shape[31]' --prop x=13cm --prop y=8.5cm officecli set "$OUTPUT" '/slide[5]/shape[32]' --prop x=13.3cm --prop y=10.5cm officecli set "$OUTPUT" '/slide[5]/shape[33]' --prop x=23.5cm --prop y=6cm officecli set "$OUTPUT" '/slide[5]/shape[34]' --prop x=23.5cm --prop y=8.5cm officecli set "$OUTPUT" '/slide[5]/shape[35]' --prop x=23.8cm --prop y=10.5cm # ============================================ # SLIDE 6 - EVIDENCE (MARS) # ============================================ echo "Building Slide 6: Mars Dream..." officecli add "$OUTPUT" '/' --from '/slide[1]' officecli set "$OUTPUT" '/slide[6]' --prop transition=morph # Morph scene actors - Mars theme officecli set "$OUTPUT" '/slide[6]/shape[1]' --prop preset=ellipse --prop fill=$RED --prop opacity=0.5 --prop width=18cm --prop height=18cm --prop x=18cm --prop y=2cm officecli set "$OUTPUT" '/slide[6]/shape[2]' --prop preset=ellipse --prop fill=$MARS_RED --prop opacity=0.2 --prop width=12cm --prop height=12cm --prop x=21cm --prop y=5cm officecli set "$OUTPUT" '/slide[6]/shape[3]' --prop fill=FFB74D --prop x=4cm --prop y=3cm --prop width=0.5cm --prop height=0.5cm officecli set "$OUTPUT" '/slide[6]/shape[4]' --prop fill=$WHITE --prop x=8cm --prop y=16cm --prop width=0.4cm --prop height=0.4cm officecli set "$OUTPUT" '/slide[6]/shape[5]' --prop fill=FF6B35 --prop x=12cm --prop y=2cm --prop width=0.6cm --prop height=0.6cm officecli set "$OUTPUT" '/slide[6]/shape[6]' --prop x=$OFFSCREEN --prop y=10cm officecli set "$OUTPUT" '/slide[6]/shape[7]' --prop preset=ellipse --prop fill=$MARS_ORANGE --prop opacity=0.15 --prop width=3cm --prop height=3cm --prop x=2cm --prop y=15cm # Hide all previous content, show slide 6 content officecli set "$OUTPUT" '/slide[6]/shape[8]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[9]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[10]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[11]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[12]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[13]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[14]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[15]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[16]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[17]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[18]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[19]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[20]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[21]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[22]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[23]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[24]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[25]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[26]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[27]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[28]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[29]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[30]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[31]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[32]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[33]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[34]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[35]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[6]/shape[36]' --prop x=2cm --prop y=2.5cm officecli set "$OUTPUT" '/slide[6]/shape[37]' --prop x=2cm --prop y=6cm officecli set "$OUTPUT" '/slide[6]/shape[38]' --prop x=2cm --prop y=9.5cm officecli set "$OUTPUT" '/slide[6]/shape[39]' --prop x=2cm --prop y=11cm officecli set "$OUTPUT" '/slide[6]/shape[40]' --prop x=2cm --prop y=13.5cm officecli set "$OUTPUT" '/slide[6]/shape[41]' --prop x=21cm --prop y=8cm officecli set "$OUTPUT" '/slide[6]/shape[42]' --prop x=21cm --prop y=10.5cm # ============================================ # SLIDE 7 - CTA # ============================================ echo "Building Slide 7: CTA..." officecli add "$OUTPUT" '/' --from '/slide[1]' officecli set "$OUTPUT" '/slide[7]' --prop transition=morph # Morph scene actors - journey continues officecli set "$OUTPUT" '/slide[7]/shape[1]' --prop preset=ellipse --prop fill=$PLANET --prop opacity=0.2 --prop width=16cm --prop height=16cm --prop x=10cm --prop y=3cm officecli set "$OUTPUT" '/slide[7]/shape[2]' --prop preset=ellipse --prop fill=$PURPLE --prop opacity=0.12 --prop width=20cm --prop height=20cm --prop x=8cm --prop y=1cm officecli set "$OUTPUT" '/slide[7]/shape[3]' --prop x=30cm --prop y=2cm --prop width=0.9cm --prop height=0.9cm officecli set "$OUTPUT" '/slide[7]/shape[4]' --prop x=3cm --prop y=5cm --prop width=0.7cm --prop height=0.7cm officecli set "$OUTPUT" '/slide[7]/shape[5]' --prop x=26cm --prop y=16cm --prop width=0.8cm --prop height=0.8cm officecli set "$OUTPUT" '/slide[7]/shape[6]' --prop preset=ellipse --prop fill=$PURPLE_DARK --prop opacity=0.08 --prop line=none --prop width=24cm --prop height=24cm --prop x=6cm --prop y=0cm officecli set "$OUTPUT" '/slide[7]/shape[7]' --prop preset=ellipse --prop fill=$LIGHT_BLUE --prop opacity=0.7 --prop width=0.5cm --prop height=0.5cm --prop x=16cm --prop y=9cm # Hide all content except final message officecli set "$OUTPUT" '/slide[7]/shape[8]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[9]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[10]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[11]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[12]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[13]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[14]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[15]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[16]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[17]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[18]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[19]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[20]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[21]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[22]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[23]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[24]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[25]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[26]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[27]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[28]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[29]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[30]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[31]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[32]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[33]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[34]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[35]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[36]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[37]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[38]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[39]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[40]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[41]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[42]' --prop x=$OFFSCREEN officecli set "$OUTPUT" '/slide[7]/shape[43]' --prop x=4cm --prop y=5.5cm officecli set "$OUTPUT" '/slide[7]/shape[44]' --prop x=4cm --prop y=10cm # ============================================ # VALIDATE & COMPLETE # ============================================ echo "Validating..." python3 "$(dirname "$0")/../../morph-helpers.py" final-check "$OUTPUT" echo "✅ Build complete: $OUTPUT"