* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html, body {
  height: 100%;
  background-color:#f4f4f4;
}

body {
  display: flex;
  flex-direction: column;
  font-family: Arial, sans-serif;
}

header {
  background-color: #4CAF50;
  color: #fff;
  text-align: center;
  padding: 20px 10px;
}

footer {
  background-color: #4CAF50;
  color: #fff;
  padding: 20px 10px;
}

/* 2â€‘col, 2â€‘row grid */
.footer-grid {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  column-gap: 20px;
  row-gap: 10px;
  align-items: center;
  max-width: 1200px;
  margin: 0 auto;
}

/* Links (col 1 / row 1) */
.footer-links {
  grid-column: 1;
  grid-row: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 0;
}

/* inject a short-dash between links */
.footer-links a:not(:last-child)::after {
  content: "\2013";
  margin: 0 4px;
  color: #fff;
}

.footer-links a {
  color: #fff;
  text-decoration: none;
  font-size: 16px;
  transition: color 0.3s;
}

.footer-links a:hover {
  color: #ecf0f1;
}

/* Social icons (col 2 / row 1) */
.footer-social {
  grid-column: 2;
  grid-row: 1;
  justify-self: end;
  display: flex;
  gap: 15px;
}

.footer-social a {
  color: #fff;
  font-size: 20px;
  transition: color 0.3s, transform 0.3s;
}

.footer-social a i {
  font-size: 32px;  /* targets the <i> directly */
}

.footer-social a:hover {
  color: #e0e0e0;
  transform: scale(1.1);
}

/* Copyright (col 1 / row 2) */
.footer-copy {
  grid-column: 1;
  grid-row: 2;
  font-size: 14px;
}

/* Mobile: stack everything */
@media (max-width: 768px) {
  .footer-grid {
    grid-template-columns: 1fr;
  }
  .footer-social {
    justify-self: center;
  }
  .footer-copy {
    margin-top: 10px;
  }
}


.container {
  display: flex;
  flex: 1;
  flex-wrap: wrap;
}

nav, main, aside {
  padding: 10px 20px; /* Default padding */
}

@media (min-width: 1000px) {
  nav, main, aside {
    padding: 20px 20px;
  }
}

main {
  flex: 1;
  min-width: 300px;
  max-width: 100%;
  background-color: #f4f4f4;
}

aside {
  flex: 0 0 300px;
  background-color: #f4f4f4;
  position: sticky;
  top: 20px; /* Adjust this value based on header height */
  height: fit-content; /* Allows the aside to only be as tall as its content */
}

section {
	margin-bottom:20px;
}

p {
	margin-bottom:20px;
}

p:last-child {
    margin-bottom: 0;
}



a.link {
  color: #317234; /* DunkelgrÃ¼n, passend zur Designfarbe */
  text-decoration: none;
  font-weight: bold;
}

a.link:hover {
  color: #4caf50; /* Helleres GrÃ¼n beim Hover */
  text-decoration: underline;
}


.attraction {
	height:50px;
	overflow: hidden;
    text-overflow: ellipsis;
	font-size: 18px;
	display: flex;
	align-items: center;
}

.column_label {
	height:18px;
	font-size: 18px;
	margin-bottom:10px;
}

/* Dropdown menu hidden by default */
.dropdown-btn {
  display: none;
}

/* Uniform link styling with icons */
.menu li a {
  display: block;
  padding: 10px 15px;
  text-decoration: none;
  color: #333;
  border-bottom: 1px solid #ccc;
  background-color: #fff;
}

.menu li a i {
  margin-right: 10px;
}

.menu li a:hover {
  background-color: #e0e0e0;
}

/* Cookie Overlay */
.cookie-overlay {
	display:none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 10000;
}

.cookie-container {
    background-color: white;
    padding: 20px;
    border-radius: 10px;
    text-align: center;
    max-width: 400px;
    width: 100%;
}

.cookie-container p {
    margin-bottom: 20px;
    font-size: 16px;
}

.cookie-buttons {
    display: flex;
    justify-content: space-between;
}

#accept-cookies, #decline-cookies {
    padding: 10px 20px;
    background-color: #4CAF50;
    border: none;
    color: white;
    cursor: pointer;
    border-radius: 5px;
    transition: background-color 0.3s ease;
    width: 45%;
}

#decline-cookies {
    background-color: #f44336; /* Red background for decline button */
}

#accept-cookies:hover {
    background-color: #45a049;
}

#decline-cookies:hover {
    background-color: #d32f2f; /* Darker red on hover */
}



/* On small screens, show dropdown button and hide menu */
@media (max-width: 1200px) {
  .container {
    flex-direction: column;
  }

  .dropdown-btn {
	position: relative;
    display: block;
    background-color: #317234;
    color: #fff;
    padding: 10px;
    border: none;
    width: 100%;
    text-align: left;
    cursor: pointer;
  }
  
  .dropdown-btn::after {
    content: "\25BC"; /* The icon */
    position: absolute;
    right: 10px; /* Align the icon to the right */
    top: 50%; 
    transform: translateY(-50%); /* Vertically centers the icon */
  }

  .menu {
    display: none;
    list-style: none;
    padding: 0;
  }

  .menu.active {
    display: block;
  }
  
  nav {
    background-color: #f4f4f4;
  }
}

/* On larger screens, show the menu always */
@media (min-width: 1201px) {
  .menu {
    display: block;
    list-style: none;
    padding: 0;
  }
  
 
  nav {
    flex: 0 0 300px;
    background-color: #f4f4f4;
  }
}


@media (min-width: 1700px) {
    .container {
        padding-left: 150px; /* Space to the left of the nav */
        padding-right: 150px; /* Space to the right of the aside */
    }
}

@media (min-width: 2000px) {
    .container {
        padding-left: 300px; /* Space to the left of the nav */
        padding-right: 300px; /* Space to the right of the aside */
    }
}

@media (min-width: 2500px) {
    .container {
        padding-left: 400px; /* Space to the left of the nav */
        padding-right: 400px; /* Space to the right of the aside */
    }
}


@media (min-width: 3000px) {
    .container {
        padding-left: 800px; /* Space to the left of the nav */
        padding-right: 800px; /* Space to the right of the aside */
    }
}

@media (min-width: 3500px) {
    .container {
        padding-left: 900px; /* Space to the left of the nav */
        padding-right: 900px; /* Space to the right of the aside */
    }
}




/* White Box */

#box {
	position: relative;
    background-color: white;
    padding: 15px;
	margin-top: 5px;
    margin-bottom: 5px;
    border-radius: 8px;
}

/* General styles for the boxes */
#columns {
    display: flex;
    gap: 20px; /* Space between the boxes */
	margin-bottom:10px;
}

#columns .column {
    padding: 5px 0px;
    flex: 1; /* Each box takes equal width */
    min-width: 0; /* Ensure no minimum width for the boxes */
    text-align: center; /* Centers content inside each box */
}

/* Ensure boxes stack on small screens */
@media (max-width: 1000px) {
    #columns {
        flex-direction: column;
    }

    #columns .column {
        width: 100%; /* Each box takes full width */
        margin-bottom: 0px; /* Adds space between stacked boxes */
    }
}

/* Ensure boxes are beside each other on larger screens */
@media (min-width: 1001px) {
    #columns .column {
        flex-basis: 33.333%; /* Each box takes up exactly 1/3 of the width */
    }
}

#more-info {
			float: right;
            display: inline-block;
            padding: 8px 16px;             text-align: center;
            text-decoration: none;
            color: white;
            background-color: #4CAF50;
            border: 1px solid #317234; /* Thinner border */
            border-radius: 3px; /* Slightly rounded corners */
            transition: background-color 0.3s, border-color 0.3s;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); /* Optional shadow for depth */
			margin:5px;
}


#more-info:hover {
            background-color: #45a049; /* Slightly lighter green */
            border-color: #2c6e2f; /* Slightly darker green */
}

.clearfix {
    clear: both;
}


/*Slider*/


.slide {
    background-color: white;
    padding: 15px;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    width: 230px;
    text-align: center;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
}

.column .image-container {
    position: relative;
    width: 100%;

}

.slide .image-container {
    position: relative;
    width: 200px;
    height: 150px;
}

.image-container {
    position: relative;
    width: 100%;
}



.slide h4 {
	margin-top: 10px;
}

.slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 8px;
}

img.rounded {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 8px;
}

img.largeimage {
	max-width:400px; 
	width:100%; 
	max-height:300px; 
	object-fit: cover; 
	border-radius: 8px;
}

.caption {
	margin-bottom:20px; 
	color:#666; 
	font-size:14px;
}

.copyright {
    position: absolute;
    bottom: 5px;
    left: 5px;
    color: white;
    font-size: 12px; /* Reduced font size */
    background-color: rgba(0, 0, 0, 0.5); /* Background for readability */
    padding: 2px 5px;
    border-radius: 3px;
}

.slide .copyright {
    position: absolute;
    bottom: 5px;
    left: 5px;
    color: white;
    font-size: 8px; /* Reduced font size */
    background-color: rgba(0, 0, 0, 0.5); /* Background for readability */
    padding: 2px 5px;
    border-radius: 3px;
}

.column .copyright {
    position: absolute;
    bottom: 5px;
    left: 5px;
    color: white;
    font-size: 12px; /* Reduced font size */
    background-color: rgba(0, 0, 0, 0.5); /* Background for readability */
    padding: 2px 5px;
    border-radius: 3px;
}


#prevBtn, #nextBtn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background-color: rgba(0, 0, 0, 0.5);
    color: white;
    border: none;
    padding: 10px;
    cursor: pointer;
    z-index: 10;
}

#prevBtn {
    left: 10px;
}

#nextBtn {
    right: 10px;
}

.slider-container {
	position: relative;
	width: 100%;
	overflow: hidden;
	margin-top: 5px;
	margin-bottom: 5px;
}
.slider-wrapper {
	display: flex;
	transition: transform 0.5s ease;
	gap:20px;
	padding: 0px;
    scroll-behavior: smooth;
}

.nav-button {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	background-color: #333;
	color: #fff;
	border: none;
	padding: 10px;
	cursor: pointer;
	border-radius: 5px;
	font-size: 18px;
	z-index: 10; /* Ensure buttons are above the slides */
	width: 40px; /* Set a fixed width for buttons */
	height: 40px; /* Set a fixed height for buttons */
}
.nav-button.left {
	left: 10px; /* Position button inside the container */
}
.nav-button.right {
	right: 10px; /* Position button inside the container */
}

.mehr-details {
  display: inline-block;
  font-size: 14px; /* Keep it subtle and readable */
  color: #333; /* Dark gray for the text */
  text-decoration: none; /* Remove underline */
  padding: 5px 10px; /* Add padding for a button-like appearance */
  border: 1px solid #333; /* Border matches the text color */
  border-radius: 4px; /* Rounded corners for a modern look */
  background-color: #f5f5f5; /* Light gray background to match the page tone */
  transition: all 0.3s ease; /* Smooth hover effect */
  margin-top: 10px;
}

.mehr-details:hover {
  background-color: #4CAF50; /* Green hover color matching the header */
  color: white; /* White text for contrast */
  text-decoration: none; /* Ensure no underline on hover */
  border-color: #4CAF50; /* Match border with background on hover */
}

.mehr-details:active {
  background-color: #388E3C; /* Slightly darker green for active state */
  border-color: #388E3C; /* Active border matches the background */
}

.tooltip {
  position: relative;
  display: inline-block;
  cursor: pointer;
}

.tooltip .tooltip-text {
  visibility: hidden;
  width: 200px;
  background-color: #555;
  color: #fff;
  text-align: center;
  border-radius: 5px;
  padding: 5px 0;
  position: absolute;
  z-index: 1;
  top: 125%;
  right: 0; /* <- statt left: 50% */
  transform: none; /* <- kein Ãœberschieben mehr */
  opacity: 0;
  transition: opacity 0.3s;
}

.tooltip:hover .tooltip-text {
  visibility: visible;
  opacity: 1;
}

.tooltip .tooltip-text::after {
  content: '';
  position: absolute;
  bottom: 100%;
  right: 3px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent #555 transparent;
}
  
	form {
      display: flex;
      flex-direction: column;
    }
    label {
      margin-top: 20px;
      font-weight: bold;
    }
	
	label:first-child {
		margin-top:0px;
	}
	
    input, textarea {
      width: 100%;
      padding: 10px;
      margin-top: 5px;
      border: 1px solid #ccc;
      border-radius: 5px;
    }
	
	.captcha-container {
      display: flex;
      align-items: center;
      gap: 10px;
      margin-top: 0px;
    }
    .captcha-container img {
      max-height: 40px;
    }
	
    button {
      margin-top: 15px;
      padding: 10px;
      background: #4CAF50;
      color: white;
      border: none;
      border-radius: 5px;
      cursor: pointer;
      font-size: 16px;
    }
    button:hover {
      background: #45a049;
    }
    .captcha-container img {
      margin-top: 10px;
      max-width: 100px;
    }
	
	/* Allgemeine Fehlermeldung */
	.error {
		color: #D8000C;  /* Rote Farbe fÃ¼r die Fehlermeldung */
		background-color: #FFBABA;  /* Heller Hintergrund fÃ¼r die Meldung */
		border: 1px solid #D8000C;  /* Rand in der gleichen roten Farbe */
		padding: 10px;
		margin-top: 5px;
		font-size: 14px;
		border-radius: 5px;
		width: 100%;  /* Vollbreite des Containers */
		box-sizing: border-box;
	}

	/* Optional: Fehler nach einem Input-Feld hervorheben */
	input.error, textarea.error {
		border-color: #D8000C;
		background-color: transparent;  /* Keine Hintergrundfarbe */
		color: inherit;
	}

	/* Textarea Formatierung */
	textarea {
		resize: vertical;  /* Nur vertikal skalierbar */
	}
	
	table {
      width: 100%;
      border-collapse: collapse;
	  margin-bottom:20px;
    }
    th, td {
      padding: 8px;
      text-align: left;
      border: 1px solid #ddd;
    }
	
	
	 th {
	  cursor: pointer;
	  position: relative;
	  padding-right: 25px; /* Space for the sort arrow */
	}

	th.sortable:after {
	  content: " \25BC";
	  position: absolute;
	  right: 5px; /* Position the arrow at the far right */
	  top: 50%;
	  transform: translateY(-50%); /* Center the arrow vertically */
	}

	th.sorted-asc:after {
	  content: " \25B2";
	}

	th.sorted-desc:after {
	  content: " \25BC";
	}

    th.sorted {
      background-color: #e0e0e0;
    }
	
	@media (max-width: 600px) {
    /* Hide the 4th column on small screens */
		td:nth-child(2), th:nth-child(2) {
			display: none;
		}
    }

	@media (max-width: 1000px) {
	  .hidden-small {
		display: none !important;
	  }
	}
	
	@media (min-width: 1001px) {
	  .hidden-large {
		display: none !important;
	  }
	}
	
	/* chart js */
#chart-container {
  position: relative;
  height: 300px;
}

.spinner-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10;
  pointer-events: none;
}

.spinner {
  border: 8px solid #f4f4f4; /* Light grey */
  border-top: 8px solid #4caf50;
  border-radius: 50%;
  width: 60px;
  height: 60px;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}


/* news cards */

.news-cards {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
  justify-content: center;
}

/* Reset flex behavior on wide screens */
.news-card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  background: #fff;
  border-radius: 12px;
  padding: 1rem;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  width: calc(33.333% - 1rem); /* 3 columns with gap */
  box-sizing: border-box;
  transition: transform 0.2s ease;
  margin-top:5px;
  margin-bottom:5px;
}

.news-card img {
  width: 100%;
  height: auto;
  border-radius: 8px;
  margin-bottom: 0.75rem;
}

.news-card h3 {
  font-size: 1.1rem;
  margin-bottom: 0.5rem;
  margin-top:5px;
}

.news-card p {
  font-size: 0.95rem;
  color: #333;
  margin-bottom: 1rem;
}

.card-bottom {
  display: flex;
  justify-content: space-between;
  align-items: baseline; /* align text baselines */
  min-width:120px;
}

.card-bottom time,
.card-bottom .mehr-details {
  font-size: 0.95rem;
  line-height: 1.2;
}

.card-bottom time {
  color: #666;
}

.news-card .image-container {
  position: relative; /* ensure absolute children are positioned relative to this box */
  overflow: hidden;   /* optional: crop if needed */
  width:100%;
  aspect-ratio:16/9;
  min-width:200px;
}

.news-card .image-container img {
  display: block;
  width: 100%;
  height: 100%;
}

.news-card .image-container .copyright {
  position: absolute;
  bottom: 5px;
  left: 5px;
  color: white;
  font-size: 8px;
  background-color: rgba(0, 0, 0, 0.5);
  padding: 2px 5px;
  border-radius: 3px;
  /* optional: pointer-events: none; if you donâ€™t want it clickable */
}

/* âœ… Between 768px and 1000px: Image left, text right */
@media (min-width: 768px) and (max-width: 1400px) {
  .news-card {
    flex-direction: row;
    width: 100%;
    max-width: 100%;
  }
  
  .news-card h3 {
	  margin-top:0px;
	}

  .news-card > div:first-child {
    flex: 1;
  }

  .card-bottom {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
	margin-left:20px;
  }
  
  .news-card .image-container {
	  margin-right:20px;
  }

  .mehr-details {
    padding-top: 2px;
  }
}

/* âœ… Below 768px: Stack cards vertically */
@media (max-width: 767px) {
  .news-cards {
    flex-direction: column;
    align-items: center;
  }

  .news-card {
    width: 100%;
  }

  .news-card img {
    width: 100%;
    height: auto;
    margin-bottom: 0.75rem;
  }

  .card-bottom {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    margin-top: 0.75rem;
  }

  .mehr-details {
    padding-top: 2px;
  }
}



/* news cards large */
/* Base (mobile-first): stack vertically */
.news-card-large {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 100%;
  margin: 15px 0;
}

.news-card-large .image-container {
  position: relative;
  overflow: hidden;
  width: 100%;
  aspect-ratio: 16/9;
  min-width: 200px;
  margin-bottom: 0.75rem; /* mobile spacing */
}

.news-card-large .image-container img {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 8px;
}

.news-card-large .image-container .copyright {
  position: absolute;
  bottom: 5px;
  left: 5px;
  color: white;
  font-size: 8px;
  background-color: rgba(0, 0, 0, 0.5);
  padding: 2px 5px;
  border-radius: 3px;
}

/* Text/content area (assume itâ€™s the sibling after image) */
.news-card-large h3 {
  font-size: 1.1rem;
  margin-bottom: 0.5rem;
}

.news-card-large p {
  font-size: 0.95rem;
  color: #333;
  margin-bottom: 1rem;
}

/* Bottom row (date + link) */
.card-bottom-large {
  display: flex;
  flex-direction: column; /* mobile: stack */
  align-items: flex-start;
  gap: 4px;
  min-width: 120px;
}

.card-bottom-large time,
.card-bottom-large .mehr-details {
  font-size: 0.95rem;
  line-height: 1.2;
}

.card-bottom-large time {
  color: #666;
}

.mehr-details {
  padding-top: 2px;
}

/* Larger screens: image left, text right */
@media (min-width: 768px) {
  .news-card-large {
    flex-direction: row;
    align-items: flex-start; /* sorgt dafür, dass Bild und Text oben bündig sind */
  }

  .news-card-large .image-container {
    flex: 0 0 220px;  /* feste Breite für alle Bilder */
    height: 140px;    /* gleiche Höhe */
    margin-right: 20px;
    margin-bottom: 0;
  }

  .news-card-large .image-container img {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Bild wird zugeschnitten */
    border-radius: 8px;
  }

  .news-card-large > a {
    flex: 1;                 /* füllt bis zur rechten Spalte */
    display: flex;
  }
  .news-card-large > a > div {
    flex: 1;                 /* lässt H3+P schön strecken */
    display: flex;
    flex-direction: column;
    justify-content: space-between;
  }

  .card-bottom-large {
    margin-left: 0; /* linker Rand nicht nötig, weil Bild fix ist */
  }
}
/* lists */
ul.list {
    list-style: none;
    padding-left: 1.5em;
    margin: 1em 0;
    font-family: sans-serif;
    font-size: 16px;
}

ul.list li {
    position: relative;
    padding-left: 1.5em;
    margin-bottom: 0.6em;
    line-height: 1.4;
}

ul.list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.4em;
    width: 10px;
    height: 10px;
    background-color: #4CAF50;
}

hr {
    border: none;
    height: 2px;
    background-color: #cccccc;
}