/*
 * Öffnungszeiten – Farben und Abstände über CSS-Variablen anpassen.
 * Nutzt, wenn vorhanden, die Gestaltungswerte der Nordwerk-Themes (--nw-*), sonst neutrale Werte.
 */
.opening-hours {
    --oh-open: var(--nw-success, #2e7d4f);
    --oh-closed: var(--nw-attention, #b5544a);
    --oh-today-bg: var(--nw-page, rgba(0, 0, 0, .04));
    --oh-line: var(--nw-border, rgba(0, 0, 0, .12));
    --oh-muted: var(--nw-muted, rgba(0, 0, 0, .6));
    --oh-radius: var(--nw-radius-control, 6px);
    --oh-card-bg: var(--nw-surface, #fff);
    --oh-card-border: var(--nw-border, rgba(0, 0, 0, .12));
    --oh-card-radius: var(--nw-radius-card, 12px);
    --oh-card-padding: 1.5rem;
    --oh-gap: 2.5rem;

    display: grid;
    gap: 1.5rem var(--oh-gap);
    padding: var(--oh-card-padding);
    border: 1px solid var(--oh-card-border);
    border-radius: var(--oh-card-radius);
    background: var(--oh-card-bg);
}

@media (min-width: 48rem) {
    .opening-hours--split {
        grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
        align-items: start;
    }
}

.opening-hours__aside {
    display: grid;
    gap: 1rem;
}

@media (min-width: 48rem) {
    .opening-hours--split .opening-hours__aside {
        padding-left: var(--oh-gap);
        border-left: 1px solid var(--oh-line);
        min-height: 100%;
        align-content: start;
    }
}

.opening-hours__status {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .25em .6em;
    margin: 0 0 1em;
}

.opening-hours__badge {
    display: inline-flex;
    align-items: center;
    gap: .45em;
    font-weight: 600;
}

.opening-hours__badge::before {
    content: "";
    width: .65em;
    height: .65em;
    border-radius: 50%;
    background: currentColor;
}

.opening-hours__status.is-open .opening-hours__badge { color: var(--oh-open); }
.opening-hours__status.is-closed .opening-hours__badge { color: var(--oh-closed); }
.opening-hours__next { color: var(--oh-muted); }

.opening-hours__table {
    width: 100%;
    border-collapse: collapse;
}

.opening-hours__caption {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.opening-hours__table tr:last-child th,
.opening-hours__table tr:last-child td { border-bottom: 0; }

.opening-hours__table th,
.opening-hours__table td {
    padding: .45em .6em;
    border-bottom: 1px solid var(--oh-line);
    text-align: left;
    vertical-align: top;
    font-weight: normal;
}

.opening-hours__table td { text-align: right; }

.opening-hours__row--today th,
.opening-hours__row--today td {
    background: var(--oh-today-bg);
    font-weight: 600;
}

.opening-hours__row--today th:first-child { border-radius: var(--oh-radius) 0 0 var(--oh-radius); }
.opening-hours__row--today td:last-child { border-radius: 0 var(--oh-radius) var(--oh-radius) 0; }

.opening-hours__range { display: block; }
.opening-hours__closed { color: var(--oh-muted); }

.opening-hours__exceptions { margin: 0; }
.opening-hours__exceptions-title { margin: 0 0 .4em; font-weight: 600; }

.opening-hours__exceptions ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.opening-hours__exceptions li {
    display: grid;
    grid-template-columns: 6.2em minmax(0, 1fr);
    gap: .1em 1em;
    padding: .55em 0;
    border-bottom: 1px solid var(--oh-line);
}

.opening-hours__exceptions .opening-hours__what { grid-column: 2; }

.opening-hours__exceptions li:last-child { border-bottom: 0; }

.opening-hours__date { font-weight: 600; white-space: nowrap; }
.opening-hours__label { font-weight: 600; }
.opening-hours__what { color: var(--oh-muted); }
.opening-hours__what .opening-hours__range { display: inline; }
.opening-hours__what .opening-hours__range + .opening-hours__range::before { content: ", "; }

.opening-hours__note {
    margin: 0;
    font-size: .9em;
    color: var(--oh-muted);
}

