<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="using:OTSSignsOrchestrator.Desktop.ViewModels"
        x:Class="OTSSignsOrchestrator.Desktop.Views.InstanceDetailsWindow"
        x:DataType="vm:InstanceDetailsViewModel"
        Title="Instance Details"
        Width="620" Height="740"
        MinWidth="520" MinHeight="600"
        WindowStartupLocation="CenterOwner"
        CanResize="True">

    <DockPanel Margin="24">

        <!-- Header -->
        <StackPanel DockPanel.Dock="Top" Margin="0,0,0,16">
            <StackPanel Orientation="Horizontal" Spacing="10">
                <TextBlock Text="{Binding StackName}" FontSize="22" FontWeight="Bold"
                           Foreground="{StaticResource AccentBrush}" />
            </StackPanel>
            <TextBlock Text="{Binding HostLabel, StringFormat='Host: {0}'}"
                       FontSize="12" Foreground="{StaticResource TextMutedBrush}" Margin="0,2,0,0" />
            <TextBlock Text="{Binding InstanceUrl}"
                       FontSize="11" Foreground="{StaticResource TextMutedBrush}" />
        </StackPanel>

        <!-- Status bar -->
        <TextBlock DockPanel.Dock="Bottom" Text="{Binding StatusMessage}" Classes="status"
                   Margin="0,12,0,0" TextWrapping="Wrap" />

        <!-- Main scrollable content -->
        <ScrollViewer>
            <StackPanel Spacing="16">

                <!-- ═══ OTS Admin Account ═══ -->
                <Border Classes="card">
                    <StackPanel Spacing="8">
                        <StackPanel Orientation="Horizontal" Spacing="8" Margin="0,0,0,4">
                            <Border Width="4" Height="20" CornerRadius="2" Background="#F97316" />
                            <TextBlock Text="OTS Admin Account" FontSize="16" FontWeight="SemiBold"
                                       Foreground="#F97316" VerticalAlignment="Center" />
                        </StackPanel>

                        <TextBlock Text="Username" FontSize="12" Foreground="{StaticResource TextSecondaryBrush}" />
                        <Grid ColumnDefinitions="*,Auto">
                            <TextBox Grid.Column="0" Text="{Binding AdminUsername}" IsReadOnly="True" />
                            <Button Grid.Column="1" Content="Copy" Margin="4,0,0,0"
                                    Command="{Binding CopyAdminPasswordCommand}" />
                        </Grid>

                        <TextBlock Text="Password" FontSize="12" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,4,0,0" />
                        <Grid ColumnDefinitions="*,Auto,Auto,Auto">
                            <TextBox Grid.Column="0" Text="{Binding AdminPasswordDisplay}" IsReadOnly="True"
                                     FontFamily="Consolas,monospace" />
                            <Button Grid.Column="1" Content="Show" Margin="4,0,0,0"
                                    IsVisible="{Binding !AdminPasswordVisible}"
                                    Command="{Binding ToggleAdminPasswordVisibilityCommand}" />
                            <Button Grid.Column="2" Content="Hide" Margin="4,0,0,0"
                                    IsVisible="{Binding AdminPasswordVisible}"
                                    Command="{Binding ToggleAdminPasswordVisibilityCommand}" />
                            <Button Grid.Column="3" Content="Copy" Margin="4,0,0,0"
                                    Command="{Binding CopyAdminPasswordCommand}" />
                        </Grid>

                        <Button Content="Rotate Admin Password"
                                Command="{Binding RotateAdminPasswordCommand}"
                                IsEnabled="{Binding !IsBusy}"
                                Classes="accent"
                                Margin="0,6,0,0" />
                    </StackPanel>
                </Border>

                <!-- ═══ Database Credentials ═══ -->
                <Border Classes="card">
                    <StackPanel Spacing="8">
                        <StackPanel Orientation="Horizontal" Spacing="8" Margin="0,0,0,4">
                            <Border Width="4" Height="20" CornerRadius="2" Background="#4ADE80" />
                            <TextBlock Text="Database Credentials" FontSize="16" FontWeight="SemiBold"
                                       Foreground="#4ADE80" VerticalAlignment="Center" />
                        </StackPanel>

                        <TextBlock Text="MySQL Username" FontSize="12" Foreground="{StaticResource TextSecondaryBrush}" />
                        <Grid ColumnDefinitions="*">
                            <TextBox Text="{Binding DbUsername}" IsReadOnly="True" />
                        </Grid>

                        <TextBlock Text="MySQL Password" FontSize="12" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,4,0,0" />
                        <Grid ColumnDefinitions="*,Auto,Auto,Auto">
                            <TextBox Grid.Column="0" Text="{Binding DbPasswordDisplay}" IsReadOnly="True"
                                     FontFamily="Consolas,monospace" />
                            <Button Grid.Column="1" Content="Show" Margin="4,0,0,0"
                                    IsVisible="{Binding !DbPasswordVisible}"
                                    Command="{Binding ToggleDbPasswordVisibilityCommand}" />
                            <Button Grid.Column="2" Content="Hide" Margin="4,0,0,0"
                                    IsVisible="{Binding DbPasswordVisible}"
                                    Command="{Binding ToggleDbPasswordVisibilityCommand}" />
                            <Button Grid.Column="3" Content="Copy" Margin="4,0,0,0"
                                    Command="{Binding CopyDbPasswordCommand}" />
                        </Grid>

                        <Button Content="Rotate DB Password"
                                Command="{Binding RotateDbPasswordCommand}"
                                IsEnabled="{Binding !IsBusy}"
                                Margin="0,6,0,0" />
                    </StackPanel>
                </Border>

                <!-- ═══ Xibo OAuth2 Application ═══ -->
                <Border Classes="card">
                    <StackPanel Spacing="8">
                        <StackPanel Orientation="Horizontal" Spacing="8" Margin="0,0,0,4">
                            <Border Width="4" Height="20" CornerRadius="2" Background="#60A5FA" />
                            <TextBlock Text="OTS OAuth2 Application" FontSize="16" FontWeight="SemiBold"
                                       Foreground="#60A5FA" VerticalAlignment="Center" />
                        </StackPanel>
                        <TextBlock Text="Client credentials used by the OTS orchestrator for Xibo API access."
                                   FontSize="12" Foreground="{StaticResource TextMutedBrush}" Margin="0,0,0,6"
                                   TextWrapping="Wrap" />

                        <TextBlock Text="Client ID" FontSize="12" Foreground="{StaticResource TextSecondaryBrush}" />
                        <Grid ColumnDefinitions="*,Auto">
                            <TextBox Grid.Column="0" Text="{Binding OAuthClientId}" IsReadOnly="True"
                                     FontFamily="Consolas,monospace" />
                            <Button Grid.Column="1" Content="Copy" Margin="4,0,0,0"
                                    Command="{Binding CopyOAuthClientIdCommand}" />
                        </Grid>

                        <TextBlock Text="Client Secret" FontSize="12" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,4,0,0" />
                        <Grid ColumnDefinitions="*,Auto,Auto,Auto">
                            <TextBox Grid.Column="0" Text="{Binding OAuthSecretDisplay}" IsReadOnly="True"
                                     FontFamily="Consolas,monospace" />
                            <Button Grid.Column="1" Content="Show" Margin="4,0,0,0"
                                    IsVisible="{Binding !OAuthSecretVisible}"
                                    Command="{Binding ToggleOAuthSecretVisibilityCommand}" />
                            <Button Grid.Column="2" Content="Hide" Margin="4,0,0,0"
                                    IsVisible="{Binding OAuthSecretVisible}"
                                    Command="{Binding ToggleOAuthSecretVisibilityCommand}" />
                            <Button Grid.Column="3" Content="Copy" Margin="4,0,0,0"
                                    Command="{Binding CopyOAuthSecretCommand}" />
                        </Grid>
                    </StackPanel>
                </Border>

            </StackPanel>
        </ScrollViewer>
    </DockPanel>
</Window>