.fd-opening-hours {
    --oh-line: #dbe4eb;
    --oh-soft: #f5f8fa;
    --oh-text: #1f2d3d;
    --oh-muted: #6a7788;
    --oh-brand: #3e6278;
    --oh-success: #17795a;
    --oh-danger: #a93d4e;
    position: relative;
    isolation: isolate;
    display: grid;
    gap: 20px;
    padding: clamp(22px, 4vw, 34px);
    border: 1px solid var(--oh-line);
    border-radius: 20px;
    overflow: hidden;
    background: #fff;
    background-clip: padding-box;
    box-shadow: none;
    color: var(--oh-text);
}
.fd-opening-hours-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 22px; }
.fd-opening-hours-head > div:first-child { min-width: 0; }
.fd-opening-hours-kicker { display: block; margin-bottom: 5px; color: var(--oh-brand); font-size: .72rem; text-transform: uppercase; letter-spacing: .11em; font-weight: 850; }
.fd-opening-hours h2 { margin: 0; font-size: clamp(1.35rem, 3vw, 1.85rem); letter-spacing: -.035em; }
.fd-opening-hours h3 { margin: 0; font-size: 1rem; letter-spacing: -.015em; }
.fd-opening-hours-status { display: inline-flex; align-items: center; gap: 10px; flex: 0 0 auto; padding: 10px 12px; border-radius: 14px; background: #fff3f5; color: var(--oh-danger); }
.fd-opening-hours-status.is-open { background: #edf8f3; color: var(--oh-success); }
.fd-opening-hours-status.is-appointment { background: #eef4f8; color: var(--oh-brand); }
.fd-opening-hours-status-dot { width: 9px; height: 9px; border-radius: 50%; background: currentColor; box-shadow: 0 0 0 5px rgba(169,61,78,.09); }
.fd-opening-hours-status.is-open .fd-opening-hours-status-dot { box-shadow: 0 0 0 5px rgba(23,121,90,.09); }
.fd-opening-hours-status.is-appointment .fd-opening-hours-status-dot { box-shadow: 0 0 0 5px rgba(62,98,120,.09); }
.fd-opening-hours::before { content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none; box-shadow: inset 0 1px 0 rgba(255,255,255,.75); }
.fd-opening-hours-status > div { display: grid; gap: 1px; }
.fd-opening-hours-status strong { font-size: .88rem; }
.fd-opening-hours-status small { color: inherit; opacity: .78; font-size: .73rem; white-space: nowrap; }
.fd-opening-hours-status-only { display: flex; }
.fd-opening-hours-list { display: grid; gap: 0; margin: 0; border: 1px solid var(--oh-line); border-radius: 16px; overflow: hidden; }
.fd-opening-hours-row { display: grid; grid-template-columns: minmax(130px, .75fr) minmax(0, 1.4fr); gap: 18px; align-items: baseline; padding: 13px 15px; background: #fff; }
.fd-opening-hours-row:nth-child(even) { background: var(--oh-soft); }
.fd-opening-hours-row + .fd-opening-hours-row { border-top: 1px solid var(--oh-line); }
.fd-opening-hours-row dt { font-weight: 800; }
.fd-opening-hours-row dd { margin: 0; display: grid; gap: 2px; justify-items: end; text-align: right; color: #445266; }
.fd-opening-hours-row dd small { color: var(--oh-muted); font-size: .77rem; }
.fd-opening-hours time { font-variant-numeric: tabular-nums; }
.fd-opening-hours-separator { color: #9aa5b1; }
.fd-opening-hours-closed { color: var(--oh-danger); font-weight: 750; }
.fd-opening-hours-open { color: var(--oh-success); font-weight: 750; }
.fd-opening-hours-appointment { color: var(--oh-brand); font-weight: 750; }
.fd-opening-hours-today { display: grid; grid-template-columns: 1fr auto; gap: 8px 20px; align-items: center; padding: 17px; border-radius: 16px; background: var(--oh-soft); border: 1px solid var(--oh-line); }
.fd-opening-hours-today > div { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.fd-opening-hours-today > span { font-weight: 800; }
.fd-opening-hours-today > small { grid-column: 1 / -1; color: var(--oh-muted); }
.fd-opening-hours-special { display: inline-flex; align-items: center; min-height: 25px; padding: 0 8px; border-radius: 999px; background: #edf3f7; color: var(--oh-brand); font-size: .72rem; font-weight: 800; }
.fd-opening-hours-exceptions { display: grid; gap: 10px; padding-top: 2px; }
.fd-opening-hours-exception-list { display: grid; gap: 8px; }
.fd-opening-hours-exception { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 14px; align-items: center; padding: 11px 13px; border-radius: 13px; border: 1px solid var(--oh-line); background: #fbfcfd; }
.fd-opening-hours-exception > div { display: grid; gap: 1px; }
.fd-opening-hours-exception > div span { color: var(--oh-muted); font-size: .78rem; }
.fd-opening-hours-view-status { display: inline-grid; width: auto; min-width: min(100%, 320px); }
@media (max-width: 620px) {
    .fd-opening-hours-head { flex-direction: column; }
    .fd-opening-hours-status { width: 100%; }
    .fd-opening-hours-row { grid-template-columns: 1fr; gap: 3px; }
    .fd-opening-hours-row dd { justify-items: start; text-align: left; }
    .fd-opening-hours-today, .fd-opening-hours-exception { grid-template-columns: 1fr; }
}

.fd-opening-hours-vacation { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(240px, .9fr); gap: 14px; padding: 16px; border: 1px solid var(--oh-line); border-radius: 16px; background: var(--oh-soft); }
.fd-opening-hours-vacation-copy { display: grid; gap: 4px; min-width: 0; }
.fd-opening-hours-vacation-copy > strong { font-size: 1rem; }
.fd-opening-hours-vacation-copy > span:not(.fd-opening-hours-vacation-state), .fd-opening-hours-vacation-copy > small { color: var(--oh-muted); }
.fd-opening-hours-vacation-state { width: fit-content; margin-bottom: 2px; padding: 4px 8px; border: 1px solid var(--oh-line); border-radius: 999px; background: #fff; color: var(--oh-brand); font-size: .68rem; font-weight: 850; text-transform: uppercase; letter-spacing: .07em; }
.fd-opening-hours-vacation.is-active .fd-opening-hours-vacation-state { color: var(--oh-danger); }
.fd-opening-hours-representative { display: grid; align-content: start; gap: 4px; padding: 13px 14px; border: 1px solid var(--oh-line); border-radius: 13px; background: #fff; }
.fd-opening-hours-representative > span:first-child { color: var(--oh-brand); font-size: .68rem; font-weight: 850; text-transform: uppercase; letter-spacing: .07em; }
.fd-opening-hours-representative-details { display: grid; gap: 3px; margin-top: 4px; color: var(--oh-muted); font-size: .82rem; }
.fd-opening-hours-representative-details a { color: var(--oh-brand); overflow-wrap: anywhere; }
.fd-opening-hours-vacation-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 22px; }
.fd-opening-hours-vacation-head h2 { margin: 0; }
.fd-opening-hours-special.is-vacation { border-color: var(--oh-line); }

@media (max-width: 720px) {
    .fd-opening-hours-vacation { grid-template-columns: 1fr; }
}
.fd-opening-hours-vacation-list { display: grid; gap: 12px; }

.fd-opening-hours-list,
.fd-opening-hours-vacation,
.fd-opening-hours-exception,
.fd-opening-hours-today {
    background-clip: padding-box;
}


/* 2026.36.01.08 · CMS-Seitenhülle bei eingebetteten Öffnungszeiten
   Der fiebigerCMS-Seitencontainer kann hinter dem Plugin an der linken
   oberen/unteren Rundung als kleine graue Restkante sichtbar werden. */
.prose:has(.fd-opening-hours) {
    box-shadow: none !important;
    border-color: transparent !important;
}
.prose:has(.fd-opening-hours)::before,
.prose:has(.fd-opening-hours)::after {
    box-shadow: none !important;
    border-color: transparent !important;
}
