diff --git a/data/resources/style.css b/data/resources/style.css index be6c5dc..1fa9b02 100644 --- a/data/resources/style.css +++ b/data/resources/style.css @@ -1,8 +1,9 @@ -/* Status badges */ +/* ===== Status Badges ===== */ .status-badge { - border-radius: 8px; - padding: 2px 8px; - font-size: 8pt; + border-radius: 9px; + padding: 3px 10px; + min-height: 18px; + font-size: 0.8em; font-weight: 600; } @@ -31,26 +32,80 @@ color: @window_fg_color; } -/* App cards in grid view */ +/* Badge with icon prefix */ +.status-badge-with-icon { + border-radius: 9px; + padding: 3px 10px; + min-height: 18px; + font-size: 0.8em; + font-weight: 600; +} + +.status-badge-with-icon.success { + background: @success_bg_color; + color: @success_fg_color; +} + +.status-badge-with-icon.warning { + background: @warning_bg_color; + color: @warning_fg_color; +} + +.status-badge-with-icon.error { + background: @error_bg_color; + color: @error_fg_color; +} + +.status-badge-with-icon.info { + background: @accent_bg_color; + color: @accent_fg_color; +} + +.status-badge-with-icon.neutral { + background: @card_shade_color; + color: @window_fg_color; +} + +/* ===== App Cards (Grid View) ===== */ .app-card { - padding: 12px; - border-radius: 12px; + padding: 14px; + border-radius: 14px; background: @card_bg_color; - transition: background 150ms ease; + border: 1px solid alpha(@window_fg_color, 0.08); + transition: all 150ms ease; } .app-card:hover { - background: @headerbar_shade_color; + background: mix(@card_bg_color, @window_fg_color, 0.04); + box-shadow: 0 2px 8px alpha(black, 0.06); } -.app-card-name { - font-weight: 600; - font-size: 10pt; +.app-card:active { + background: mix(@card_bg_color, @window_fg_color, 0.08); } -.app-card-version { - font-size: 8pt; - opacity: 0.7; +/* Focus indicator for grid cards */ +flowboxchild:focus-visible .app-card { + outline: 2px solid @accent_bg_color; + outline-offset: 3px; +} + +/* ===== WCAG AAA Focus Indicators ===== */ +button:focus-visible, +togglebutton:focus-visible, +menubutton:focus-visible, +checkbutton:focus-visible, +switch:focus-visible, +entry:focus-visible, +searchentry:focus-visible, +spinbutton:focus-visible { + outline: 2px solid @accent_bg_color; + outline-offset: 2px; +} + +row:focus-visible { + outline: 2px solid @accent_bg_color; + outline-offset: -2px; } /* Badge row in app cards */ @@ -58,15 +113,107 @@ margin-top: 4px; } -/* Detail view headings */ -.heading { +/* Letter-circle fallback icon */ +.letter-icon { + border-radius: 50%; font-weight: 700; - font-size: 11pt; - opacity: 0.8; + font-size: 1.4em; } -/* Monospace text for paths and hashes */ -.monospace { - font-family: monospace; - font-size: 9pt; +/* Integration emblem on card icon */ +.integration-emblem { + background: @success_bg_color; + color: @success_fg_color; + border-radius: 50%; + padding: 2px; + min-width: 16px; + min-height: 16px; +} + +/* ===== Detail View Banner ===== */ +.detail-banner { + padding: 12px 0; +} + +/* ===== Quick Action Pills ===== */ +.quick-action-pill { + border-radius: 18px; + padding: 6px 16px; +} + +/* ===== Compatibility Warning Banner ===== */ +.compat-warning-banner { + background: alpha(@warning_bg_color, 0.15); + border-radius: 12px; + padding: 12px; + border: 1px solid alpha(@warning_bg_color, 0.3); +} + +/* ===== Dark Mode Differentiation ===== */ +@media (prefers-color-scheme: dark) { + .app-card { + border: 1px solid alpha(@window_fg_color, 0.12); + } + + .app-card:hover { + box-shadow: 0 2px 8px alpha(black, 0.15); + background: mix(@card_bg_color, @window_fg_color, 0.06); + } + + .compat-warning-banner { + background: alpha(@warning_bg_color, 0.1); + border: 1px solid alpha(@warning_bg_color, 0.2); + } +} + +/* ===== High Contrast Mode (WCAG AAA 1.4.6) ===== */ +@media (prefers-contrast: more) { + .app-card { + border: 2px solid @window_fg_color; + } + + flowboxchild:focus-visible .app-card { + outline-width: 3px; + } + + button:focus-visible, + togglebutton:focus-visible, + menubutton:focus-visible, + checkbutton:focus-visible, + switch:focus-visible, + entry:focus-visible, + searchentry:focus-visible, + spinbutton:focus-visible { + outline-width: 3px; + } + + row:focus-visible { + outline-width: 3px; + } + + .status-badge, + .status-badge-with-icon { + border: 1px solid currentColor; + } + + .compat-warning-banner { + border: 2px solid @warning_bg_color; + } +} + +/* ===== Reduced Motion (WCAG AAA 2.3.3) ===== */ +@media (prefers-reduced-motion: reduce) { + * { + transition-duration: 0 !important; + transition-delay: 0 !important; + animation-duration: 0 !important; + animation-delay: 0 !important; + } +} + +/* ===== Minimum Target Size (WCAG 2.5.8) ===== */ +button.flat.circular, +button.flat:not(.pill):not(.suggested-action):not(.destructive-action) { + min-width: 24px; + min-height: 24px; }