/* ===== Status Badges ===== */ .status-badge { border-radius: 9px; padding: 3px 10px; min-height: 18px; font-size: 0.8em; font-weight: 600; } .status-badge.success { background: @success_bg_color; color: @success_fg_color; } .status-badge.warning { background: @warning_bg_color; color: @warning_fg_color; } .status-badge.error { background: @error_bg_color; color: @error_fg_color; } .status-badge.info { background: @accent_bg_color; color: @accent_fg_color; } .status-badge.neutral { background: @card_shade_color; color: @window_fg_color; } /* 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; } /* ===== Drop Overlay ===== */ .drop-overlay-scrim { background: alpha(@window_bg_color, 0.75); } .drop-zone-card { background: @card_bg_color; border-radius: 16px; padding: 48px 40px; border: 2px dashed alpha(@accent_bg_color, 0.5); box-shadow: 0 8px 32px alpha(black, 0.15); } .drop-zone-icon { color: @accent_bg_color; opacity: 0.7; } /* ===== Card View (using libadwaita .card) ===== */ .card { padding: 24px 20px; } flowboxchild:focus-visible .card { outline: 2px solid @accent_bg_color; outline-offset: 3px; } /* App card status indicators */ .status-ok { border: 1px solid alpha(@success_bg_color, 0.4); } .status-attention { border: 1px solid alpha(@warning_bg_color, 0.4); } /* Rounded icon clipping for list view */ .icon-rounded { border-radius: 8px; } /* ===== 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; } /* Letter-circle fallback icon */ .letter-icon { border-radius: 50%; font-weight: 700; font-size: 1.4em; } /* 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: 18px 0; background-image: linear-gradient( to bottom, alpha(@accent_bg_color, 0.08), transparent ); border-radius: 12px; margin-bottom: 6px; } /* ===== 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); } /* ===== Reduced Motion (WCAG AAA 2.3.3) ===== */ /* Note: GTK CSS does not support prefers-reduced-motion or !important. Reduced motion is handled by the GTK toolkit settings instead (gtk-enable-animations). */ /* ===== 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; } /* ===== Category Filter Tiles ===== */ .category-tile { padding: 14px 18px; min-height: 48px; border-radius: 12px; border: none; font-weight: 600; font-size: 0.9em; color: white; } .category-tile image { color: white; opacity: 0.9; } /* Colored backgrounds per category */ .cat-accent { background: alpha(@accent_bg_color, 0.7); } .cat-purple { background: alpha(@purple_3, 0.65); } .cat-red { background: alpha(@red_3, 0.6); } .cat-green { background: alpha(@success_bg_color, 0.55); } .cat-orange { background: alpha(@orange_3, 0.65); } .cat-blue { background: alpha(@blue_3, 0.6); } .cat-amber { background: alpha(@warning_bg_color, 0.6); } .cat-neutral { background: alpha(@window_fg_color, 0.2); } /* Hover: intensify the background */ .cat-accent:hover { background: alpha(@accent_bg_color, 0.85); } .cat-purple:hover { background: alpha(@purple_3, 0.8); } .cat-red:hover { background: alpha(@red_3, 0.75); } .cat-green:hover { background: alpha(@success_bg_color, 0.7); } .cat-orange:hover { background: alpha(@orange_3, 0.8); } .cat-blue:hover { background: alpha(@blue_3, 0.75); } .cat-amber:hover { background: alpha(@warning_bg_color, 0.75); } .cat-neutral:hover { background: alpha(@window_fg_color, 0.3); } /* Checked: full-strength background + light border for emphasis */ .cat-accent:checked { background: @accent_bg_color; } .cat-purple:checked { background: @purple_3; } .cat-red:checked { background: @red_3; } .cat-green:checked { background: @success_bg_color; } .cat-orange:checked { background: @orange_3; } .cat-blue:checked { background: @blue_3; } .cat-amber:checked { background: @warning_bg_color; } .cat-neutral:checked { background: alpha(@window_fg_color, 0.45); } /* Focus indicator on the tile itself */ flowboxchild:focus-visible .category-tile { outline: 2px solid @accent_bg_color; outline-offset: 2px; } /* ===== Catalog Tile Cards ===== */ .catalog-tile { border: 1px solid alpha(@window_fg_color, 0.12); border-radius: 12px; } .catalog-tile:hover { border-color: alpha(@accent_bg_color, 0.5); } /* ===== Featured Banner Cards ===== */ .catalog-featured-card { border-radius: 12px; border: 1px solid alpha(@window_fg_color, 0.15); padding: 0; } .catalog-featured-card:hover { border-color: alpha(@accent_bg_color, 0.5); } /* Screenshot area inside featured card */ .catalog-featured-screenshot { border-radius: 11px 11px 0 0; border: none; background: alpha(@window_fg_color, 0.04); } .catalog-featured-screenshot picture { border-radius: 11px 11px 0 0; } /* ===== Destructive Context Menu Item ===== */ .destructive-context-item { color: @error_fg_color; background: alpha(@error_bg_color, 0.85); border: none; box-shadow: none; padding: 6px 12px; border-radius: 6px; min-height: 28px; } .destructive-context-item:hover { background: @error_bg_color; } /* ===== Screenshot Lightbox ===== */ window.lightbox { background-color: rgba(0, 0, 0, 0.92); border-radius: 12px; } window.lightbox .lightbox-counter { background: rgba(0, 0, 0, 0.6); color: white; border-radius: 12px; padding: 4px 12px; font-size: 0.85em; } window.lightbox .lightbox-nav { min-width: 48px; min-height: 48px; } /* ===== Catalog Tile Stats Row ===== */ .catalog-stats-row { font-size: 0.8em; color: alpha(@window_fg_color, 0.7); } .catalog-stats-row image { opacity: 0.65; } /* ===== Detail Page Stat Cards ===== */ .stat-card { background: alpha(@window_fg_color, 0.06); border-radius: 12px; padding: 14px 16px; border: 1px solid alpha(@window_fg_color, 0.08); } .stat-card.stat-stars { background: alpha(@warning_bg_color, 0.12); border-color: alpha(@warning_bg_color, 0.2); } .stat-card.stat-stars image { color: @warning_bg_color; opacity: 0.85; } .stat-card.stat-version { background: alpha(@accent_bg_color, 0.1); border-color: alpha(@accent_bg_color, 0.18); } .stat-card.stat-version image { color: @accent_bg_color; opacity: 0.85; } .stat-card.stat-downloads { background: alpha(@success_bg_color, 0.1); border-color: alpha(@success_bg_color, 0.18); } .stat-card.stat-downloads image { color: @success_bg_color; opacity: 0.85; } .stat-card.stat-released { background: alpha(@purple_3, 0.12); border-color: alpha(@purple_3, 0.2); } .stat-card.stat-released image { color: @purple_3; opacity: 0.85; } .stat-card .stat-value { font-weight: 700; font-size: 1.15em; } .stat-card .stat-label { font-size: 0.8em; color: alpha(@window_fg_color, 0.6); } .stat-card image { opacity: 0.55; }