:root { /* Farben */ --primary-color: #007bff; /* Hauptfarbe (Blau) */ --secondary-color: #6c757d; /* Sekundärfarbe (Grau) */ --success-color: #28a745; /* Erfolgsfarbe (Grün) */ --error-color: #dc3545; /* Fehlerfarbe (Rot) */ --info-color: #17a2b8; /* Info-Farbe (Hellblau) */ --light-gray: #f8f9fa; /* Helles Grau für Hintergründe */ --medium-gray: #ced4da; /* Mittleres Grau für Rahmen */ --dark-gray: #333; /* Dunkles Grau für Text */ --body-bg-color: #f4f4f4; --text-color: #333; --blink-text-color: #2eb82e; /* Typografie */ --base-font-size: 1rem; --font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; /* Abstände */ --base-padding: 10px; --base-margin: 10px; /* Rahmen */ --border-radius: 5px; /* Schatten */ --box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Transparenz */ --base-opacity: 0.8; } /* Grundlegende Styles */ body { font-family: var(--font-family); background-image: url('bg.webp'); background-size: cover; background-repeat: no-repeat; background-position: center; background-attachment: fixed; /* background-color: var(--body-bg-color); */ color: var(--text-color); margin: 0; padding: 0; font-size: var(--base-font-size); } .container { max-width: 1200px; margin: auto; padding: 20px; } /* Header- und Navigationsbereich */ .banner img { border-radius: var(--border-radius); box-shadow: var(--box-shadow); } .nav-buttons a { background-color: var(--primary-color); color: white; border: none; padding: var(--base-padding) calc(var(--base-padding) * 2); text-decoration: none; font-weight: bold; border-radius: var(--border-radius); transition: background-color 0.3s ease; } .nav-buttons a:hover { background-color: color-mix(in srgb, var(--primary-color) 40%, black); } /* Formulare */ .custom-bg { background-color: var(--light-gray); border-radius: var(--border-radius); box-shadow: var(--box-shadow); padding: var(--base-padding); } .form-label { font-weight: 600; } .form-control { border-radius: var(--border-radius); border: 1px solid var(--medium-gray); padding: var(--base-padding); } .form-control:focus { border-color: var(--primary-color); box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } .btn-primary { background-color: var(--primary-color); border-color: var(--primary-color); } .btn-primary:hover { background-color: color-mix(in srgb, var(--primary-color) 40%, black); border-color: color-mix(in srgb, var(--primary-color) 40%, black); } .btn-secondary { background-color: var(--secondary-color); border-color: var(--secondary-color); } .btn-secondary:hover { background-color: color-mix(in srgb, var(--secondary-color) 40%, black); border-color: color-mix(in srgb, var(--secondary-color) 40%, black); } /* Akkordeon */ .accordion-button { font-weight: bold; } .accordion-button:not(.collapsed) { color: var(--primary-color); } /* Fortschrittsnachricht */ #progressMessage { background-color: rgb(40 167 69 / 10%); /* Leicht transparentes Grün */ border: 1px solid rgb(40 167 69 / 80%); /* Passender Rahmen */ color: var(--blink-text-color); padding: 1rem; border-radius: var(--border-radius); font-weight: bold; text-align: center; animation: blink 1.5s infinite; margin-top: 1rem; } /* Blinken-Animation */ @keyframes blink { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } } /* Fortschrittsbalken */ #progressContainer { height: 30px; background-color: var(--light-gray); /* Hintergrund des Containers */ border-radius: var(--border-radius); /* Abgerundete Ecken */ overflow: hidden; /* Versteckt den Fortschrittsbalken, der über den Container hinausragt */ } #progressBar { background-color: var(--success-color); height: 100%; /* Füllt die Höhe des Containers */ line-height: 30px; /* Vertikal zentriert den Text */ color: white; text-align: center; /* Horizontal zentriert den Text */ transition: width 0.4s ease-in-out; /* Sanfter Übergang für die Breite */ } /* Bilder und Galerie */ #output img { margin-bottom: var(--base-margin); border-radius: var(--border-radius); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .image-thumbnail { border-radius: var(--border-radius); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); transition: transform 0.3s ease; cursor: pointer; } .image-thumbnail:hover { transform: scale(1.05); } .thumbnail-img { transition: transform 0.3s ease; cursor: pointer; } .thumbnail-img:hover { transform: scale(1.05); } /* Karten */ .card { border: none; border-radius: var(--border-radius); box-shadow: var(--box-shadow); } /* Modal */ .modal-content { border-radius: var(--border-radius); } .modal-header { background-color: var(--light-gray); } /* Toolbars */ .toolbar { background-color: white; padding: var(--base-padding); border: 1px solid var(--medium-gray); border-radius: var(--border-radius); margin-bottom: calc(var(--base-margin) * 2); display: flex; align-items: center; gap: var(--base-margin); } /* Auswahl-Checkboxes */ .select-item { cursor: pointer; } /* "Nach oben"-Button */ #scrollTopBtn { display: none; position: fixed; bottom: 20px; right: 20px; z-index: 99; border: none; background: transparent; cursor: pointer; transition: all 0.3s ease; opacity: var(--base-opacity); } #scrollTopBtn:hover { transform: translateY(-5px); box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); } /* "Nach oben"-Pfeil */ #scrollTopBtn img { width: 50px; height: 50px; border-radius: 50%; } /* Benachrichtigungs-Container */ .notification { position: fixed; top: 20px; left: 50%; transform: translateX(-50%); padding: var(--base-padding) calc(var(--base-padding) * 2); border: 1px solid var(--medium-gray); z-index: 1000; border-radius: var(--border-radius); color: white; font-weight: bold; opacity: var(--base-opacity); } .notification.success { background-color: var(--success-color); } .notification.error { background-color: var(--error-color); } .notification.info { background-color: var(--info-color); } /* Slideshow */ .carousel-item img { max-height: 85vh; object-fit: contain; } .btn-primary, .btn-secondary { padding: 8px 16px; font-size: 0.9rem; border-radius: var(--border-radius); } /* Zusätzliche Anpassungen für Slideshow */ .slideshow-modal .modal-content { background-color: #333; color: #fff; } .slideshow-modal .modal-header { border-bottom: 1px solid #666; } .slideshow-modal .modal-footer { border-top: 1px solid #666; } .slideshow-modal .btn-close { background-color: #fff; } .btn-sm { padding: 5px 10px; font-size: 0.8rem; } .btn-group .btn { margin-right: 5px; } #albumStats { max-width: 100%; width: 100%; height: auto; } #categoryStats { max-width: 100%; width: 100%; } #playSlideshow, #pauseSlideshow { background-color: transparent; border: none; padding: 0; } #playSlideshow i, #pauseSlideshow i { font-size: 1.5rem; color: var(--primary-color); } #playSlideshow:hover i, #pauseSlideshow:hover i { color: color-mix(in srgb, var(--primary-color) 40%, black); } /* Hover-Effekte für Download-Buttons */ .download-thumb:hover, .btn:hover { opacity: 1; transform: translateY(-2px); box-shadow: 0 2px 5px rgba(0,0,0,0.2); } .download-thumb { transition: all 0.3s ease; opacity: var(--base-opacity); } .btn { transition: all 0.3s ease; } .modal-body { text-align: center; } .error-placeholder { color: var(--error-color); font-weight: bold; margin-top: var(--base-margin); } .blink-text { animation: blinker 1s linear infinite; } @keyframes blinker { 50% { opacity: 0; } }