/* fonts */

@font-face {
    font-family: Charm;
    src: url(fonts/Charm.ttf);
}

/* variables */

:root {
    --bar-width: 3rem;
    --bar-height: 0.375rem;
    --bar-gap: 0.5rem;
    --nav-height: 4em;
    --bg-color: white;
    --font-color: black;
    --bg-color_2: rgb(0, 63, 31);
    --bg-color_3: rgb(211, 211, 211);
}

/* tags */

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: 5.5em;
}

body {
    font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;
    font-size: 1.125rem;
    background-color: var(--bg-color_2);
    margin: 0;
    max-width: 100vw;
    overflow-x: hidden;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

nav {
    position: sticky;
    top: 0;
    background-color: var(--bg-color_2);
    display: flex;
    justify-content: space-around;
    align-items: center;
    font-weight: 600;
    height: var(--nav-height);
    z-index: 2;
}

label {
    display: flex;
    flex-direction: column;
    gap: var(--bar-gap);
    margin-right: calc(50% - var(--nav-height));
    cursor: pointer;
    width: var(--bar-width);
}

a {
    text-decoration: none;
    font-weight: 700;
    color: white;
    transition: 500ms;
    width: fit-content;
    cursor: pointer;
}

a:after {
    display: block;
    content: "";
    border-bottom: 0.15em solid white;
    transform: scaleX(0);
    transition: transform 250ms ease-out;
    transform-origin: 0% 50%;
}

a:hover:after {
    transform: scaleX(1);
}

button {
    font: inherit;
    color: white;
    border-style: solid;
    border-color: white;
    border-radius: 100vw;
    background-color: transparent;
    padding: 0.5em 1em;
    cursor: pointer;
    transition: 500ms;
}

button:hover {
    color: black;
    background-color: white;
}

form {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
}

form * {
    margin: 1em;
    font-size: 1rem;
}

form h2 {
    font-size: 1.5rem;
    text-align: center;
    text-wrap: balance;
}

form span {
    position: absolute;
    top: -0.65em;
    right: -0.375em;
    font-size: 2.75rem;
    transition: 500ms;
    font-weight: 300;
    rotate: 45deg;
}

form span:hover {
    cursor: pointer;
    color: var(--bg-color_3);
}

header {
    display: flex;
    justify-content: space-around;
    align-items: center;
    height: calc(var(--nav-height) * 2);
    padding: 1em;
}

header img {
    height: 100%;
}

header #Logo {
    border-radius: 100%;
}

header #Plakette {
    border-radius: 0 0 100vw 100vw;
}

h1 {
    font-family: Charm;
    font-size: 3rem;
    text-align: center;
}

section {
    display: none;
    background-color: var(--bg-color);
    color: var(--font-color);
}

article {
    columns: 2;
    gap: 2em;
    margin: 2em;
}

h3 {
    margin-block: 0;
}

pre {
    font: inherit;
    border: 0.125em solid var(--font-color);
    border-radius: 1em;
    padding: 1em;
    margin: 0 auto 2em auto;
    text-wrap: wrap;
    break-inside: avoid;
}

pre img {
    width: 100%;
    border-radius: 0.5em;
    margin-top: 1.5em;
}

footer {
    display: flex;
    justify-content: space-around;
    align-items: center;
    background-color: var(--bg-color_2);
    width: 100%;
    min-height: var(--nav-height);
    flex: 1;
}

footer a {
    cursor: pointer;
}

/* classes */

.news-scroll {
    margin-bottom: 1em;
    white-space: nowrap;
    overflow: hidden;
}

.news-move {
    display: flex;
    animation: tickerh linear 20s infinite;
    margin-inline: 0;
}

.news-move:hover {
    animation-play-state: paused;
}

.news-item {
    width: 100%;
    text-align: center;
    margin-inline: 2em;
}

.container {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    padding: 2em 2em;
}

.container h2 {
    text-align: center;
    margin: 0;
}

.fade {
    animation-name: fade;
    animation-duration: 8s;
}

.caption {
    width: 100%;
    text-align: center;
    margin: 2em auto;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    font-style: italic;
}

.refresh {
    font-size: 0.875rem;
    margin-top: 1.5em;
    text-align: center;
    font-style: italic;
    color: var(--font-color);
}

.refresh::after {
    color: var(--font-color);
    border-bottom: 0.15em solid var(--font-color);
}

.article-images {
    object-fit: cover;
    width: 100%;
    max-height: calc(var(--nav-height) * 12);
    margin-top: 2em;
    border-radius: 1em;
}

.content {
    padding-top: 2em;
    text-align: center;
}

.content div:not(.tr) {
    width: fit-content;
    margin-top: 1em;
}

.content a {
    color: var(--font-color);
}

.content a:after {
    border-bottom: 0.15em solid var(--font-color);
}

.row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
    margin-top: var(--nav-height);
    width: 100%;
}

.row > * {
    padding: 0;
    margin: 0;
}

.tr {
    display: flex;
    justify-content: space-between;
    margin: 0.5em auto;
    transition: 500ms;
    border-radius: 100vw;
    width: 100%;
    gap: 2em;
}

.tr:hover {
    background-color: var(--bg-color_2);
    color: white;
}

.key {
    text-align: left;
    padding-left: 1em;
    margin-block: 0.75em;
}

.value {
    text-align: right;
    padding-right: 1em;
    margin-block: 0.75em;
}

.nav-arrows {
    border: none;
    border-radius: 0;
    position: fixed;
    z-index: 3;
    top: 50%;
    background-color: var(--bg-color_3);
    color: var(--font-color);
    opacity: 0.75;
    font-weight: bolder;
    font-family: Arial, Helvetica, sans-serif;
    text-align: center;
    padding-block: 0.75em;
    padding-inline: 1em;
}

.nav-arrows:hover {
    background-color: var(--bg-color);
    color: var(--font-color);
}

.images {
    display: none;
    columns: 3;
    column-gap: 0.75em;
}

.images img {
    width: 100%;
    border-radius: 0.5em;
    margin-bottom: 0.5em;
    transition: 500ms;
}

.images img:hover {
    cursor: pointer;
    opacity: 0.75;
    filter: grayscale(15%);
}

.acc-content {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 500ms;
    cursor: default;
}
  
.acc-content[aria-hidden="false"] {
    grid-template-rows: 1fr;
}

.acc-content > div {
    overflow: hidden;
}

.top {
    color: var(--font-color);
    text-align: center;
    display: none;
    position: fixed;
    bottom: 2em;
    right: 1em;
    text-decoration: none;
    height: 3rem;
    width: 3rem;
    border-radius: 0.25em;
    font-size: 2.5rem;
    font-weight: bolder;
    font-family: Arial, Helvetica, sans-serif;
}

.top:hover {
    background-color: var(--bg-color_2);
    color: var(--bg-color);
}

.top:after {
    border: none;
}

/* id's */

#hamburger:before,
#hamburger:after,
#hamburger input {
    content: "";
    width: var(--bar-width);
    height: var(--bar-height);
    background-color: white;
    border-radius: 100vw;
    transition: 300ms ease-in-out;
    transform-origin: left center;
}

#hamburger input {
    appearance: none;
    padding: 0;
    margin: 0;
    outline: none;
    pointer-events: none;
}

#hamburger input:checked {
    opacity: 0;
    width: 0;
}

#hamburger:has(input:checked)::before {
    rotate: 45deg;
    width: calc(var(--bar-height) * 3 + var(--bar-gap) * 2 * 1.41421356237);
}

#hamburger:has(input:checked)::after {
    rotate: -45deg;
    width: calc(var(--bar-height) * 3 + var(--bar-gap) * 2 * 1.41421356237);
}

#hamburger:has(input:checked) + #menu {
    translate: 0;
}

#menu {
    display: flex;
    flex-direction: column;
    position: absolute;
    top: var(--nav-height);
    left: 0;
    background-color: var(--bg-color_3);
    opacity: 0.9;
    transition: 300ms ease-out;
    translate: -100%;
    padding-top: 1em;
    border-radius: 0 0 1em 0;
}

#menu a {
    color: var(--font-color);
    margin: 1.5em 2em;
    box-sizing: border-box;
}

#menu a:after {
    border-bottom: 0.15em solid var(--font-color);
}

#mobile {
    display: none;
}

#weather {
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: white;
    gap: 0.5em;
}

#weather input {
    font: inherit;
    color: inherit;
    background-color: transparent;
    border: none;
    border-bottom: 1px solid white;
    outline: none;
    width: 5em;
    margin-right: 1em;
}

#icon {
    height: var(--nav-height);
}

#icon img {
    height: 100%;
    filter: brightness(150%);
}

#login-modal,
#image-modal,
#contact-modal,
#thanks-modal {
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.9);
    color: white;
}

#login-canvas,
#thanks-canvas {
    max-width: 20em;
}

#login-canvas,
#contact-canvas,
#thanks-canvas {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    margin: auto;
    width: 90%;
    background-color: var(--font-color);
    border-radius: 0.5em;
    color: var(--bg-color);
    animation: zoom 500ms;
}

#name,
#password,
#contact-form input,
#contact-form textarea {
    outline: none;
    border-style: solid;
    border-color: var(--bg-color);
    border-radius: 100vw;
    background-color: transparent;
    padding: 0.5em 1em;
    color: var(--bg-color);
}

#login,
#contact {
    border-style: solid;
    border-color: var(--bg-color);
    border-radius: 100vw;
    background-color: transparent;
    padding: 0.5em 1em;
    color: var(--bg-color);
    width: fit-content;
    font-family: inherit;
    font-weight: bold;
    cursor: pointer;
    transition: 500ms;
}

#login:hover,
#contact:hover {
    background-color: var(--bg-color);
    color: var(--font-color);
}

#Startseite {
    display: flex;
    flex-direction: column;
}

#Startseite .container {
    padding: 0;
}

#banner {
    width: 100%;
}

#banner img {
    margin: 0;
    height: calc(100vh - var(--nav-height) * 6);
    min-height: calc(var(--nav-height) * 3);
    width: 100%;
    object-fit: cover;
}

#Aktuelles h3 {
    text-align: center;
}

#Downloads .row,
#Links .row {
    margin-top: 0;
}

#Historie img,
#Downloads img,
#Links img {
    width: auto;
    max-width: 90%;
    margin: 2em auto;
}

#Downloads .content div,
#Links .content div {
    margin: var(--nav-height) 0;
}

#Kalender .row {
    margin-top: 0;
}

#Kalender .content {
    padding: 1.5em;
}

#Kalender img {
    margin: 4em auto;
    width: 50%;
}

#Historie-nav {
    display: grid;
    grid-template-columns: 1fr 1fr;
    margin-top: 1.5em;
    margin-bottom: 0;
}

#Historie-nav img {
    align-items: center;
    margin-block: auto;
}

#Historie .row {
    grid-template-columns: 4fr 1fr 1fr;
    gap: 1em;
    align-items: center;
    max-width: 1024px;
}

#Historie .sec {
    grid-template-columns: 1fr 1fr 4fr;
}

#Historie .content {
    padding-top: 0;
}

#Historie p {
    text-align: left;
}

#Historie figcaption {
    font-size: 0.875rem;
}

#Historie .gallery {
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
}

#Historie .short {
    grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
}

#Historie .text {
    grid-template-columns: 3fr 3fr;
}

#Würdenträger img {
    object-fit: contain;
    width: fit-content;
    max-width: 90%;
    max-height: calc(var(--nav-height) * 6);
    margin-top: 1.5em;
    margin-bottom: 1em;
}

#Würdenträger .row,
#Galerie .row {
    grid-template-columns: 1fr 1fr 1fr;
    row-gap: 1em;
    margin: 2em;
}

#Würdenträger .row > *,
#Galerie .row > * {
    padding: 0.5em 1em;
    width: fit-content;
    margin: auto;
}

#Würdenträger button,
#Galerie button {
    border-color: var(--font-color);
    background-color: var(--bg-color);
    color: var(--font-color);
    font-weight: bold;
}

#Würdenträger button:hover,
#Galerie button:hover {
    background-color: var(--bg-color_2);
    border-color: var(--bg-color_2);
    color: var(--bg-color);
}

#Würdenträger .tr {
    max-width: 95vw;
}

#Könige h2,
#Festkettenträger h2,
#Buschkönige h2 {
    margin-top: 1em;
}

#Festkettenträger,
#Buschkönige {
    display: none;
}

#Galerie .content {
    padding-top: 1em;
}

#left {
    rotate: -90deg;
}

#right {
    rotate: 90deg;
    right: 0;
}

#img01 {
    position: fixed;
    top: calc(50% + (var(--nav-height) * 0.5));
    left: 50%;
    transform: translate(-50%, -50%);
    margin: auto;
    display: block;
    opacity: 1;
    border-radius: 1em;
    animation: zoom 500ms;
}

#contact-canvas {
    max-width: 30em;
}

#contact-form input,
#contact-form textarea {
    width: 75%;
}

#contact-form textarea {
    border-radius: 1em;
    resize: none;
    font-family: inherit;
    height: 53px;
}

#thanks-canvas {
    padding: 2em;
}

#thanks-canvas h2 {
    text-align: center;
}

#Impressum .content {
    width: 90%;
    max-width: 25em;
    margin: 0 auto 2em auto;
}

#accordion,
#accordion_2 {
    width: 90%;
    max-width: 25em;
    margin: 0 auto 2em auto;
    display: flex;
    flex-direction: column;
    align-items: center;
}

#accordion button,
#accordion_2 button {
    border: none;
    color: var(--font-color);
}

#accordion button:hover,
#accordion_2 button:hover {
    color: var(--bg-color);
    background-color: var(--bg-color_2);
}

/* keyframes */

@keyframes tickerh {
  0% {transform: translatex(100%);}
  100% {transform: translatex(-100%);}
}

@keyframes fade {
    0%, 100% {opacity: 0}
    15%, 85% {opacity: 1}
}

@keyframes zoom {
    from {transform: translate(-50%, -50%) scale(0)} 
    to {transform: translate(-50%, -50%) scale(1)}
  }

/* media queries */

@media (max-width: 1023px) {
    @keyframes tickerh {
        0% {transform: translatex(100%);}
        100% {transform: translatex(-200%);}
    }

    label {
        margin-right: 0;
    }

    #mobile {
        display: block;
    }

    #desktop {
        display: none;
    }

    #menu {
        border-radius: 0;
        width: 100%;
        height: calc(100vh - var(--nav-height));
        align-items: center;
        overflow-y: scroll;
        transition: 500ms ease-out;
    }

    #menu a {
        font-size: 1.75rem;
        margin: 0.5em 0;
    }

    #menu a:last-child {
        margin-bottom: 1.5em;
    }

    .news-move {
        animation: tickerh linear 10s infinite;
    }

    header h1 {
        width: 100%;
        font-size: 2rem;
    }
    
    header img {
        display: none;
    }

    #Aktuelles .container {
        padding: 1.5em 1em;
    }

    article {
        columns: 1;
        margin: 2em 0;
    }

    pre {
        margin-bottom: 1em;
    }

    .row,
    #Historie-nav {
        grid-template-columns: 1fr;
        margin: 0;
    }

    .row > img {
        order: -1;
    }

    #Historie-nav .content {
        margin-block: 1em;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    #Historie img {
        margin-block: 0.5em;
    }

    #Downloads img,
    #Historie img,
    #Links img {
        width: 100%;
    }
    
    #Downloads .content div,
    #Links .content div {
        margin: 0 auto 1em auto;
    }

    #Kalender .container {
        padding: 2em 0 0 0;
    }

    #Kalender .tr {
        max-width: calc(var(--nav-height) * 5);
    }

    #Kalender img {
        margin: 2em auto 0.5em auto;
    }

    #Historie .row {
        grid-template-columns: 1fr;
        margin-block: 1em;
    }

    #Historie p {
        order: 0;
    }

    #Historie img {
        order: 1;
    }

    #Historie figcaption {
        order: 2;
    }

    #Historie .short > *,
    #Historie .gallery > * {
        order: initial;
    }
    
    #Würdenträger .container {
        padding: 0;
        padding-top: 0.5em;
    }

    #Würdenträger .container > *:not(img) {
        padding: 0;
        margin: 1em 0;
    }

    #Würdenträger .row,
    #Galerie .row {
        grid-template-columns: 1fr;
        gap: 1em;
    }

    .images {
        columns: 1;
        column-gap: 0;
    }

    footer {
        flex-direction: column;
        height: fit-content;
    }

    footer a {
        margin: 1em 0;
    }

    .top {
        bottom: 1em;
    }
}

@media (max-width: 400px) {
    :root {
        --bar-height: 0.275rem;
        --bar-width: 2.5rem;
    }

    @keyframes tickerh {
        0% {transform: translatex(100%);}
        100% {transform: translatex(-400%);}
    }

    button {
        font-size: 0.96rem;
    }

    #weather input {
        display: none;
    }

    .news-item {
        margin-inline: 3em;
    }

    header h1 {
        font-size: 1.75rem;
    }

    pre {
        font-size: 1rem;
    }

    #Kalender .content {
        padding: 1.5em 0;
    }

    #Kalender .tr {
        font-size: 0.88rem;
        gap: 0.5em;
    }

    .nav-arrows {
        padding-block: 0.5em;
        padding-inline: 0.75em;
    }

    #Galerie .container {
        padding: 1em;
        padding-top: 2em;
    }

    h3 button {
        font-size: 1.375rem;
    }

    @media (orientation: landscape) {
        #img01 {
            height: 100vh;
            width: auto;
            margin: 0;
        }
    }
    
    @media (orientation: portrait) {
        #img01 {
            width: 100vw;
            height: auto;
            margin: 0;
        }
    }
}

/* screen orientation */


@media (orientation: landscape) {
    @media (min-width: 401px) {
        #img01 {
            height: 90vh;
            width: auto;
        }
    }
    @media (max-width: 400px) {
        #img01 {
            height: 100vh;
            width: auto;
            margin: 0;
            border-radius: 0;
        }
    }
}

@media (orientation: portrait) {
    @media (min-width: 401px) {
        #img01 {
            width: 90vw;
            height: auto;
        }
    }
    @media (max-width: 400px) {
        #img01 {
            width: 100vw;
            height: auto;
            margin: 0;
            border-radius: 0;
        }
    }
}


/* dark theme */

@media (prefers-color-scheme: dark) {
    :root {
      --bg-color: rgb(44, 44, 44);
      --font-color: white;
    }

    #menu {
        background-color: var(--bg-color);
    }

    .tr:hover {
        background-color: var(--bg-color_3);
        color: var(--bg-color);
    }

    #Kalender img {
        filter: invert(83%);
    }

    #Würdenträger button:hover,
    #Galerie button:hover {
        background-color: var(--font-color);
        border-color: var(--font-color);
        color: var(--bg-color);
    }
    
    #login-modal,
    #image-modal,
    #contact-modal,
    #thanks-modal {
        background-color: rgba(63, 63, 63, 0.9);
    }

    .top:hover {
        background-color: var(--font-color);
    }

    #accordion button:hover,
    #accordion_2 button:hover {
        background-color: var(--font-color);
    }
    @media (pointer: coarse) {
        .tr:hover {
            background-color: var(--bg-color);
            color: var(--font-color);
        }

        #Würdenträger button:hover,
        #Galerie button:hover {
            background-color: var(--bg-color);
            border-color: var(--font-color);
            color: var(--font-color);
        }

        .top:hover {
            background-color: transparent;
        }
    
        #accordion button:hover,
        #accordion_2 button:hover {
            background-color: var(--bg-color);
        }
    }
}

@media (pointer: coarse) {
    a:hover:after {
        transform: scaleX(0);
    }

    button:hover {
        color: white;
        background-color: var(--bg-color_2);
    }

    form span:hover {
        cursor: default;
        color: inherit;
    }

    .tr:hover {
        background-color: var(--bg-color);
        color: var(--font-color);
    }

    .images img:hover {
        cursor: default;
        opacity: 1;
        filter: grayscale(0%);
    }
    
    .top:hover {
        background-color: transparent;
        color: var(--font-color);
    }
    
    #login:hover,
    #contact:hover {
        background-color: var(--font-color);
        color: var(--bg-color);
    }

    #Würdenträger button:hover,
    #Galerie button:hover {
        background-color: var(--bg-color);
        border-color: var(--font-color);
        color: var(--font-color);
    }

    #accordion button:hover,
    #accordion_2 button:hover {
        color: var(--font-color);
        background-color: var(--bg-color);
    }
}