anchor.diff:        ),
       );
     }
  -
  -  void onLogoTapped() {
  -    if (_isExtended) {
  -      _controller.animateTo(0.5, curve: standardEasing);
  -    } else {
  -      _controller.animateTo(1, curve: standardEasing);
  -    }
  -  }
   }
   
   class _NavigationRailHeader extends StatelessWidget {
     const _NavigationRailHeader({
       @required this.extended,
  -    @required this.animation,
  -    @required this.onLogoTapped,
  -  })  : assert(extended != null),
  -        assert(animation != null),
  -        assert(onLogoTapped != null);
  -
  -  final bool extended;
  -  final Animation<double> animation;
  -  final VoidCallback onLogoTapped;
  +  }) : assert(extended != null);
  +
  +  final ValueNotifier<bool> extended;
   
     @override
     Widget build(BuildContext context) {
       final textTheme = Theme.of(context).textTheme;
  -
  -    return Column(
  -      crossAxisAlignment: CrossAxisAlignment.start,
  -      children: [
  -        SizedBox(
  -          height: 56,
  -          child: Row(
  +    final animation = NavigationRail.extendedAnimation(context);
  +
  +    return AnimatedBuilder(
  +      animation: animation,
  +      builder: (context, child) {
  +        return Align(
  +          alignment: AlignmentDirectional.centerStart,
  +          widthFactor: animation.value,
  +          child: Column(
  +            crossAxisAlignment: CrossAxisAlignment.start,
               children: [
  -              const SizedBox(width: 12),
                 SizedBox(
  -                width: extended ? 120 : 58,
  -                child: InkWell(
  -                  borderRadius: const BorderRadius.all(
  -                    Radius.circular(16),
  -                  ),
  -                  child: Row(
  -                    children: [
  -                      RotationTransition(
  -                        turns: Tween(
  -                          begin: extended ? 0.0 : 0.5,
  -                          end: 1.0,
  -                        ).animate(animation),
  -                        child: const Icon(
  -                          Icons.arrow_left,
  -                          color: ReplyColors.white50,
  -                          size: 16,
  +                height: 56,
  +                child: Row(
  +                  children: [
  +                    const SizedBox(width: 6),
  +                    InkWell(
  +                      borderRadius: const BorderRadius.all(Radius.circular(16)),
  +                      child: Row(
  +                        children: [
  +                          Transform.rotate(
  +                            angle: animation.value * math.pi,
  +                            child: const Icon(
  +                              Icons.arrow_left,
  +                              color: ReplyColors.white50,
  +                              size: 16,
  +                            ),
  +                          ),
  +                          const _ReplyLogo(),
  +                          const SizedBox(width: 10),
  +                          Align(
  +                            alignment: AlignmentDirectional.centerStart,
  +                            widthFactor: animation.value,
  +                            child: Opacity(
  +                              opacity: animation.value,
  +                              child: Text(
  +                                'REPLY',
  +                                style: textTheme.bodyText1.copyWith(
  +                                  color: ReplyColors.white50,
  +                                ),
  +                              ),
  +                            ),
  +                          ),
  +                          SizedBox(width: 18 * animation.value),
  +                        ],
  +                      ),
  +                      onTap: () {
  +                        extended.value = !extended.value;
  +                      },
  +                    ),
  +                    if (animation.value > 0)
  +                      Opacity(
  +                        opacity: animation.value,
  +                        child: Row(
  +                          children: const [
  +                            SizedBox(width: 18),
  +                            ProfileAvatar(
  +                              avatar: 'reply/avatars/avatar_2.jpg',
  +                              radius: 16,
  +                            ),
  +                            SizedBox(width: 12),
  +                            Icon(
  +                              Icons.settings,
  +                              color: ReplyColors.white50,
  +                            ),
  +                          ],
                           ),
                         ),
  -                      const _ReplyLogo(),
  -                      const SizedBox(width: 10),
  -                      if (extended)
  -                        Text(
  -                          'REPLY',
  -                          style: textTheme.bodyText1.copyWith(
  -                            color: ReplyColors.white50,
  -                          ),
  -                        ),
  -                    ],
  -                  ),
  -                  onTap: onLogoTapped,
  +                  ],
                   ),
                 ),
  -              if (extended)
  -                SizedBox(
  -                  width: 128,
  -                  child: Row(
  -                    children: const [
  -                      SizedBox(width: 36),
  -                      ProfileAvatar(
  -                        avatar: 'reply/avatars/avatar_2.jpg',
  -                        radius: 16,
  -                      ),
  -                      SizedBox(width: 12),
  -                      Icon(
  -                        Icons.settings,
  -                        color: ReplyColors.white50,
  -                      ),
  -                    ],
  -                  ),
  +              const SizedBox(height: 20),
  +              Padding(
  +                padding: const EdgeInsetsDirectional.only(
  +                  start: 8,
                   ),
  +                child: _ReplyFab(extended: extended.value),
  +              ),
  +              const SizedBox(height: 8),
               ],
             ),
  -        ),
  -        const SizedBox(height: 20),
  -        Padding(
  -          padding: const EdgeInsetsDirectional.only(
  -            start: 12,
  -            end: 16,
  -          ),
  -          child: _ReplyFab(extended: extended),
  -        ),
  -        const SizedBox(height: 8),
  -      ],
  +        );
  +      },
       );
     }
   }
  
positive.code:                       minHeight: constraints.maxHeight,
                      ),
                      child: IntrinsicHeight(
                        child: NavigationRail(
                          destinations: [
                            for (var destination in widget.destinations)
                              NavigationRailDestination(
                                icon: Material(
                                  color: Colors.transparent,
                                  child: ImageIcon(
                                    AssetImage(
                                      destination.icon,
                                      package: _assetsPackage,
                                    ),
                                  ),
                                ),
                                label: Text(destination.name),
                              ),
                          ],
                          extended: _isExtended,
                          labelType: NavigationRailLabelType.none,
                          leading: _NavigationRailHeader(
                            extended: _isExtended,
                            animation: _curve,
                            onLogoTapped: onLogoTapped,
                          ),
                          trailing: Visibility(
                            visible: _isExtended,
                            maintainState: true,
                            maintainAnimation: true,
                            child: AnimatedOpacity(
                              duration: _kAnimationDuration,
                              opacity: _isExtended ? 1 : 0,
                              child: _NavigationRailFolderSection(
                                folders: widget.folders,
                              ),
                            ),
                          ),
                          selectedIndex: widget.selectedIndex,
                          onDestinationSelected: (index) {
                            widget.onItemTapped(
                              index,
                              widget.destinations[index].name,
                            );
                          },
                        ),
  
negative.code:       return _DesktopNav(
          selectedIndex: _selectedIndex,
          currentInbox: _currentInbox,
          extended: !isTablet,
          destinations: _navigationDestinations,
          folders: _folders,
          onItemTapped: _onDestinationSelected,
  