Private/UI/MainWindow.xaml.ps1

# Copyright (c) 2026 Sandy Zeng. All rights reserved.
# Source-available. All rights reserved. See LICENSE file.

<#
    MainWindow.xaml.ps1 — Defines the main WPF window XAML (styles, templates, layout) as a here-string.
 
    Author: Sandy Zeng
    Project: IntuneDiff
 
    Version History:
    1.0.0 Initial release.
    1.0.1 Release Notes overlay, update banner, selectable grid cells.
    1.0.2 ListView item borders use DynamicResource BorderColor for theme support.
#>


$script:MainWindowXaml = @'
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="IntuneDiff" Height="820" Width="1480"
        WindowStartupLocation="CenterScreen"
        Background="{DynamicResource PageBg}">
  <Window.Resources>
    <!-- Theme color resources (light mode defaults) -->
    <SolidColorBrush x:Key="PageBg" Color="#F3F4F6"/>
    <SolidColorBrush x:Key="CardBg" Color="#FFFFFF"/>
    <SolidColorBrush x:Key="HeaderBg" Color="#FFFFFF"/>
    <SolidColorBrush x:Key="TextPrimary" Color="#111827"/>
    <SolidColorBrush x:Key="TextSecondary" Color="#6B7280"/>
    <SolidColorBrush x:Key="TextMuted" Color="#9CA3AF"/>
    <SolidColorBrush x:Key="BorderColor" Color="#E5E7EB"/>
    <SolidColorBrush x:Key="InputBg" Color="#FFFFFF"/>
    <SolidColorBrush x:Key="BtnDefaultBg" Color="#E5E7EB"/>
    <SolidColorBrush x:Key="BtnDefaultHover" Color="#D1D5DB"/>
    <SolidColorBrush x:Key="BtnDefaultPressed" Color="#9CA3AF"/>
    <SolidColorBrush x:Key="BtnDefaultFg" Color="#111827"/>
    <SolidColorBrush x:Key="ChipActiveBg" Color="#111827"/>
    <SolidColorBrush x:Key="ChipActiveFg" Color="#FFFFFF"/>
    <SolidColorBrush x:Key="ChipInactiveBg" Color="#E5E7EB"/>
    <SolidColorBrush x:Key="ChipInactiveFg" Color="#374151"/>
    <SolidColorBrush x:Key="ChipHover" Color="#D1D5DB"/>
    <SolidColorBrush x:Key="GridHeaderBg" Color="#F3F4F6"/>
    <SolidColorBrush x:Key="GridHeaderFg" Color="#374151"/>
    <SolidColorBrush x:Key="GridRowBg" Color="#FFFFFF"/>
    <SolidColorBrush x:Key="GridAltRowBg" Color="#F9FAFB"/>
    <SolidColorBrush x:Key="GridSelectedBg" Color="#EFF6FF"/>
    <SolidColorBrush x:Key="ListSelectedBg" Color="#DBEAFE"/>
    <SolidColorBrush x:Key="ListSelectedBorder" Color="#3B82F6"/>
    <SolidColorBrush x:Key="BadgeTypeBg" Color="#EFF6FF"/>
    <SolidColorBrush x:Key="BadgeTypeFg" Color="#1E40AF"/>
    <SolidColorBrush x:Key="BadgeAssignedBg" Color="#F0FDF4"/>
    <SolidColorBrush x:Key="BadgeAssignedFg" Color="#166534"/>
    <SolidColorBrush x:Key="RowCoveredBg" Color="#F0FDF4"/>
    <SolidColorBrush x:Key="RowConflictBg" Color="#FFFBEB"/>
    <SolidColorBrush x:Key="RowMissingBg" Color="#FEF2F2"/>
    <SolidColorBrush x:Key="RowExtraBg" Color="#EFF6FF"/>
    <SolidColorBrush x:Key="RowErrorBg" Color="#FEF2F2"/>
    <SolidColorBrush x:Key="CellCoveredBg" Color="#DCFCE7"/>
    <SolidColorBrush x:Key="CellConflictBg" Color="#FEF3C7"/>
    <SolidColorBrush x:Key="CellMissingBg" Color="#FEE2E2"/>
    <SolidColorBrush x:Key="CellExtraBg" Color="#DBEAFE"/>
    <SolidColorBrush x:Key="CellAttentionBg" Color="#F3E8FF"/>
    <SolidColorBrush x:Key="StatusCoveredFg" Color="#166534"/>
    <SolidColorBrush x:Key="StatusConflictFg" Color="#92400E"/>
    <SolidColorBrush x:Key="StatusMissingFg" Color="#991B1B"/>
    <SolidColorBrush x:Key="StatusExtraFg" Color="#1E40AF"/>
    <SolidColorBrush x:Key="StatusAttentionFg" Color="#6B21A8"/>
    <SolidColorBrush x:Key="AccentColor" Color="#3498DB"/>
    <SolidColorBrush x:Key="AccentHover" Color="#2E86C1"/>
    <SolidColorBrush x:Key="AccentPressed" Color="#2471A3"/>
    <SolidColorBrush x:Key="ShadowColor" Color="#10000000"/>
    <!-- Modern button style matching v2 -->
    <Style TargetType="Button">
      <Setter Property="Padding" Value="12,8"/>
      <Setter Property="Margin" Value="4"/>
      <Setter Property="MinWidth" Value="90"/>
      <Setter Property="FontSize" Value="13"/>
      <Setter Property="FontWeight" Value="Medium"/>
      <Setter Property="Background" Value="{DynamicResource BtnDefaultBg}"/>
      <Setter Property="Foreground" Value="{DynamicResource BtnDefaultFg}"/>
      <Setter Property="BorderThickness" Value="0"/>
      <Setter Property="Cursor" Value="Hand"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="Button">
            <Border x:Name="bd" CornerRadius="8" Background="{TemplateBinding Background}"
                    BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}"
                    Padding="{TemplateBinding Padding}">
              <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Border>
            <ControlTemplate.Triggers>
              <Trigger Property="IsMouseOver" Value="True">
                <Setter TargetName="bd" Property="Background" Value="{DynamicResource BtnDefaultHover}"/>
              </Trigger>
              <Trigger Property="IsPressed" Value="True">
                <Setter TargetName="bd" Property="Background" Value="{DynamicResource BtnDefaultPressed}"/>
              </Trigger>
              <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Opacity" Value="0.5"/>
              </Trigger>
            </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
 
    <!-- Primary button style -->
    <Style TargetType="Button" x:Key="PrimaryButton" BasedOn="{StaticResource {x:Type Button}}">
      <Setter Property="Background" Value="{DynamicResource AccentColor}"/>
      <Setter Property="Foreground" Value="White"/>
      <Setter Property="FontWeight" Value="SemiBold"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="Button">
            <Border x:Name="bd" CornerRadius="8" Background="{TemplateBinding Background}"
                    Padding="{TemplateBinding Padding}">
              <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Border>
            <ControlTemplate.Triggers>
              <Trigger Property="IsMouseOver" Value="True">
                <Setter TargetName="bd" Property="Background" Value="{DynamicResource AccentHover}"/>
              </Trigger>
              <Trigger Property="IsPressed" Value="True">
                <Setter TargetName="bd" Property="Background" Value="{DynamicResource AccentPressed}"/>
              </Trigger>
              <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Opacity" Value="0.5"/>
              </Trigger>
            </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
    <Style TargetType="Button" x:Key="DangerButton" BasedOn="{StaticResource PrimaryButton}">
      <Setter Property="Background" Value="#DC2626"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="Button">
            <Border x:Name="bd" CornerRadius="8" Background="{TemplateBinding Background}"
                    Padding="{TemplateBinding Padding}">
              <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Border>
            <ControlTemplate.Triggers>
              <Trigger Property="IsMouseOver" Value="True">
                <Setter TargetName="bd" Property="Background" Value="#B91C1C"/>
              </Trigger>
              <Trigger Property="IsPressed" Value="True">
                <Setter TargetName="bd" Property="Background" Value="#991B1B"/>
              </Trigger>
              <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Opacity" Value="0.5"/>
              </Trigger>
            </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
 
    <Style TargetType="TextBlock" x:Key="H1">
      <Setter Property="FontSize" Value="20"/>
      <Setter Property="FontWeight" Value="Bold"/>
      <Setter Property="Foreground" Value="{DynamicResource TextPrimary}"/>
    </Style>
 
    <!-- Modern DataGrid -->
    <Style TargetType="DataGrid">
      <Setter Property="AutoGenerateColumns" Value="False"/>
      <Setter Property="CanUserAddRows" Value="False"/>
      <Setter Property="CanUserDeleteRows" Value="False"/>
      <Setter Property="IsReadOnly" Value="True"/>
      <Setter Property="SelectionUnit" Value="CellOrRowHeader"/>
      <Setter Property="ClipboardCopyMode" Value="IncludeHeader"/>
      <Setter Property="GridLinesVisibility" Value="Horizontal"/>
      <Setter Property="HorizontalGridLinesBrush" Value="{DynamicResource BorderColor}"/>
      <Setter Property="HeadersVisibility" Value="Column"/>
      <Setter Property="Background" Value="{DynamicResource CardBg}"/>
      <Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
      <Setter Property="BorderThickness" Value="1"/>
      <Setter Property="RowBackground" Value="{DynamicResource GridRowBg}"/>
      <Setter Property="AlternatingRowBackground" Value="{DynamicResource GridAltRowBg}"/>
      <Setter Property="EnableRowVirtualization" Value="True"/>
      <Setter Property="EnableColumnVirtualization" Value="True"/>
      <Setter Property="VirtualizingPanel.IsVirtualizing" Value="True"/>
      <Setter Property="VirtualizingPanel.VirtualizationMode" Value="Recycling"/>
      <Setter Property="ScrollViewer.CanContentScroll" Value="True"/>
    </Style>
 
    <!-- DataGrid column header -->
    <Style TargetType="DataGridColumnHeader">
      <Setter Property="Background" Value="{DynamicResource GridHeaderBg}"/>
      <Setter Property="Foreground" Value="{DynamicResource GridHeaderFg}"/>
      <Setter Property="FontWeight" Value="SemiBold"/>
      <Setter Property="FontSize" Value="12"/>
      <Setter Property="Padding" Value="12,10"/>
      <Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
      <Setter Property="BorderThickness" Value="0,0,1,1"/>
    </Style>
 
    <!-- DataGrid cell -->
    <Style TargetType="DataGridCell">
      <Setter Property="Padding" Value="12,8"/>
      <Setter Property="BorderThickness" Value="0"/>
      <Setter Property="FontSize" Value="13"/>
      <Setter Property="Foreground" Value="{DynamicResource TextPrimary}"/>
      <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
          <Setter Property="Background" Value="{DynamicResource GridSelectedBg}"/>
          <Setter Property="Foreground" Value="{DynamicResource TextPrimary}"/>
        </Trigger>
      </Style.Triggers>
    </Style>
 
    <!-- Summary card style -->
    <Style TargetType="Border" x:Key="SummaryCard">
      <Setter Property="CornerRadius" Value="8"/>
      <Setter Property="BorderThickness" Value="0"/>
      <Setter Property="Padding" Value="16,12"/>
      <Setter Property="Margin" Value="0,0,8,0"/>
      <Setter Property="MinWidth" Value="100"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="SummaryCount">
      <Setter Property="FontSize" Value="24"/>
      <Setter Property="FontWeight" Value="Bold"/>
      <Setter Property="HorizontalAlignment" Value="Center"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="SummaryLabel">
      <Setter Property="FontSize" Value="11"/>
      <Setter Property="Foreground" Value="#6B7280"/>
      <Setter Property="HorizontalAlignment" Value="Center"/>
      <Setter Property="Margin" Value="0,4,0,0"/>
    </Style>
 
    <!-- Popup menu button style (left-aligned, no chrome) -->
    <Style TargetType="Button" x:Key="PopupMenuButton">
      <Setter Property="Background" Value="Transparent"/>
      <Setter Property="Cursor" Value="Hand"/>
      <Setter Property="Padding" Value="8,8"/>
      <Setter Property="HorizontalAlignment" Value="Stretch"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="Button">
            <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" CornerRadius="6">
              <ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Center"/>
            </Border>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
 
    <!-- Filter chip style (ToggleButton) - v2 style -->
    <Style TargetType="ToggleButton" x:Key="FilterChip">
      <Setter Property="Padding" Value="12,6"/>
      <Setter Property="Margin" Value="0,0,6,4"/>
      <Setter Property="MinWidth" Value="0"/>
      <Setter Property="FontSize" Value="12"/>
      <Setter Property="FontWeight" Value="Medium"/>
      <Setter Property="BorderThickness" Value="0"/>
      <Setter Property="Background" Value="{DynamicResource ChipInactiveBg}"/>
      <Setter Property="Foreground" Value="{DynamicResource ChipInactiveFg}"/>
      <Setter Property="Cursor" Value="Hand"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="ToggleButton">
            <Border x:Name="bd" CornerRadius="8" BorderThickness="0"
                    Background="{TemplateBinding Background}"
                    Padding="{TemplateBinding Padding}">
              <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Border>
            <ControlTemplate.Triggers>
              <Trigger Property="IsChecked" Value="True">
                <Setter TargetName="bd" Property="Background" Value="{DynamicResource ChipActiveBg}"/>
                <Setter Property="Foreground" Value="{DynamicResource ChipActiveFg}"/>
              </Trigger>
              <Trigger Property="IsMouseOver" Value="True">
                <Setter TargetName="bd" Property="Background" Value="{DynamicResource ChipHover}"/>
              </Trigger>
              <MultiTrigger>
                <MultiTrigger.Conditions>
                  <Condition Property="IsChecked" Value="True"/>
                  <Condition Property="IsMouseOver" Value="True"/>
                </MultiTrigger.Conditions>
                <Setter TargetName="bd" Property="Background" Value="#374151"/>
                <Setter Property="Foreground" Value="White"/>
              </MultiTrigger>
            </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
 
    <!-- Modern TextBox style -->
    <Style TargetType="TextBox">
      <Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
      <Setter Property="BorderThickness" Value="1"/>
      <Setter Property="Padding" Value="12,8"/>
      <Setter Property="FontSize" Value="13"/>
      <Setter Property="Background" Value="{DynamicResource InputBg}"/>
      <Setter Property="Foreground" Value="{DynamicResource TextPrimary}"/>
      <Setter Property="CaretBrush" Value="{DynamicResource TextPrimary}"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="TextBox">
            <Border x:Name="bd" CornerRadius="8" Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"
                    Padding="{TemplateBinding Padding}">
              <Grid>
                <Grid.ColumnDefinitions>
                  <ColumnDefinition Width="Auto"/>
                  <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <TextBlock x:Name="searchIcon" Grid.Column="0" Text="&#x1F50D;" FontSize="13" Foreground="#9CA3AF"
                           VerticalAlignment="Center" Margin="0,0,8,0">
                  <TextBlock.Style>
                    <Style TargetType="TextBlock">
                      <Setter Property="Visibility" Value="Visible"/>
                      <Style.Triggers>
                        <DataTrigger Binding="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}" Value="{x:Null}">
                          <Setter Property="Visibility" Value="Collapsed"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}" Value="">
                          <Setter Property="Visibility" Value="Collapsed"/>
                        </DataTrigger>
                      </Style.Triggers>
                    </Style>
                  </TextBlock.Style>
                </TextBlock>
                <ScrollViewer x:Name="PART_ContentHost" Grid.Column="1"/>
                <TextBlock x:Name="placeholder" Grid.Column="1" Text="{TemplateBinding Tag}" Foreground="#9CA3AF"
                           VerticalAlignment="Center" IsHitTestVisible="False"
                           Visibility="Collapsed"/>
              </Grid>
            </Border>
            <ControlTemplate.Triggers>
              <Trigger Property="IsFocused" Value="True">
                <Setter TargetName="bd" Property="BorderBrush" Value="#3498DB"/>
                <Setter TargetName="bd" Property="BorderThickness" Value="2"/>
              </Trigger>
              <MultiTrigger>
                <MultiTrigger.Conditions>
                  <Condition Property="Text" Value=""/>
                  <Condition Property="IsFocused" Value="False"/>
                </MultiTrigger.Conditions>
                <Setter TargetName="placeholder" Property="Visibility" Value="Visible"/>
              </MultiTrigger>
              <Trigger Property="Tag" Value="{x:Null}">
                <Setter TargetName="placeholder" Property="Visibility" Value="Collapsed"/>
              </Trigger>
            </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
 
    <!-- Modern ComboBox style -->
    <Style TargetType="ComboBox">
      <Setter Property="Background" Value="{DynamicResource InputBg}"/>
      <Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
      <Setter Property="BorderThickness" Value="1"/>
      <Setter Property="Padding" Value="12,10"/>
      <Setter Property="FontSize" Value="13"/>
      <Setter Property="Foreground" Value="{DynamicResource TextPrimary}"/>
    </Style>
 
    <!-- Modern ListView style -->
    <Style TargetType="ListView">
      <Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
      <Setter Property="BorderThickness" Value="1"/>
      <Setter Property="Background" Value="{DynamicResource CardBg}"/>
      <Setter Property="Foreground" Value="{DynamicResource TextPrimary}"/>
    </Style>
    <Style TargetType="ListViewItem">
      <Setter Property="Foreground" Value="{DynamicResource TextPrimary}"/>
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
      <Setter Property="Padding" Value="4,2"/>
      <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
          <Setter Property="Background" Value="{DynamicResource ListSelectedBg}"/>
          <Setter Property="BorderBrush" Value="{DynamicResource ListSelectedBorder}"/>
        </Trigger>
      </Style.Triggers>
    </Style>
 
    <!-- TabControl style -->
    <Style TargetType="TabControl">
      <Setter Property="Background" Value="Transparent"/>
      <Setter Property="BorderThickness" Value="0"/>
      <Setter Property="Padding" Value="0,12,0,0"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="TabControl">
            <Grid>
              <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
              </Grid.RowDefinitions>
              <!-- Tab header bar with background and bottom border -->
              <Border Grid.Row="0" Background="{DynamicResource CardBg}" CornerRadius="12" Padding="8,6" Margin="0,0,0,12">
                <Border.Effect><DropShadowEffect ShadowDepth="1" Opacity="0.04" BlurRadius="6" Direction="270"/></Border.Effect>
                <TabPanel IsItemsHost="True"/>
              </Border>
              <!-- Tab content -->
              <ContentPresenter Grid.Row="1" ContentSource="SelectedContent"/>
            </Grid>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
    <Style TargetType="TabItem">
      <Setter Property="Padding" Value="16,8"/>
      <Setter Property="FontSize" Value="13"/>
      <Setter Property="FontWeight" Value="Medium"/>
      <Setter Property="Foreground" Value="#6B7280"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="TabItem">
            <Grid>
              <Border x:Name="bd" CornerRadius="8" Padding="{TemplateBinding Padding}" Margin="0,0,4,0"
                      Background="Transparent" Cursor="Hand" TextElement.Foreground="{TemplateBinding Foreground}">
                <ContentPresenter ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center"/>
              </Border>
            </Grid>
            <ControlTemplate.Triggers>
              <Trigger Property="IsSelected" Value="True">
                <Setter TargetName="bd" Property="Background" Value="#111827"/>
                <Setter TargetName="bd" Property="TextElement.Foreground" Value="White"/>
              </Trigger>
              <MultiTrigger>
                <MultiTrigger.Conditions>
                  <Condition Property="IsSelected" Value="False"/>
                  <Condition Property="IsMouseOver" Value="True"/>
                </MultiTrigger.Conditions>
                <Setter TargetName="bd" Property="Background" Value="#F3F4F6"/>
                <Setter TargetName="bd" Property="TextElement.Foreground" Value="#111827"/>
              </MultiTrigger>
            </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
 
    <!-- Result badge style -->
    <Style TargetType="Border" x:Key="ResultBadge">
      <Setter Property="CornerRadius" Value="12"/>
      <Setter Property="Padding" Value="10,4"/>
      <Setter Property="HorizontalAlignment" Value="Left"/>
      <Setter Property="VerticalAlignment" Value="Center"/>
      <Setter Property="Background" Value="#E5E7EB"/>
      <Style.Triggers>
        <DataTrigger Binding="{Binding Result}" Value="covered">
          <Setter Property="Background" Value="#DCFCE7"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Result}" Value="conflict">
          <Setter Property="Background" Value="#FEF3C7"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Result}" Value="missing">
          <Setter Property="Background" Value="#FEE2E2"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Result}" Value="extra">
          <Setter Property="Background" Value="#DBEAFE"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Result}" Value="attention">
          <Setter Property="Background" Value="#F3E8FF"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
    <Style TargetType="TextBlock" x:Key="ResultBadgeText">
      <Setter Property="FontSize" Value="11"/>
      <Setter Property="FontWeight" Value="SemiBold"/>
      <Setter Property="Foreground" Value="#374151"/>
      <Style.Triggers>
        <DataTrigger Binding="{Binding Result}" Value="covered">
          <Setter Property="Foreground" Value="#166534"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Result}" Value="conflict">
          <Setter Property="Foreground" Value="#92400E"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Result}" Value="missing">
          <Setter Property="Foreground" Value="#991B1B"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Result}" Value="extra">
          <Setter Property="Foreground" Value="#1E40AF"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Result}" Value="attention">
          <Setter Property="Foreground" Value="#6B21A8"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
 
    <Style TargetType="Border" x:Key="StatusBadge">
      <Setter Property="CornerRadius" Value="12"/>
      <Setter Property="Padding" Value="10,4"/>
      <Setter Property="HorizontalAlignment" Value="Left"/>
      <Setter Property="VerticalAlignment" Value="Center"/>
      <Setter Property="Background" Value="#E5E7EB"/>
      <Style.Triggers>
        <DataTrigger Binding="{Binding Status}" Value="Succeeded">
          <Setter Property="Background" Value="#DCFCE7"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Status}" Value="Conflict">
          <Setter Property="Background" Value="#FEF3C7"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Status}" Value="Error">
          <Setter Property="Background" Value="#FEE2E2"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Status}" Value="Not applicable">
          <Setter Property="Background" Value="#F3F4F6"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
    <Style TargetType="TextBlock" x:Key="StatusBadgeText">
      <Setter Property="FontSize" Value="11"/>
      <Setter Property="FontWeight" Value="SemiBold"/>
      <Setter Property="Foreground" Value="#374151"/>
      <Style.Triggers>
        <DataTrigger Binding="{Binding Status}" Value="Succeeded">
          <Setter Property="Foreground" Value="#166534"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Status}" Value="Conflict">
          <Setter Property="Foreground" Value="#92400E"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Status}" Value="Error">
          <Setter Property="Foreground" Value="#991B1B"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Status}" Value="Not applicable">
          <Setter Property="Foreground" Value="#6B7280"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
 
    <!-- Value cell style: green when row is covered, red when missing, etc. -->
    <Style TargetType="TextBlock" x:Key="ValueCell">
      <Setter Property="Padding" Value="6,2"/>
      <Setter Property="VerticalAlignment" Value="Center"/>
      <Setter Property="TextWrapping" Value="Wrap"/>
    </Style>
 
    <!-- Selectable read-only cell (allows text highlight + copy) -->
    <Style x:Key="SelectableCell" TargetType="TextBox">
      <Setter Property="IsReadOnly" Value="True"/>
      <Setter Property="Background" Value="Transparent"/>
      <Setter Property="BorderThickness" Value="0"/>
      <Setter Property="Padding" Value="6,2"/>
      <Setter Property="IsTabStop" Value="False"/>
      <Setter Property="Foreground" Value="{DynamicResource TextPrimary}"/>
      <Setter Property="VerticalAlignment" Value="Center"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="TextBox">
            <ScrollViewer x:Name="PART_ContentHost" Background="Transparent"/>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
    <Style x:Key="SelectableCellWrapped" BasedOn="{StaticResource SelectableCell}" TargetType="TextBox">
      <Setter Property="TextWrapping" Value="Wrap"/>
    </Style>
  </Window.Resources>
 
  <DockPanel>
    <!-- Header -->
    <Border DockPanel.Dock="Top" Background="{DynamicResource HeaderBg}" Padding="20,14" BorderBrush="{DynamicResource BorderColor}" BorderThickness="0,0,0,1">
      <Border.Effect><DropShadowEffect ShadowDepth="1" Opacity="0.05" BlurRadius="4" Direction="270"/></Border.Effect>
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*"/>
          <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <StackPanel Orientation="Horizontal" Grid.Column="0">
          <Image x:Name="HeaderLogoImage" Width="40" Height="40" Margin="0,0,10,0" VerticalAlignment="Center"/>
          <TextBlock Style="{StaticResource H1}" Text="IntuneDiff" VerticalAlignment="Center"/>
          <TextBlock VerticalAlignment="Center" Margin="12,0,0,0" Foreground="{DynamicResource TextSecondary}" FontSize="12" Text="PowerShell Edition"/>
          <TextBlock x:Name="VersionLabel" VerticalAlignment="Center" Margin="8,0,0,0" Foreground="{DynamicResource TextSecondary}" FontSize="11" Text=""/>
        </StackPanel>
        <StackPanel Orientation="Horizontal" Grid.Column="1">
          <TextBlock x:Name="TenantLabel" VerticalAlignment="Center" Margin="0,0,12,0" Foreground="#3498DB" FontWeight="SemiBold" FontSize="12" Text="" Visibility="Collapsed"/>
          <Button x:Name="GrantPermissionsButton" Content="&#x26A0; Grant Permissions" Foreground="#F87171" FontWeight="SemiBold" FontSize="12" Margin="0,0,8,0" Visibility="Collapsed" ToolTip="Some required permissions are missing. Click to request consent." UseLayoutRounding="True" SnapsToDevicePixels="True" TextOptions.TextRenderingMode="ClearType" TextOptions.TextFormattingMode="Display"/>
          <ToggleButton x:Name="UserAccountButton" Margin="0,0,8,0" Cursor="Hand" Visibility="Collapsed">
            <ToggleButton.Template>
              <ControlTemplate TargetType="ToggleButton">
                <Border Background="Transparent" Padding="6,4" CornerRadius="4">
                  <ContentPresenter/>
                </Border>
              </ControlTemplate>
            </ToggleButton.Template>
            <StackPanel Orientation="Horizontal">
              <Grid Width="24" Height="24" Margin="0,0,6,0">
                <Ellipse Width="24" Height="24" Fill="#E5E7EB"/>
                <TextBlock x:Name="UserIconFallback" Text="&#xE77B;" FontFamily="Segoe MDL2 Assets" FontSize="14" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{DynamicResource TextSecondary}"/>
                <Ellipse x:Name="UserPhotoClip" Width="24" Height="24">
                  <Ellipse.Fill>
                    <ImageBrush x:Name="UserPhotoBrush" Stretch="UniformToFill"/>
                  </Ellipse.Fill>
                </Ellipse>
              </Grid>
              <TextBlock x:Name="UserLabel" VerticalAlignment="Center" Foreground="{DynamicResource TextSecondary}" Text=""/>
              <TextBlock Text=" &#x25BC;" VerticalAlignment="Center" Foreground="{DynamicResource TextMuted}" FontSize="10"/>
            </StackPanel>
          </ToggleButton>
          <TextBlock x:Name="UserLabelStatic" VerticalAlignment="Center" Margin="0,0,8,0" Foreground="{DynamicResource TextSecondary}" Text="Not signed in"/>
          <Button x:Name="ThemeToggleButton" Content="&#x263E;" ToolTip="Toggle dark mode" Padding="8,6" MinWidth="0" Margin="0,0,8,0" FontSize="16"/>
          <Button x:Name="SignInButton" Content="Sign In"/>
        </StackPanel>
      <Popup x:Name="AccountPopup" PlacementTarget="{Binding ElementName=UserAccountButton}" Placement="Bottom"
             StaysOpen="False" AllowsTransparency="True" IsOpen="{Binding IsChecked, ElementName=UserAccountButton, Mode=TwoWay}">
        <Border Background="{DynamicResource CardBg}" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" CornerRadius="12" Padding="8"
                MinWidth="300" MaxHeight="400">
          <Border.Effect><DropShadowEffect ShadowDepth="4" Opacity="0.1" BlurRadius="16"/></Border.Effect>
          <StackPanel>
            <StackPanel x:Name="AccountListPanel"/>
            <Separator Margin="4,6"/>
            <Button x:Name="NewAccountButton" Style="{StaticResource PopupMenuButton}">
              <StackPanel Orientation="Horizontal">
                <TextBlock Text="&#xE1E0;" FontFamily="Segoe MDL2 Assets" FontSize="18" VerticalAlignment="Center" Foreground="{DynamicResource TextSecondary}" Margin="0,0,10,0"/>
                <TextBlock Text="Sign in with a different account" FontSize="12" VerticalAlignment="Center" Foreground="{DynamicResource TextPrimary}"/>
              </StackPanel>
            </Button>
            <Button x:Name="SignOutButton" Style="{StaticResource PopupMenuButton}">
              <StackPanel Orientation="Horizontal">
                <TextBlock Text="&#xE711;" FontFamily="Segoe MDL2 Assets" FontSize="18" VerticalAlignment="Center" Foreground="#D93025" Margin="0,0,10,0"/>
                <TextBlock Text="Sign out" FontSize="12" VerticalAlignment="Center" Foreground="#D93025"/>
              </StackPanel>
            </Button>
          </StackPanel>
        </Border>
      </Popup>
      </Grid>
    </Border>
 
    <!-- Credits / footer -->
    <Border DockPanel.Dock="Bottom" Background="{DynamicResource HeaderBg}" Padding="16,8" BorderBrush="{DynamicResource BorderColor}" BorderThickness="0,1,0,0">
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*"/>
          <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
          <TextBlock Foreground="{DynamicResource TextSecondary}" Text="&#169; 2026 IntuneDiff &#8212; by " VerticalAlignment="Center"/>
          <TextBlock VerticalAlignment="Center">
            <Hyperlink x:Name="AuthorLink" NavigateUri="https://www.linkedin.com/in/sandy-tsang/" Foreground="#0A66C2" TextDecorations="">
              <InlineUIContainer>
                <Viewbox Width="14" Height="14" Margin="0,0,4,0">
                  <Canvas Width="24" Height="24">
                    <Path Fill="#0A66C2" Data="M19 3A2 2 0 0 1 21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19M18.5 18.5V13.2A3.26 3.26 0 0 0 15.24 9.94C14.39 9.94 13.4 10.46 12.92 11.24V10.13H10.13V18.5H12.92V13.57C12.92 12.8 13.54 12.17 14.31 12.17A1.4 1.4 0 0 1 15.71 13.57V18.5H18.5M6.88 8.56A1.68 1.68 0 0 0 8.56 6.88C8.56 5.95 7.81 5.19 6.88 5.19A1.69 1.69 0 0 0 5.19 6.88C5.19 7.81 5.95 8.56 6.88 8.56M8.27 18.5V10.13H5.5V18.5H8.27Z"/>
                  </Canvas>
                </Viewbox>
              </InlineUIContainer>
              <Run Text="Sandy Zeng" FontWeight="SemiBold"/>
            </Hyperlink>
          </TextBlock>
        </StackPanel>
        <Button x:Name="BuyMeCoffeeButton" Grid.Column="1" Background="Transparent" BorderThickness="0" Padding="0" Margin="0" Cursor="Hand" ToolTip="Buy Me A Coffee">
          <Image x:Name="BuyMeCoffeeImage" Height="28"/>
        </Button>
      </Grid>
    </Border>
 
    <!-- Status bar -->
    <Border DockPanel.Dock="Bottom" Background="{DynamicResource HeaderBg}" Padding="16,8" BorderBrush="{DynamicResource BorderColor}" BorderThickness="0,1,0,0">
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*"/>
          <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <TextBlock x:Name="StatusLabel" Text="Ready." VerticalAlignment="Center" Foreground="{DynamicResource TextSecondary}" FontSize="12"/>
        <ProgressBar x:Name="BusyBar" Grid.Column="1" Width="140" Height="4" IsIndeterminate="False" Visibility="Hidden"
                     Foreground="{DynamicResource AccentColor}" Background="{DynamicResource BorderColor}"/>
      </Grid>
    </Border>
 
    <!-- Update banner (shown when a newer version is available) -->
    <Border x:Name="UpdateBanner" DockPanel.Dock="Top" Background="#92400E" Padding="12,8" Visibility="Collapsed">
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*"/>
          <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <TextBlock x:Name="UpdateBannerText" Foreground="#FEF3C7" FontSize="12" FontWeight="SemiBold" VerticalAlignment="Center" TextWrapping="Wrap"/>
        <Button x:Name="UpdateDismissButton" Grid.Column="1" Content="&#x2715;" Background="Transparent"
                BorderThickness="0" Foreground="#FEF3C7" FontSize="14" Cursor="Hand" Padding="8,0"/>
      </Grid>
    </Border>
 
    <!-- Main content area -->
    <Grid>
      <!-- Welcome / Landing page (shown when not signed in) -->
      <Border x:Name="WelcomeOverlay" Background="{DynamicResource WindowBg}" Visibility="Visible" Panel.ZIndex="10">
        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Margin="40,28" MaxWidth="680">
          <!-- Logo + title row -->
          <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,0,0,10">
            <Image x:Name="WelcomeLogoImage" Width="56" Height="56" Margin="0,0,14,0" VerticalAlignment="Center"/>
            <TextBlock Text="Analyze, Compare, &amp; Secure your Intune." FontSize="24" FontWeight="Bold"
                       Foreground="{DynamicResource TextPrimary}" VerticalAlignment="Center" TextWrapping="Wrap"/>
          </StackPanel>
          <TextBlock Text="A free toolkit for comparing Microsoft Intune policies, analyzing configuration differences, and validating security baselines."
                     FontSize="13" Foreground="{DynamicResource TextSecondary}" TextAlignment="Center" TextWrapping="Wrap" Margin="0,0,0,20"/>
          <!-- Sign in -->
          <Button x:Name="WelcomeSignInButton" Content="Sign In to Get Started" Padding="22,12"
                  Style="{StaticResource PrimaryButton}" HorizontalAlignment="Center" FontSize="15"/>
          <TextBlock Text="Sign in with your Microsoft Entra ID account to access your Intune policies in real-time."
                     FontSize="12" Foreground="{DynamicResource TextSecondary}" TextAlignment="Center" Margin="0,10,0,8"/>
          <Button x:Name="WelcomeReleaseNotesButton" Content="Release Notes" Padding="12,6"
                  HorizontalAlignment="Center" Margin="0,0,0,20" Cursor="Hand"
                  Background="Transparent" BorderThickness="1" BorderBrush="{DynamicResource BorderColor}"
                  Foreground="{DynamicResource TextSecondary}" FontSize="12"/>
          <!-- Feature cards -->
          <Border Background="{DynamicResource CardBg}" CornerRadius="10" Padding="22,16" Margin="0,0,0,12"
                  BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
            <Grid>
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
              </Grid.ColumnDefinitions>
              <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
              </Grid.RowDefinitions>
              <StackPanel Grid.Column="0" Grid.Row="0" Margin="0,0,0,12">
                <TextBlock Text="&#x1F50D; Policy Comparison" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource TextPrimary}"/>
                <TextBlock Text="Compare policies against baselines to find conflicts and missing settings." FontSize="12"
                           Foreground="{DynamicResource TextSecondary}" TextWrapping="Wrap" Margin="0,3,0,0"/>
              </StackPanel>
              <StackPanel Grid.Column="1" Grid.Row="0" Margin="12,0,0,12">
                <TextBlock Text="&#x1F4CB; Device Settings" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource TextPrimary}"/>
                <TextBlock Text="View all settings applied to a specific device with status tracking." FontSize="12"
                           Foreground="{DynamicResource TextSecondary}" TextWrapping="Wrap" Margin="0,3,0,0"/>
              </StackPanel>
              <StackPanel Grid.Column="0" Grid.Row="1">
                <TextBlock Text="&#x1F50E; Tenant Search" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource TextPrimary}"/>
                <TextBlock Text="Search across all tenant policy settings to find specific configurations." FontSize="12"
                           Foreground="{DynamicResource TextSecondary}" TextWrapping="Wrap" Margin="0,3,0,0"/>
              </StackPanel>
              <StackPanel Grid.Column="1" Grid.Row="1" Margin="12,0,0,0">
                <TextBlock Text="&#x1F4CA; Device vs Policy" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource TextPrimary}"/>
                <TextBlock Text="Compare device settings against tenant policies to find gaps." FontSize="12"
                           Foreground="{DynamicResource TextSecondary}" TextWrapping="Wrap" Margin="0,3,0,0"/>
              </StackPanel>
            </Grid>
          </Border>
          <TextBlock FontSize="11" Foreground="{DynamicResource TextSecondary}" TextAlignment="Center"
                     Text="FREE to use — IntuneDiff is completely free for personal, work, and commercial use."/>
          <!-- Hidden named element populated with release notes (shown in overlay) -->
          <TextBlock x:Name="ReleaseNotesText" Visibility="Collapsed" TextWrapping="Wrap"/>
        </StackPanel>
      </Border>
 
      <!-- Release Notes overlay (visible without sign-in) -->
      <Border x:Name="ReleaseNotesOverlay" Background="{DynamicResource PageBg}" Visibility="Collapsed" Panel.ZIndex="5">
        <DockPanel Margin="32,24">
          <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,16">
            <TextBlock Text="What's New" FontSize="20" FontWeight="Bold" Foreground="{DynamicResource TextPrimary}" VerticalAlignment="Center"/>
            <Button x:Name="CloseReleaseNotesButton" Content="&#x2190; Back" Padding="12,6" Margin="20,0,0,0"
                    Background="Transparent" BorderThickness="1" BorderBrush="{DynamicResource BorderColor}"
                    Foreground="{DynamicResource TextSecondary}" FontSize="12" Cursor="Hand" VerticalAlignment="Center"/>
          </StackPanel>
          <ScrollViewer VerticalScrollBarVisibility="Auto">
            <TextBlock x:Name="ReleaseNotesOverlayText" TextWrapping="Wrap" Foreground="{DynamicResource TextPrimary}" FontSize="13" LineHeight="22"/>
          </ScrollViewer>
        </DockPanel>
      </Border>
 
      <!-- Tab content (hidden until signed in) -->
      <TabControl x:Name="MainTabControl" Margin="16,12" TextElement.Foreground="{DynamicResource TextPrimary}" Visibility="Collapsed">
 
      <!-- TAB 1: Policy Comparison -->
      <TabItem Header="Policy Comparison">
        <Grid Margin="0,8,0,0">
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="700" MinWidth="300"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*" MinWidth="200"/>
          </Grid.ColumnDefinitions>
 
          <GridSplitter Grid.Column="1" Width="6" HorizontalAlignment="Center" VerticalAlignment="Stretch"
                        Background="Transparent" Cursor="SizeWE"/>
 
          <DockPanel Grid.Column="0" Margin="0,0,8,0">
            <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,8">
              <Button x:Name="LoadPoliciesButton" Content="Load Policies" Style="{StaticResource PrimaryButton}"/>
            </StackPanel>
            <Button x:Name="ComparePoliciesButton" DockPanel.Dock="Bottom" Content="Compare 0 Policies Against Baseline"
                    Style="{StaticResource PrimaryButton}" IsDefault="True" HorizontalAlignment="Stretch"
                    Padding="16,10" Margin="0,8,0,0" FontSize="13"/>
            <Grid>
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" MinWidth="150"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*" MinWidth="150"/>
              </Grid.ColumnDefinitions>
 
              <GridSplitter Grid.Column="1" Width="6" HorizontalAlignment="Center" VerticalAlignment="Stretch"
                            Background="Transparent" Cursor="SizeWE"/>
 
              <!-- Baseline pane -->
              <DockPanel Grid.Column="0">
                <TextBlock DockPanel.Dock="Top" FontWeight="SemiBold" Margin="0,0,0,2">
                  <Run Text="&#x1F4CC; Select Baseline Policy"/>
                </TextBlock>
                <TextBlock DockPanel.Dock="Top" Text="Click one policy as your source of truth" FontSize="11" Foreground="{DynamicResource TextSecondary}" Margin="0,0,0,6"/>
                <WrapPanel DockPanel.Dock="Top" x:Name="BaselineTypeChips" Margin="0,0,0,6"/>
                <TextBox DockPanel.Dock="Top" x:Name="BaselineSearchBox" Margin="0,0,0,6"
                         VerticalContentAlignment="Center" Tag="Search policy name..."/>
                <ListView x:Name="BaselineList" SelectionMode="Single" HorizontalContentAlignment="Stretch">
                  <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                      <Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
                      <Setter Property="BorderThickness" Value="0,0,0,1"/>
                      <Setter Property="Padding" Value="0"/>
                      <Setter Property="Margin" Value="0"/>
                      <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                      <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                          <Setter Property="Background" Value="{DynamicResource ListSelectedBg}"/>
                          <Setter Property="BorderBrush" Value="{DynamicResource ListSelectedBorder}"/>
                          <Setter Property="BorderThickness" Value="3,0,0,1"/>
                        </Trigger>
                      </Style.Triggers>
                    </Style>
                  </ListView.ItemContainerStyle>
                  <ListView.ItemTemplate>
                    <DataTemplate>
                      <StackPanel Orientation="Horizontal" Margin="4,6">
                        <RadioButton GroupName="BaselinePolicy" IsChecked="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" VerticalAlignment="Center" Margin="0,0,8,0"/>
                        <StackPanel>
                          <TextBlock Text="{Binding Name}" TextWrapping="Wrap" FontWeight="Medium" FontSize="13"/>
                          <StackPanel Orientation="Horizontal" Margin="0,2,0,0">
                            <Border Background="{DynamicResource BadgeTypeBg}" CornerRadius="4" Padding="6,2" Margin="0,0,4,0">
                              <TextBlock Text="{Binding Type}" FontSize="10" Foreground="{DynamicResource BadgeTypeFg}"/>
                            </Border>
                            <Border Background="{DynamicResource BadgeAssignedBg}" CornerRadius="4" Padding="6,2">
                              <Border.Style>
                                <Style TargetType="Border">
                                  <Setter Property="Visibility" Value="Collapsed"/>
                                  <Style.Triggers>
                                    <DataTrigger Binding="{Binding IsAssigned}" Value="True">
                                      <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                  </Style.Triggers>
                                </Style>
                              </Border.Style>
                              <TextBlock Text="Assigned" FontSize="10" Foreground="{DynamicResource BadgeAssignedFg}"/>
                            </Border>
                          </StackPanel>
                        </StackPanel>
                      </StackPanel>
                    </DataTemplate>
                  </ListView.ItemTemplate>
                </ListView>
              </DockPanel>
 
              <!-- Comparison pane -->
              <DockPanel Grid.Column="2">
                <TextBlock DockPanel.Dock="Top" x:Name="ComparisonHeader" FontWeight="SemiBold" Margin="0,0,0,2">
                  <Run Text="Select Policies to Compare (0 selected)"/>
                </TextBlock>
                <TextBlock DockPanel.Dock="Top" Text="Check policies to compare against baseline" FontSize="11" Foreground="{DynamicResource TextSecondary}" Margin="0,0,0,6"/>
                <WrapPanel DockPanel.Dock="Top" x:Name="ComparisonTypeChips" Margin="0,0,0,6"/>
                <TextBox DockPanel.Dock="Top" x:Name="ComparisonListSearchBox" Margin="0,0,0,6"
                         VerticalContentAlignment="Center" Tag="Search policy name..."/>
                <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,6">
                  <Button x:Name="SelectAllComparisonButton" Content="Select All" Padding="10,6" Margin="0,0,6,0" FontSize="12"
                          Width="90" Height="30" Style="{StaticResource PrimaryButton}"/>
                  <Button x:Name="ClearAllComparisonButton" Content="Clear All" Padding="10,6" FontSize="12"
                          Width="90" Height="30" Style="{StaticResource DangerButton}"/>
                </StackPanel>
                <ListView x:Name="ComparisonList" HorizontalContentAlignment="Stretch">
                  <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                      <Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
                      <Setter Property="BorderThickness" Value="0,0,0,1"/>
                      <Setter Property="Padding" Value="0"/>
                      <Setter Property="Margin" Value="0"/>
                      <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                    </Style>
                  </ListView.ItemContainerStyle>
                  <ListView.ItemTemplate>
                    <DataTemplate>
                      <StackPanel Orientation="Horizontal" Margin="4,6">
                        <CheckBox IsChecked="{Binding IsChecked}" VerticalAlignment="Center" Margin="0,0,8,0"/>
                        <StackPanel>
                          <TextBlock Text="{Binding Name}" TextWrapping="Wrap" FontWeight="Medium" FontSize="13"/>
                          <StackPanel Orientation="Horizontal" Margin="0,2,0,0">
                            <Border Background="{DynamicResource BadgeTypeBg}" CornerRadius="4" Padding="6,2" Margin="0,0,4,0">
                              <TextBlock Text="{Binding Type}" FontSize="10" Foreground="{DynamicResource BadgeTypeFg}"/>
                            </Border>
                            <Border Background="{DynamicResource BadgeAssignedBg}" CornerRadius="4" Padding="6,2">
                              <Border.Style>
                                <Style TargetType="Border">
                                  <Setter Property="Visibility" Value="Collapsed"/>
                                  <Style.Triggers>
                                    <DataTrigger Binding="{Binding IsAssigned}" Value="True">
                                      <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                  </Style.Triggers>
                                </Style>
                              </Border.Style>
                              <TextBlock Text="Assigned" FontSize="10" Foreground="{DynamicResource BadgeAssignedFg}"/>
                            </Border>
                          </StackPanel>
                        </StackPanel>
                      </StackPanel>
                    </DataTemplate>
                  </ListView.ItemTemplate>
                </ListView>
              </DockPanel>
            </Grid>
          </DockPanel>
 
          <DockPanel Grid.Column="2">
            <!-- Summary cards -->
            <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,8">
              <Border Style="{StaticResource SummaryCard}" Background="#F0FDF4" BorderBrush="#F0FDF4">
                <StackPanel>
                  <TextBlock x:Name="CardCoveredCount" Style="{StaticResource SummaryCount}" Foreground="#166534" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Covered"/>
                </StackPanel>
              </Border>
              <Border Style="{StaticResource SummaryCard}" Background="#FFFBEB" BorderBrush="#FFFBEB">
                <StackPanel>
                  <TextBlock x:Name="CardConflictCount" Style="{StaticResource SummaryCount}" Foreground="#92400E" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Conflicts"/>
                </StackPanel>
              </Border>
              <Border Style="{StaticResource SummaryCard}" Background="#FEF2F2" BorderBrush="#FEF2F2">
                <StackPanel>
                  <TextBlock x:Name="CardMissingCount" Style="{StaticResource SummaryCount}" Foreground="#991B1B" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Missing"/>
                </StackPanel>
              </Border>
              <Border Style="{StaticResource SummaryCard}" Background="#EFF6FF" BorderBrush="#EFF6FF">
                <StackPanel>
                  <TextBlock x:Name="CardExtraCount" Style="{StaticResource SummaryCount}" Foreground="#1E40AF" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Extra"/>
                </StackPanel>
              </Border>
              <Border Style="{StaticResource SummaryCard}" Background="#FAF5FF" BorderBrush="#FAF5FF">
                <StackPanel>
                  <TextBlock x:Name="CardAttentionCount" Style="{StaticResource SummaryCount}" Foreground="#6B21A8" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Attention"/>
                </StackPanel>
              </Border>
              <TextBlock x:Name="ComparisonSummary" Text="No comparison yet." VerticalAlignment="Center"
                         Margin="12,0,0,0" Foreground="{DynamicResource TextSecondary}" TextWrapping="Wrap"/>
            </StackPanel>
 
            <!-- Search + filter chips -->
            <Grid DockPanel.Dock="Top" Margin="0,0,0,8">
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
              </Grid.ColumnDefinitions>
              <TextBox x:Name="ComparisonSearchBox" Grid.Column="0"
                       VerticalContentAlignment="Center" Margin="0,0,12,0"
                       Tag="Search settings..."/>
              <StackPanel Grid.Column="1" Orientation="Horizontal">
                <ToggleButton x:Name="FilterAll" Style="{StaticResource FilterChip}" IsChecked="True" Content="All (0)"/>
                <ToggleButton x:Name="FilterCovered" Style="{StaticResource FilterChip}" Content="Covered (0)"/>
                <ToggleButton x:Name="FilterConflict" Style="{StaticResource FilterChip}" Content="Conflict (0)"/>
                <ToggleButton x:Name="FilterMissing" Style="{StaticResource FilterChip}" Content="Missing (0)"/>
                <ToggleButton x:Name="FilterExtra" Style="{StaticResource FilterChip}" Content="Extra (0)"/>
                <ToggleButton x:Name="FilterAttention" Style="{StaticResource FilterChip}" Content="Attention (0)"/>
              </StackPanel>
            </Grid>
 
            <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,8,0,0">
              <TextBlock x:Name="SelectionCountLabel" VerticalAlignment="Center" Foreground="{DynamicResource TextSecondary}" Margin="0,0,12,0" Text=""/>
              <Button x:Name="SelectAllVisibleButton" Content="Select All" IsEnabled="False"/>
              <Button x:Name="ClearSelectionButton" Content="Clear" IsEnabled="False"/>
              <Button x:Name="ExportComparisonButton" Content="Export HTML" IsEnabled="False"/>
              <Button x:Name="ExportComparisonExcelButton" Content="Export CSV" IsEnabled="False"/>
              <Button x:Name="ExportComparisonJsonButton" Content="Export Intune JSON" IsEnabled="False"/>
            </StackPanel>
            <DataGrid x:Name="ComparisonGrid" IsReadOnly="False">
              <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                  <Setter Property="VerticalContentAlignment" Value="Top"/>
                  <Setter Property="MinHeight" Value="28"/>
                </Style>
              </DataGrid.RowStyle>
              <DataGrid.Columns>
                <DataGridTemplateColumn Width="40" CanUserResize="False" IsReadOnly="True">
                  <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                      <CheckBox x:Name="SelectAllCheckBox" ToolTip="Select/deselect all visible rows"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.HeaderTemplate>
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <CheckBox IsChecked="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                                HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Setting" Width="2*" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <TextBox Text="{Binding SettingName, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Result" Width="110" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <Border Style="{StaticResource ResultBadge}">
                        <TextBlock Style="{StaticResource ResultBadgeText}" Text="{Binding Result}"/>
                      </Border>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Policy" Width="1.4*" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <TextBox Text="{Binding PolicyName, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Baseline Value" Width="1.4*" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <TextBox Text="{Binding BaselineValue, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Current Value" Width="1.4*" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <TextBox Text="{Binding CurrentValue, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
              </DataGrid.Columns>
            </DataGrid>
          </DockPanel>
        </Grid>
      </TabItem>
 
      <!-- TAB 2: Device Settings -->
      <TabItem Header="Device Settings">
        <DockPanel Margin="0,8,0,0">
          <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,8">
            <TextBlock VerticalAlignment="Center" Text="Intune Device ID:" Margin="0,0,8,0" Foreground="{DynamicResource TextPrimary}"/>
            <TextBox x:Name="DeviceIdBox" Width="320" VerticalAlignment="Center" />
            <Button x:Name="SearchDeviceButton" Content="Load Settings" Style="{StaticResource PrimaryButton}"/>
            <Button x:Name="PauseDeviceLoadButton" Content="Pause" Padding="10,6" Margin="6,0,0,0" Visibility="Collapsed"/>
            <Button x:Name="StopDeviceLoadButton" Content="Stop" Padding="10,6" Margin="6,0,0,0" Visibility="Collapsed" Style="{StaticResource DangerButton}"/>
            <TextBlock x:Name="DeviceSummary" VerticalAlignment="Center" Margin="12,0,0,0" Foreground="{DynamicResource TextSecondary}"/>
          </StackPanel>
          <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,4">
            <TextBlock Text="Policy Type:" VerticalAlignment="Center" Margin="0,0,8,0" Foreground="{DynamicResource TextSecondary}" Width="90"/>
            <WrapPanel x:Name="DevicePolicyTypeChips"/>
          </StackPanel>
          <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,4">
            <TextBlock Text="Status:" VerticalAlignment="Center" Margin="0,0,8,0" Foreground="{DynamicResource TextSecondary}" Width="90"/>
            <WrapPanel x:Name="DeviceStatusChips"/>
          </StackPanel>
          <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,4">
            <TextBlock Text="User:" VerticalAlignment="Center" Margin="0,0,8,0" Foreground="{DynamicResource TextSecondary}" Width="90"/>
            <WrapPanel x:Name="DeviceUserChips"/>
          </StackPanel>
          <TextBox x:Name="DeviceSearchBox" DockPanel.Dock="Top" Margin="0,4,0,8"
                   Tag="Search settings..."/>
          <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,8,0,0">
            <TextBlock x:Name="DeviceResultCount" VerticalAlignment="Center" Margin="0,0,12,0" Foreground="{DynamicResource TextSecondary}"/>
            <Button x:Name="ExportDeviceButton" Content="Export HTML" IsEnabled="False"/>
            <Button x:Name="ExportDeviceExcelButton" Content="Export CSV" IsEnabled="False"/>
          </StackPanel>
          <DataGrid x:Name="DeviceGrid" IsReadOnly="True">
            <DataGrid.RowStyle>
              <Style TargetType="DataGridRow">
                <Setter Property="VerticalContentAlignment" Value="Top"/>
                <Setter Property="MinHeight" Value="28"/>
              </Style>
            </DataGrid.RowStyle>
            <DataGrid.Columns>
              <DataGridTemplateColumn Header="Setting" Width="2*" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding SettingName, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
              <DataGridTemplateColumn Header="Value" Width="1.4*" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding Value, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
              <DataGridTemplateColumn Header="Policy" Width="1.4*" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding PolicyName, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
              <DataGridTemplateColumn Header="Policy Type" Width="150" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding PolicyType, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
              <DataGridTemplateColumn Header="Status" Width="110" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <Border Style="{StaticResource StatusBadge}">
                      <TextBlock Style="{StaticResource StatusBadgeText}" Text="{Binding Status}"/>
                    </Border>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
              <DataGridTemplateColumn Header="Logged In User" Width="160" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding User, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
            </DataGrid.Columns>
          </DataGrid>
        </DockPanel>
      </TabItem>
 
      <!-- TAB 3: Search Tenant Setting -->
      <TabItem Header="Search Tenant Setting">
        <DockPanel Margin="0,8,0,0">
          <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,8">
            <Button x:Name="LoadTenantSettingsButton" Content="Load Settings" Style="{StaticResource PrimaryButton}"/>
            <Button x:Name="PauseTenantLoadButton" Content="Pause" Visibility="Collapsed" Margin="8,0,0,0"/>
            <Button x:Name="StopTenantLoadButton" Content="Stop" Visibility="Collapsed" Margin="6,0,0,0" Style="{StaticResource DangerButton}"/>
            <TextBlock x:Name="TenantSettingsStatus" VerticalAlignment="Center" Margin="12,0,0,0" Foreground="{DynamicResource TextSecondary}"/>
          </StackPanel>
          <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,4">
            <TextBlock Text="Type:" VerticalAlignment="Center" Margin="0,0,8,0" Foreground="{DynamicResource TextSecondary}"/>
            <WrapPanel>
              <ToggleButton x:Name="TenantTypeAll" Style="{StaticResource FilterChip}" IsChecked="True" Content="All Types"/>
              <ToggleButton x:Name="TenantTypeSettingsCatalog" Style="{StaticResource FilterChip}" Content="Settings Catalog"/>
              <ToggleButton x:Name="TenantTypeSecurityBaseline" Style="{StaticResource FilterChip}" Content="Security Baseline Policy"/>
              <ToggleButton x:Name="TenantTypeBaselineTemplate" Style="{StaticResource FilterChip}" Content="Security Baseline Template"/>
              <ToggleButton x:Name="TenantTypeEndpointSecurity" Style="{StaticResource FilterChip}" Content="Endpoint Security"/>
            </WrapPanel>
          </StackPanel>
          <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,6">
            <TextBlock Text="Assignment:" VerticalAlignment="Center" Margin="0,0,8,0" Foreground="{DynamicResource TextSecondary}"/>
            <WrapPanel>
              <ToggleButton x:Name="TenantAssignAll" Style="{StaticResource FilterChip}" IsChecked="True" Content="All"/>
              <ToggleButton x:Name="TenantAssignAssigned" Style="{StaticResource FilterChip}" Content="Assigned"/>
              <ToggleButton x:Name="TenantAssignNotAssigned" Style="{StaticResource FilterChip}" Content="Not Assigned"/>
            </WrapPanel>
          </StackPanel>
          <TextBox x:Name="TenantSearchBox" DockPanel.Dock="Top" Margin="0,0,0,8"
                   Tag="Search settings..."/>
          <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,8,0,0">
            <TextBlock x:Name="TenantResultCount" VerticalAlignment="Center" Margin="0,0,12,0" Foreground="{DynamicResource TextSecondary}"/>
            <Button x:Name="ExportTenantHtmlButton" Content="Export HTML" IsEnabled="False"/>
            <Button x:Name="ExportTenantExcelButton" Content="Export CSV" IsEnabled="False"/>
          </StackPanel>
          <DataGrid x:Name="TenantSettingsGrid" IsReadOnly="True">
            <DataGrid.RowStyle>
              <Style TargetType="DataGridRow">
                <Setter Property="VerticalContentAlignment" Value="Top"/>
                <Setter Property="MinHeight" Value="28"/>
              </Style>
            </DataGrid.RowStyle>
            <DataGrid.Columns>
              <DataGridTemplateColumn Header="Setting" Width="2*" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding SettingName, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
              <DataGridTemplateColumn Header="Value" Width="1.4*" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding Value, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
              <DataGridTemplateColumn Header="Policy" Width="1.4*" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding PolicyName, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
              <DataGridTemplateColumn Header="Type" Width="150" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding PolicyType, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
              <DataGridTemplateColumn Header="Assigned" Width="80" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                    <TextBox Text="{Binding AssignedText, Mode=OneWay}" Style="{StaticResource SelectableCell}"/>
                  </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
              </DataGridTemplateColumn>
            </DataGrid.Columns>
          </DataGrid>
        </DockPanel>
      </TabItem>
 
      <!-- TAB 4: Device vs Policy -->
      <TabItem Header="Device vs Policy">
        <Grid Margin="0,8,0,0">
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="260" MinWidth="200"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
          </Grid.ColumnDefinitions>
 
          <GridSplitter Grid.Column="1" Width="6" HorizontalAlignment="Center" VerticalAlignment="Stretch"
                        Background="Transparent" Cursor="SizeWE"/>
 
          <DockPanel Grid.Column="0" Margin="0,0,8,0">
            <StackPanel DockPanel.Dock="Top" Margin="0,0,0,6">
              <TextBlock Text="Intune Device ID" FontWeight="SemiBold" Margin="0,0,0,4"/>
              <TextBox x:Name="DvpDeviceIdBox" Margin="0,0,0,8" VerticalContentAlignment="Center"/>
              <Button x:Name="DvpLoadPoliciesButton" Content="Load Tenant Policies" Style="{StaticResource PrimaryButton}" HorizontalAlignment="Left" Margin="0,0,0,8"/>
              <TextBlock x:Name="DvpPoliciesLabel" Text="Select tenant policies to compare against" FontWeight="SemiBold" Margin="0,0,0,4"/>
            </StackPanel>
            <StackPanel DockPanel.Dock="Top" Margin="0,0,0,4">
              <TextBlock Text="Filter by type:" FontSize="11" Foreground="{DynamicResource TextSecondary}" Margin="0,0,0,3"/>
              <WrapPanel x:Name="DvpTypeChips" Margin="0,0,0,4"/>
              <TextBlock Text="Filter by assignment:" FontSize="11" Foreground="{DynamicResource TextSecondary}" Margin="0,0,0,3"/>
              <WrapPanel x:Name="DvpAssignChips" Margin="0,0,0,4"/>
              <TextBox x:Name="DvpSearchBox" Margin="0,0,0,6"
                       VerticalContentAlignment="Center" Tag="Search policy name..."/>
            </StackPanel>
            <StackPanel DockPanel.Dock="Bottom" Margin="0,8,0,0">
              <Button x:Name="DvpCompareButton" Content="Compare" Padding="16,10"
                      Style="{StaticResource PrimaryButton}" HorizontalAlignment="Stretch" FontSize="13"/>
            </StackPanel>
            <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,6">
              <Button x:Name="DvpSelectAllButton" Content="Select All" Padding="10,6" Margin="0,0,6,0" FontSize="12"
                      Width="90" Height="30" Style="{StaticResource PrimaryButton}"/>
              <Button x:Name="DvpClearAllButton" Content="Clear All" Padding="10,6" FontSize="12"
                      Width="90" Height="30" Style="{StaticResource DangerButton}"/>
            </StackPanel>
            <ListView x:Name="DvpPoliciesList" SelectionMode="Extended" HorizontalContentAlignment="Stretch">
              <ListView.ItemTemplate>
                <DataTemplate>
                  <StackPanel Orientation="Horizontal" Margin="4,6">
                    <CheckBox IsChecked="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" VerticalAlignment="Center" Margin="0,0,8,0"/>
                    <StackPanel>
                      <TextBlock Text="{Binding Name}" TextWrapping="Wrap" FontWeight="Medium" FontSize="13"/>
                      <StackPanel Orientation="Horizontal" Margin="0,4,0,0">
                      <Border Background="{DynamicResource BadgeTypeBg}" CornerRadius="4" Padding="6,2" Margin="0,0,4,0">
                        <TextBlock Text="{Binding Type}" FontSize="10" Foreground="{DynamicResource BadgeTypeFg}"/>
                      </Border>
                      <Border Background="{DynamicResource BadgeAssignedBg}" CornerRadius="4" Padding="6,2">
                        <Border.Style>
                          <Style TargetType="Border">
                            <Setter Property="Visibility" Value="Collapsed"/>
                            <Style.Triggers>
                              <DataTrigger Binding="{Binding IsAssigned}" Value="True">
                                <Setter Property="Visibility" Value="Visible"/>
                              </DataTrigger>
                            </Style.Triggers>
                          </Style>
                        </Border.Style>
                        <TextBlock Text="Assigned" FontSize="10" Foreground="{DynamicResource BadgeAssignedFg}"/>
                      </Border>
                    </StackPanel>
                  </StackPanel>
                  </StackPanel>
                </DataTemplate>
              </ListView.ItemTemplate>
            </ListView>
          </DockPanel>
 
          <DockPanel Grid.Column="2">
            <!-- Summary cards -->
            <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,8">
              <Border Style="{StaticResource SummaryCard}" Background="#F9FAFB" BorderBrush="#F9FAFB">
                <StackPanel>
                  <TextBlock x:Name="DvpCardTotalCount" Style="{StaticResource SummaryCount}" Foreground="#374151" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Total"/>
                </StackPanel>
              </Border>
              <Border Style="{StaticResource SummaryCard}" Background="#F0FDF4" BorderBrush="#F0FDF4">
                <StackPanel>
                  <TextBlock x:Name="DvpCardCoveredCount" Style="{StaticResource SummaryCount}" Foreground="#166534" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Covered"/>
                </StackPanel>
              </Border>
              <Border Style="{StaticResource SummaryCard}" Background="#FFFBEB" BorderBrush="#FFFBEB">
                <StackPanel>
                  <TextBlock x:Name="DvpCardConflictCount" Style="{StaticResource SummaryCount}" Foreground="#92400E" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Conflict"/>
                </StackPanel>
              </Border>
              <Border Style="{StaticResource SummaryCard}" Background="#FEF2F2" BorderBrush="#FEF2F2">
                <StackPanel>
                  <TextBlock x:Name="DvpCardMissingCount" Style="{StaticResource SummaryCount}" Foreground="#991B1B" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Missing"/>
                </StackPanel>
              </Border>
              <Border Style="{StaticResource SummaryCard}" Background="#EFF6FF" BorderBrush="#EFF6FF">
                <StackPanel>
                  <TextBlock x:Name="DvpCardExtraCount" Style="{StaticResource SummaryCount}" Foreground="#1E40AF" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Extra"/>
                </StackPanel>
              </Border>
              <Border Style="{StaticResource SummaryCard}" Background="#FAF5FF" BorderBrush="#FAF5FF">
                <StackPanel>
                  <TextBlock x:Name="DvpCardAttentionCount" Style="{StaticResource SummaryCount}" Foreground="#6B21A8" Text="0"/>
                  <TextBlock Style="{StaticResource SummaryLabel}" Text="Attention"/>
                </StackPanel>
              </Border>
            </StackPanel>
 
            <TextBlock DockPanel.Dock="Top" x:Name="DvpSummary" Text="No comparison yet." Foreground="{DynamicResource TextSecondary}" Margin="0,0,0,6"/>
 
            <!-- Filter by Result + Search -->
            <Grid DockPanel.Dock="Top" Margin="0,0,0,8">
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
              </Grid.ColumnDefinitions>
              <TextBox x:Name="DvpResultSearchBox" Grid.Column="0"
                       VerticalContentAlignment="Center" Margin="0,0,12,0"
                       Tag="Search settings..."/>
              <StackPanel Grid.Column="1" Orientation="Horizontal">
                <ToggleButton x:Name="DvpFilterAll" Style="{StaticResource FilterChip}" IsChecked="True" Content="All (0)"/>
                <ToggleButton x:Name="DvpFilterCovered" Style="{StaticResource FilterChip}" Content="Covered (0)"/>
                <ToggleButton x:Name="DvpFilterConflict" Style="{StaticResource FilterChip}" Content="Conflict (0)"/>
                <ToggleButton x:Name="DvpFilterMissing" Style="{StaticResource FilterChip}" Content="Missing (0)"/>
                <ToggleButton x:Name="DvpFilterExtra" Style="{StaticResource FilterChip}" Content="Extra (0)"/>
                <ToggleButton x:Name="DvpFilterAttention" Style="{StaticResource FilterChip}" Content="Attention (0)"/>
              </StackPanel>
            </Grid>
 
            <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,8,0,0">
              <TextBlock x:Name="DvpResultCount" VerticalAlignment="Center" Foreground="{DynamicResource TextSecondary}" Margin="0,0,12,0"/>
              <Button x:Name="DvpExportButton" Content="Export HTML" IsEnabled="False"/>
              <Button x:Name="DvpExportExcelButton" Content="Export CSV" IsEnabled="False"/>
            </StackPanel>
            <DataGrid x:Name="DvpGrid" IsReadOnly="True">
              <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                  <Setter Property="VerticalContentAlignment" Value="Top"/>
                  <Setter Property="MinHeight" Value="28"/>
                </Style>
              </DataGrid.RowStyle>
              <DataGrid.Columns>
                <DataGridTemplateColumn Header="Setting Name" Width="2*" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <TextBox Text="{Binding SettingName, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Status" Width="110" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <Border Style="{StaticResource ResultBadge}">
                        <TextBlock Style="{StaticResource ResultBadgeText}" Text="{Binding Result}"/>
                      </Border>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Policy Name" Width="1.4*" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <TextBox Text="{Binding PolicyName, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Comparison Policy" Width="1.4*" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <TextBox Text="{Binding ComparisonPolicies, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Device Value" Width="1.4*" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <TextBox Text="{Binding CurrentValue, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Policy Value" Width="1.4*" IsReadOnly="True">
                  <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                      <TextBox Text="{Binding BaselineValue, Mode=OneWay}" Style="{StaticResource SelectableCellWrapped}"/>
                    </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
              </DataGrid.Columns>
            </DataGrid>
          </DockPanel>
        </Grid>
      </TabItem>
 
      <!-- Release Notes tab -->
      <TabItem Header="Release Notes">
        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Padding="24,20">
          <TextBlock x:Name="ReleaseNotesTabText" FontSize="13" TextWrapping="Wrap"
                     LineHeight="22"
                     Foreground="{DynamicResource TextPrimary}"
                     FontFamily="Segoe UI"/>
        </ScrollViewer>
      </TabItem>
 
    </TabControl>
    </Grid>
  </DockPanel>
</Window>
'@