1
0
Fork 0
Everything2Everything/src/Everything2Everything.App/Views/FormatShiftTheme.xaml

769 lines
44 KiB
XML

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=System.Runtime"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
<!-- Windows 11 Flagship Acrylic & Neo Glass Backgrounds -->
<SolidColorBrush x:Key="FsBgBase" Color="#D80A0C10"/>
<SolidColorBrush x:Key="FsBgPanel" Color="#E211141D"/>
<SolidColorBrush x:Key="FsBgSurface" Color="#171B26"/>
<SolidColorBrush x:Key="FsBgSurfaceHover" Color="#222738"/>
<SolidColorBrush x:Key="FsBgInput" Color="#0C0E14"/>
<!-- Neo Glass Rimlight Gradients -->
<LinearGradientBrush x:Key="FsGlassBorderBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#2EFFFFFF" Offset="0.0"/>
<GradientStop Color="#0EFFFFFF" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="FsGlassBorderBrushHover" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#6606B6D4" Offset="0.0"/>
<GradientStop Color="#2206B6D4" Offset="1.0"/>
</LinearGradientBrush>
<!-- Borders -->
<SolidColorBrush x:Key="FsBorderSubtle" Color="#232733"/>
<SolidColorBrush x:Key="FsBorderStrong" Color="#3B4254"/>
<!-- Text -->
<SolidColorBrush x:Key="FsTextPrimary" Color="#F8FAFC"/>
<SolidColorBrush x:Key="FsTextSecondary" Color="#94A3B8"/>
<SolidColorBrush x:Key="FsTextTertiary" Color="#64748B"/>
<!-- Accents (Cybernetic Neon Cyan + Glowing Rims) -->
<SolidColorBrush x:Key="FsAccentBlue" Color="#06B6D4"/>
<SolidColorBrush x:Key="FsAccentCyan" Color="#06B6D4"/>
<SolidColorBrush x:Key="FsAccentCyanHover" Color="#22D3EE"/>
<SolidColorBrush x:Key="FsAccentCyanBg" Color="#083344"/>
<SolidColorBrush x:Key="FsAccentGreen" Color="#10B981"/>
<SolidColorBrush x:Key="FsAccentAmber" Color="#F59E0B"/>
<SolidColorBrush x:Key="FsAccentRed" Color="#EF4444"/>
<!-- Format pills -->
<SolidColorBrush x:Key="FsFmtPdf" Color="#E53E3E"/>
<SolidColorBrush x:Key="FsFmtPng" Color="#805AD5"/>
<SolidColorBrush x:Key="FsFmtHeic" Color="#D69E2E"/>
<SolidColorBrush x:Key="FsFmtJpg" Color="#3182CE"/>
<SolidColorBrush x:Key="FsFmtDocx" Color="#2B6CB0"/>
<SolidColorBrush x:Key="FsFmtHtml" Color="#DD6B20"/>
<SolidColorBrush x:Key="FsFmtRaw" Color="#319795"/>
<SolidColorBrush x:Key="FsFmtGif" Color="#9F7AEA"/>
<SolidColorBrush x:Key="FsFmtTiff" Color="#38B2AC"/>
<SolidColorBrush x:Key="FsFmtWebp" Color="#48BB78"/>
<SolidColorBrush x:Key="FsFmtBmp" Color="#718096"/>
<SolidColorBrush x:Key="FsFmtAvif" Color="#ED64A6"/>
<SolidColorBrush x:Key="FsFmtHwp" Color="#9B2C2C"/>
<SolidColorBrush x:Key="FsFmtOther" Color="#4A5568"/>
<!-- Format pills (신규: 데이터/벡터/영상/오디오 카테고리) -->
<!-- 출처: VS Code Material Icon Theme + Seti UI(Solarized) + GitHub Linguist 의 hue 컨벤션을
차용하되, 채도/명도는 기존 Chakra/Tailwind 500 솔리드 톤(흰 텍스트 위 대비)에 맞춰 재조정.
Linear OKLCH 균일 명도 원칙(다크 #090A0C~#1C1E22 배경에서 한 칩만 튀지 않게)을 적용. -->
<!-- 데이터/표 = 그린 (Material table=#8BC34A, Seti green, Excel 브랜드 그린) -->
<SolidColorBrush x:Key="FsFmtCsv" Color="#68A063"/>
<SolidColorBrush x:Key="FsFmtXlsx" Color="#38A169"/>
<!-- 데이터/구조 = 골드 (Material json=#F9A825, Seti yellow); 기존 HEIC(#D69E2E)보다 노랑쪽 -->
<SolidColorBrush x:Key="FsFmtJson" Color="#E3B341"/>
<!-- 벡터 = 핑크-마젠타 (Seti svg=purple/css=pink); 노랑 JSON과 즉시 구분 -->
<SolidColorBrush x:Key="FsFmtSvg" Color="#E05A9C"/>
<!-- 영상 = 코랄/오렌지레드 (Material video=#FF9800, 통념 영상=난색); 기존 PDF(#E53E3E)와 구분 -->
<SolidColorBrush x:Key="FsFmtVideo" Color="#FF7043"/>
<!-- 오디오 = 라이트 퍼플 (Seti audio=purple, 통념 오디오=보라); 기존 PNG/GIF보다 라이트 -->
<SolidColorBrush x:Key="FsFmtAudio" Color="#B794F4"/>
<!-- 포맷 카테고리별 시그니처 뱃지 브러시 (designpaca Dark Instrument) -->
<SolidColorBrush x:Key="FsBadgeImageBrush" Color="#06B6D4"/>
<SolidColorBrush x:Key="FsBadgeImageBg" Color="#083344"/>
<SolidColorBrush x:Key="FsBadgeDocBrush" Color="#10B981"/>
<SolidColorBrush x:Key="FsBadgeDocBg" Color="#064E3B"/>
<SolidColorBrush x:Key="FsBadgeVideoBrush" Color="#F59E0B"/>
<SolidColorBrush x:Key="FsBadgeVideoBg" Color="#451A03"/>
<SolidColorBrush x:Key="FsBadgeAudioBrush" Color="#A855F7"/>
<SolidColorBrush x:Key="FsBadgeAudioBg" Color="#3B0764"/>
<SolidColorBrush x:Key="FsBadgeArchiveBrush" Color="#EC4899"/>
<SolidColorBrush x:Key="FsBadgeArchiveBg" Color="#500724"/>
<!-- Dark Instrument 정밀 계측기 랙마운트 카드 스타일 -->
<Style x:Key="FsInstrumentCardStyle" TargetType="Border">
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsBorderHairline}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="8"/>
<Setter Property="Padding" Value="12,10"/>
</Style>
<!-- 손실 등급 토큰 (Radix dark; Container는 중립 회색 — 사용자 결정) -->
<SolidColorBrush x:Key="FsLossLosslessDot" Color="#30A46C"/>
<SolidColorBrush x:Key="FsLossLosslessText" Color="#3DD68C"/>
<SolidColorBrush x:Key="FsLossLosslessBg" Color="#132D21"/>
<SolidColorBrush x:Key="FsLossContainerDot" Color="#717784"/>
<SolidColorBrush x:Key="FsLossContainerText" Color="#A6ADC8"/>
<SolidColorBrush x:Key="FsLossContainerBg" Color="#23252A"/>
<SolidColorBrush x:Key="FsLossRecodeDot" Color="#FFC53D"/>
<SolidColorBrush x:Key="FsLossRecodeText" Color="#FFCA16"/>
<SolidColorBrush x:Key="FsLossRecodeBg" Color="#302008"/>
<SolidColorBrush x:Key="FsLossRasterizeDot" Color="#E5484D"/>
<SolidColorBrush x:Key="FsLossRasterizeText" Color="#FF9592"/>
<SolidColorBrush x:Key="FsLossRasterizeBg" Color="#3B1219"/>
<!-- 상태 시맨틱 토큰 (Radix dark scales) -->
<SolidColorBrush x:Key="FsStatusSuccess" Color="#30A46C"/>
<SolidColorBrush x:Key="FsStatusSuccessText" Color="#3DD68C"/>
<SolidColorBrush x:Key="FsStatusSuccessBg" Color="#132D21"/>
<SolidColorBrush x:Key="FsStatusWarn" Color="#FFC53D"/>
<SolidColorBrush x:Key="FsStatusWarnText" Color="#FFCA16"/>
<SolidColorBrush x:Key="FsStatusWarnBg" Color="#302008"/>
<SolidColorBrush x:Key="FsStatusDanger" Color="#E5484D"/>
<SolidColorBrush x:Key="FsStatusDangerText" Color="#FF9592"/>
<SolidColorBrush x:Key="FsStatusDangerBg" Color="#3B1219"/>
<SolidColorBrush x:Key="FsStatusInfo" Color="#0090FF"/>
<SolidColorBrush x:Key="FsStatusInfoText" Color="#70B8FF"/>
<SolidColorBrush x:Key="FsStatusInfoBg" Color="#0D2847"/>
<!-- Geist식 8% 투명 보더 -->
<SolidColorBrush x:Key="FsBorderHairline" Color="#14FFFFFF"/>
<!-- Font families -->
<FontFamily x:Key="FsFontSans">Inter, Segoe UI Variable Text, Segoe UI</FontFamily>
<FontFamily x:Key="FsFontMono">JetBrains Mono, Cascadia Mono, Consolas</FontFamily>
<!-- Typography styles -->
<Style x:Key="FsLabelStyle" TargetType="TextBlock">
<Setter Property="FontFamily" Value="{StaticResource FsFontSans}"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
</Style>
<Style x:Key="FsCaptionStyle" TargetType="TextBlock">
<Setter Property="FontFamily" Value="{StaticResource FsFontSans}"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="Foreground" Value="{StaticResource FsTextTertiary}"/>
</Style>
<Style x:Key="FsBodyStyle" TargetType="TextBlock">
<Setter Property="FontFamily" Value="{StaticResource FsFontSans}"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
</Style>
<Style x:Key="FsMonoStyle" TargetType="TextBlock">
<Setter Property="FontFamily" Value="{StaticResource FsFontMono}"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
</Style>
<!-- Fluent typography aliases (Used across dialogs) -->
<Style x:Key="TextSubtitle" TargetType="TextBlock" BasedOn="{StaticResource FsBodyStyle}">
<Setter Property="FontSize" Value="16"/>
<Setter Property="FontWeight" Value="SemiBold"/>
</Style>
<Style x:Key="TextCaption" TargetType="TextBlock" BasedOn="{StaticResource FsCaptionStyle}"/>
<Style x:Key="TextBody" TargetType="TextBlock" BasedOn="{StaticResource FsBodyStyle}"/>
<Style x:Key="TextBodyStrong" TargetType="TextBlock" BasedOn="{StaticResource FsBodyStyle}">
<Setter Property="FontWeight" Value="SemiBold"/>
</Style>
<!-- Slider style: 2px track, 14px round thumb, blue fill up to value -->
<Style x:Key="FsSliderStyle" TargetType="Slider">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{StaticResource FsAccentBlue}"/>
<Setter Property="MinHeight" Value="20"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="IsMoveToPointEnabled" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Slider">
<Grid>
<Border Height="2" CornerRadius="1"
Background="{StaticResource FsBorderStrong}"
VerticalAlignment="Center"/>
<Track x:Name="PART_Track">
<Track.DecreaseRepeatButton>
<RepeatButton Command="Slider.DecreaseLarge">
<RepeatButton.Template>
<ControlTemplate TargetType="RepeatButton">
<Border Height="2" CornerRadius="1"
Background="{StaticResource FsAccentBlue}"
VerticalAlignment="Center"/>
</ControlTemplate>
</RepeatButton.Template>
</RepeatButton>
</Track.DecreaseRepeatButton>
<Track.Thumb>
<Thumb>
<Thumb.Template>
<ControlTemplate TargetType="Thumb">
<Ellipse Width="14" Height="14"
Fill="{StaticResource FsTextPrimary}"/>
</ControlTemplate>
</Thumb.Template>
</Thumb>
</Track.Thumb>
<Track.IncreaseRepeatButton>
<RepeatButton Command="Slider.IncreaseLarge">
<RepeatButton.Template>
<ControlTemplate TargetType="RepeatButton">
<Border Background="Transparent"/>
</ControlTemplate>
</RepeatButton.Template>
</RepeatButton>
</Track.IncreaseRepeatButton>
</Track>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Tab pill style (Refined Segmented Control) -->
<Style x:Key="FsTabPillStyle" TargetType="ToggleButton">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="12,5"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontWeight" Value="Medium"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border x:Name="PART_Bd" CornerRadius="6"
Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
TextElement.Foreground="{TemplateBinding Foreground}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="PART_Bd" Property="Background" Value="#23262E"/>
<Setter TargetName="PART_Bd" Property="BorderBrush" Value="{StaticResource FsBorderHairline}"/>
<Setter TargetName="PART_Bd" Property="BorderThickness" Value="1"/>
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
<Setter Property="FontWeight" Value="SemiBold"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True"/>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter TargetName="PART_Bd" Property="Background" Value="#2A2E38"/>
<Setter TargetName="PART_Bd" Property="BorderBrush" Value="{StaticResource FsBorderSubtle}"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Segment button style (Skip / Rename / Replace) -->
<Style x:Key="FsSegmentStyle" TargetType="ToggleButton">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontWeight" Value="Medium"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border x:Name="PART_Bd" CornerRadius="4" Padding="0,6">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
TextElement.Foreground="{TemplateBinding Foreground}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurface}"/>
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Primary button (Processing Queue / Run) -->
<Style x:Key="FsPrimaryButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{StaticResource FsAccentCyan}"/>
<Setter Property="Foreground" Value="#090A0C"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="12"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="PART_Bd"
Background="{TemplateBinding Background}"
CornerRadius="6"
Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
TextElement.Foreground="{TemplateBinding Foreground}"
TextElement.FontSize="{TemplateBinding FontSize}"
TextElement.FontWeight="{TemplateBinding FontWeight}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="PART_Bd" Property="Opacity" Value="0.4"/>
<Setter Property="Cursor" Value="Arrow"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsAccentCyanHover}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Secondary button -->
<Style x:Key="FsSecondaryButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsBorderSubtle}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="12,6"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontWeight" Value="Medium"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="PART_Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="6"
Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
TextElement.Foreground="{TemplateBinding Foreground}"
TextElement.FontSize="{TemplateBinding FontSize}"
TextElement.FontWeight="{TemplateBinding FontWeight}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Tab badge (Refined micro badge) -->
<Style x:Key="FsTabBadgeStyle" TargetType="Border">
<Setter Property="CornerRadius" Value="4"/>
<Setter Property="Padding" Value="5,1"/>
<Setter Property="Background" Value="#14FFFFFF"/>
</Style>
<!-- Path input box -->
<Style x:Key="FsPathInputStyle" TargetType="TextBox">
<Setter Property="Background" Value="{StaticResource FsBgInput}"/>
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsBorderSubtle}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="10,8"/>
<Setter Property="FontFamily" Value="{StaticResource FsFontMono}"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="CaretBrush" Value="{StaticResource FsTextPrimary}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="6"
Padding="{TemplateBinding Padding}">
<ScrollViewer x:Name="PART_ContentHost"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- PasswordBox (API 키 입력) -->
<Style x:Key="FsPasswordInputStyle" TargetType="PasswordBox">
<Setter Property="Background" Value="{StaticResource FsBgInput}"/>
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsBorderSubtle}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="10,8"/>
<Setter Property="FontFamily" Value="{StaticResource FsFontMono}"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="CaretBrush" Value="{StaticResource FsTextPrimary}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="PasswordBox">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="6"
Padding="{TemplateBinding Padding}">
<ScrollViewer x:Name="PART_ContentHost"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="BorderBrush" Value="{StaticResource FsAccentBlue}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- 손실 등급 dot (8px 원) -->
<Style x:Key="FsLossDotStyle" TargetType="Ellipse">
<Setter Property="Width" Value="8"/>
<Setter Property="Height" Value="8"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<!-- ============================================================
UX polish 스타일 (단계 1) — Linear/Geist 영감, 절제된 확장
============================================================ -->
<!-- 숫자/통계용: 모노 + tabular 숫자 정렬(자리 흔들림 방지) -->
<Style x:Key="FsNumStyle" TargetType="TextBlock" BasedOn="{StaticResource FsMonoStyle}">
<Setter Property="Typography.NumeralAlignment" Value="Tabular"/>
<Setter Property="Typography.NumeralStyle" Value="Lining"/>
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
</Style>
<!-- 손실 등급 pill: Background는 코드에서 FsLoss*Bg 주입 -->
<Style x:Key="FsLossPillStyle" TargetType="Border">
<Setter Property="CornerRadius" Value="4"/>
<Setter Property="Padding" Value="6,1"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<!-- 큐/이력 row 글래스 카드: Neo Glass + 림라이트 보더 + 부드러운 호버 글로우 -->
<Style x:Key="FsListRowStyle" TargetType="Border">
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
<Setter Property="CornerRadius" Value="10"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrush}"/>
<Setter Property="Margin" Value="0,0,0,8"/>
<Setter Property="Padding" Value="12,10"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrushHover}"/>
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="0.88" To="1" Duration="0:0:0.12"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
<!-- 32x32 아이콘 버튼(설정, 삭제): 투명 → hover surface, radius 6 -->
<Style x:Key="FsIconButtonStyle" TargetType="Button">
<Setter Property="Width" Value="32"/>
<Setter Property="Height" Value="32"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontSize" Value="15"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="PART_Bd"
Background="{TemplateBinding Background}"
CornerRadius="6">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
TextElement.Foreground="{TemplateBinding Foreground}"
TextElement.FontSize="{TemplateBinding FontSize}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="PART_Bd" Property="Opacity" Value="0.4"/>
<Setter Property="Cursor" Value="Arrow"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Neo Glass Card Shell (Windows 11 Fluent 2 Acrylic, radius 12, 림라이트 보더) -->
<Style x:Key="FsCardStyle" TargetType="Border">
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrush}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="12"/>
<Setter Property="Padding" Value="16"/>
<Setter Property="Margin" Value="0,0,0,16"/>
</Style>
<!-- Double-Bezel (Doppelrand) Machine-Hardware Container Styles (high-end-visual-design Section 4) -->
<Style x:Key="FsDoubleBezelShellStyle" TargetType="Border">
<Setter Property="Background" Value="#10131B"/>
<Setter Property="BorderBrush" Value="{StaticResource FsBorderHairline}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="14"/>
<Setter Property="Padding" Value="4"/>
<Setter Property="Margin" Value="0,0,0,16"/>
</Style>
<Style x:Key="FsDoubleBezelCoreStyle" TargetType="Border">
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrush}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="10"/>
<Setter Property="Padding" Value="14"/>
</Style>
<!-- Physical <kbd> Keycap Shortcut Style (minimalist-ui Section 5) -->
<Style x:Key="FsKbdStyle" TargetType="Border">
<Setter Property="Background" Value="{StaticResource FsBgInput}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsBorderStrong}"/>
<Setter Property="BorderThickness" Value="1,1,2,1"/>
<Setter Property="CornerRadius" Value="4"/>
<Setter Property="Padding" Value="6,2"/>
<Setter Property="Margin" Value="0,0,4,0"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<!-- Island Button-in-Button Primary Launch CTA Style (high-end-visual-design Section 4.B) -->
<LinearGradientBrush x:Key="FsIslandButtonGlow" StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#0284C7" Offset="0.0"/>
<GradientStop Color="#0369A1" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="FsIslandButtonGlowHover" StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#0EA5E9" Offset="0.0"/>
<GradientStop Color="#0284C7" Offset="1.0"/>
</LinearGradientBrush>
<Style x:Key="FsIslandPrimaryButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{StaticResource FsIslandButtonGlow}"/>
<Setter Property="Foreground" Value="#FFFFFF"/>
<Setter Property="BorderBrush" Value="#4038BDF8"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Height" Value="44"/>
<Setter Property="Padding" Value="16,0,10,0"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="PART_Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="10"
Padding="{TemplateBinding Padding}">
<Grid VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Column="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
TextElement.Foreground="{TemplateBinding Foreground}"
TextElement.FontSize="{TemplateBinding FontSize}"
TextElement.FontWeight="{TemplateBinding FontWeight}"/>
<Border Grid.Column="1" Margin="8,0,0,0"
Width="26" Height="26" CornerRadius="13"
Background="#22FFFFFF"
VerticalAlignment="Center" HorizontalAlignment="Right">
<ui:SymbolIcon Symbol="ArrowRight24" FontSize="13"
Foreground="#FFFFFF"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="PART_Bd" Property="Opacity" Value="0.45"/>
<Setter Property="Cursor" Value="Arrow"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsIslandButtonGlowHover}"/>
<Setter TargetName="PART_Bd" Property="BorderBrush" Value="#8038BDF8"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- 실시간 기술 스펙 칩 (Live Spec Chip) 캡슐 스타일 -->
<Style x:Key="FsSpecChipStyle" TargetType="Border">
<Setter Property="Background" Value="{StaticResource FsAccentCyanBg}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsAccentCyan}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="6"/>
<Setter Property="Padding" Value="8,3"/>
<Setter Property="Margin" Value="0,0,6,6"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<!-- Standard Toolbar Button (Height 32px, unified icon+text vertical alignment) -->
<Style x:Key="FsToolbarButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrush}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Height" Value="32"/>
<Setter Property="Padding" Value="12,0"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontWeight" Value="Medium"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="PART_Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="8"
Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
TextElement.Foreground="{TemplateBinding Foreground}"
TextElement.FontSize="{TemplateBinding FontSize}"
TextElement.FontWeight="{TemplateBinding FontWeight}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
<Setter TargetName="PART_Bd" Property="BorderBrush" Value="{StaticResource FsGlassBorderBrushHover}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="PART_Bd" Property="Opacity" Value="0.4"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Windows 11 Fluent 2 Unified TitleBar Style (Zero Vertical Misalignment & True Caption Centering) -->
<Style TargetType="{x:Type ui:TitleBar}">
<Setter Property="Height" Value="42"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
<Setter Property="FontFamily" Value="{StaticResource FsFontSans}"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="ButtonsForeground" Value="#D0D5DD"/>
<Setter Property="ButtonsBackground" Value="Transparent"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ui:TitleBar}">
<Grid Background="{TemplateBinding Background}" Name="PART_MainGrid"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Left Icon Area -->
<Grid Name="TitleGrid" Margin="{TemplateBinding Padding}" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="0">
<ContentPresenter Content="{TemplateBinding Icon}" Name="PART_Icon" Height="18" Width="18"
VerticalAlignment="Center" Focusable="False"
RenderOptions.BitmapScalingMode="HighQuality"
AutomationProperties.AutomationId="TitleBarIcon"/>
</Grid>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- Header (Tabs + Telemetry) or Title (when Header is string or TextBlock) -->
<ContentPresenter Content="{TemplateBinding Header}"
Margin="16,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Grid.Column="0"/>
<!-- CenterContent (Wide Native Drag Area) -->
<ContentPresenter Content="{TemplateBinding CenterContent}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="Center" Grid.Column="1"/>
<!-- TrailingContent (Action Buttons) -->
<ContentPresenter Content="{TemplateBinding TrailingContent}" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="2"/>
<!-- Window Control Buttons: Stretch full height, icons centered on exact same centerline -->
<Grid HorizontalAlignment="Right" VerticalAlignment="Stretch" Grid.Column="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ui:TitleBarButton ButtonType="Help" Name="PART_HelpButton" AutomationProperties.AutomationId="TitleBarHelpButton" Grid.Column="0" VerticalAlignment="Stretch" Height="Auto" Width="46" Background="Transparent" Foreground="{TemplateBinding ButtonsForeground}" ButtonsForeground="{TemplateBinding ButtonsForeground}"/>
<ui:TitleBarButton ButtonType="Minimize" Name="PART_MinimizeButton" AutomationProperties.AutomationId="TitleBarMinimizeButton" Grid.Column="1" VerticalAlignment="Stretch" Height="Auto" Width="46" Background="Transparent" Foreground="{TemplateBinding ButtonsForeground}" ButtonsForeground="{TemplateBinding ButtonsForeground}"/>
<ui:TitleBarButton ButtonType="Maximize" Name="PART_MaximizeButton" IsHitTestVisible="True" AutomationProperties.AutomationId="TitleBarMaximizeButton" Grid.Column="2" VerticalAlignment="Stretch" Height="Auto" Width="46" Background="Transparent" Foreground="{TemplateBinding ButtonsForeground}" ButtonsForeground="{TemplateBinding ButtonsForeground}"/>
<ui:TitleBarButton ButtonType="Close" MouseOverButtonsForeground="#FFFFFFFF" MouseOverBackground="#E81123" Name="PART_CloseButton" AutomationProperties.AutomationId="TitleBarCloseButton" Grid.Column="4" VerticalAlignment="Stretch" Height="Auto" Width="46" Background="Transparent" Foreground="{TemplateBinding ButtonsForeground}" ButtonsForeground="{TemplateBinding ButtonsForeground}"/>
</Grid>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Icon" Value="{x:Null}">
<Setter TargetName="TitleGrid" Property="Visibility" Value="Collapsed"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="ShowMaximize" Value="True"/>
<Condition Property="IsMaximized" Value="True"/>
</MultiTrigger.Conditions>
<Setter TargetName="PART_MaximizeButton" Property="ButtonType" Value="Restore"/>
</MultiTrigger>
<Trigger Property="ShowHelp" Value="False">
<Setter TargetName="PART_HelpButton" Property="Visibility" Value="Collapsed"/>
</Trigger>
<Trigger Property="ShowMinimize" Value="False">
<Setter TargetName="PART_MinimizeButton" Property="Visibility" Value="Collapsed"/>
</Trigger>
<Trigger Property="ShowMaximize" Value="False">
<Setter TargetName="PART_MaximizeButton" Property="Visibility" Value="Collapsed"/>
</Trigger>
<Trigger Property="ShowClose" Value="False">
<Setter TargetName="PART_CloseButton" Property="Visibility" Value="Collapsed"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>