/** * @file compare.css * @brief Stylesheet für die Produktvergleichsseite. * * Diese Datei enthält alle spezifischen Styles für die Darstellung * von zu vergleichenden Produkten in einer übersichtlichen Tabelle. * Sie definiert Farben, Ränder, Schatten und Hover-Effekte für * ein ansprechendes Dark-Mode-Design. */ /** * @brief Hauptcontainer für die Vergleichsseite. * * Setzt den oberen Abstand und das allgemeine Padding für die Seite. */ .compare-page { margin-top: 2rem; padding: 1rem; } /** * @brief Stil für den Seitentitel der Vergleichsseite. * * Definiert Schriftgröße, Ausrichtung, Farbe und Schriftstärke. */ .compare-title { font-size: 2.5rem; margin-bottom: 2rem; text-align: center; color: #f8fafc; font-weight: 700; } /** * @brief Styling für dem Fallstrick "Leerer Vergleich". * * Wird angezeigt, wenn keine Produkte zum Vergleich ausgewählt wurden. * Enthält ein hervorgehobenes Box-Design mit Hintergrund und Schatten. */ .compare-empty { text-align: center; color: #cbd5e1; margin-top: 3rem; background: #1e293b; padding: 3rem; border-radius: 1.5rem; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.4); } /** * @brief Titel-Stil für Produktkategorien beim Vergleich. * * Unterteilt die Tabelle grafisch nach Kategorien mit entsprechenden Rändern. */ .compare-category-title { margin-top: 3rem; margin-bottom: 1.5rem; font-size: 1.8rem; color: #38bdf8; border-bottom: 2px solid rgba(51, 65, 85, 0.5); padding-bottom: 0.8rem; } /** * @brief Wrapper für die scrollbare Vergleichstabelle. * * Ermöglicht horizontales Scrollen bei vielen Produkten auf kleinen Bildschirmen * und setzt das äußere Erscheinungsbild (Hintergrund, Rahmen, Schatten). */ .compare-table-wrapper { overflow-x: auto; background: #1e293b; border-radius: 1.5rem; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.4); padding: 0; margin-bottom: 3rem; border: 1px solid rgba(255, 255, 255, 0.05); } /** * @brief Grund-Styling der Vergleichstabelle. * * Definiert Mindestbreite und reguliert die Zellabstände (Border-Collapse). */ .compare-table { width: 100%; border-collapse: separate; border-spacing: 0; min-width: 800px; } /** * @brief Stile für Tabellenköpfe und Datenzellen. * * Fügt Ränder, Abstände und zentrierte Ausrichtung sowie die Textfarbe hinzu. */ .compare-table th, .compare-table td { padding: 1.5rem 1rem; text-align: center; border-bottom: 1px solid rgba(51, 65, 85, 0.5); color: #cbd5e1; vertical-align: middle; } /** * @brief Entfernt den unteren Rand für die letzte Tabellenzeile. */ .compare-table tbody tr:last-child td { border-bottom: none; } /** * @brief Styling für die erste Spalte (Eigenschaftsnamen). * * Fixiert die Spalte links (Sticky) für leichteres horizontales Scrollen. */ .compare-table th:first-child, .compare-table td:first-child { text-align: left; font-weight: 600; position: sticky; left: 0; background: #1e293b; z-index: 2; color: #f8fafc; border-right: 1px solid rgba(51, 65, 85, 0.5); box-shadow: 4px 0 6px -2px rgba(0, 0, 0, 0.2); } /** * @brief Styling für den Tabellenkopf. * * Hebt die Kopfzeile farblich vom Rest der Tabelle ab. */ .compare-table th { background: #0f172a; font-weight: bold; color: #f8fafc; padding-top: 2rem; padding-bottom: 2rem; } /** * @brief Spezifisches Styling für die obere linke Zelle im Tabellenkopf. * * Erhöht den z-Index, damit sie beim Scrollen immer oben liegt. */ .compare-table th:first-child { background: #0f172a; z-index: 3; font-size: 1.2rem; } /** * @brief Hover-Effekt für Tabellenzeilen im Körper (Datenzellen). * * Hebt die gesamte Zeile hervor, wenn der Benutzer darüber fährt. */ .compare-table tbody tr:hover td { background: #2a3a52; } /** * @brief Hover-Effekt für die erste Zelle in der hovernden Tabellenzeile. * * Sorgt für eine konsistente Hervorhebung, auch bei der fixierten Spalte. */ .compare-table tbody tr:hover td:first-child { background: #2a3a52; } /** * @brief Styling für das Produktbild im Tabellenkopf. * * Passt die Bildgröße an, setzt einen hellen Verlaufshintergrund und * implementiert einen abgerundeten Rahmen sowie eine Größenübergangsanimation. */ .compare-product-img { height: 140px; object-fit: contain; margin-bottom: 1.2rem; border-radius: 0.8rem; background: linear-gradient(145deg, #ffffff, #f1f5f9); padding: 0.8rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.2); transition: transform 0.3s ease; } /** * @brief Hover-Animation für das Produktbild. * * Vergrößert das Bild leicht, wenn der Nutzer mit der Maus darüber fährt. */ .compare-product-img:hover { transform: scale(1.05); } /** * @brief Styling für den Produktnamen. * * Definiert Farbe, Schriftgröße und Zeilenhöhe für den anklickbaren Produktnamen. */ .compare-product-name { font-size: 1.15rem; color: #60a5fa; text-decoration: none; transition: color 0.2s; display: block; margin-bottom: 1rem; font-weight: 600; line-height: 1.4; } /** * @brief Hover-Effekt für den Produktnamen. * * Ändert die Textfarbe für visuelles Feedback beim Drüberfahren. */ .compare-product-name:hover { color: #93c5fd; } /** * @brief Styling für den Button zum Entfernen eines Produkts aus dem Vergleich. * * Roter Button (Pill-Shape) mit Schatten und Übergangseffekten. */ .compare-remove-btn { background: #ef4444; color: white; border: none; padding: 0.6rem 1.2rem; border-radius: 9999px; /* Pill shape */ cursor: pointer; font-size: 0.85rem; font-weight: 600; transition: all 0.2s; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } /** * @brief Hover-Effekt für den Entfernen-Button. * * Dunkelt das Rot ab, bewegt den Button leicht nach oben und vergrößert den Schatten. */ .compare-remove-btn:hover { background: #dc2626; transform: translateY(-1px); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); } /** * @brief Zebra-Streifen-Muster für gerade Tabellenzeilen. * * Wirkt sich nicht auf die fixierte erste Spalte aus, um die Lesbarkeit * dunkel schattierter Hintergründe aufrechtzuerhalten. */ .compare-table tbody tr:nth-child(even) td:not(:first-child) { background: rgba(15, 23, 42, 0.2); } /** * @brief Styling für längere Beschreibungstexte im Vergleich. * * Begrenzt die Breite, richtet den Text linksbündig aus und optimiert die Zeilenhöhe. */ .desc-text { text-align: left; display: inline-block; max-width: 300px; line-height: 1.6; font-size: 0.95rem; }