/* Gedeelde stijl van de boekingskalender (element booking + bookingselector).
   Onderaan de publieke formulier-sectie (.bk-*) — alleen door booking.php
   gebruikt. Huisstijl: logo-rood #e30613, inktblauw #27416d (docs/stijlgids.md). */

#calendar {
    width: 100%;
    max-width: 400px;
    margin: 20px auto;
    text-align: center;
    user-select: none;
}
#calendar-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
#calendar-header .btn {
    min-width: 44px;
    min-height: 44px;
    font-size: 1.1rem;
    line-height: 1;
}
#calendar-days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 5px;
    margin-top: 10px;
    pointer-events: none;
}
#calendar-days .day-header {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 6px 2px;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6c757d;
    border: 0;
    pointer-events: none;
}
.day {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 44px; /* touch-target (WCAG 2.5.5) */
    padding: 6px 4px;
    border: 1px solid transparent; /* geen harde rand: de tint draagt de status */
    border-radius: 6px;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.2s ease-out, border-color 0.2s ease-out, transform 0.16s ease-out;
}

/* Statusvlakken volgens voorbeeld Joost (2026-11-15): zachte tintvlakken,
   de TEKSTKLEUR draagt de status, geen streep door de datum. De JS zet
   eigen klassen (bk-vrij/bk-vol/bk-verleden) — geen Bootstrap-bg- en
   text-utilities, want die hebben important en laten geen huisstijl-
   override toe. (OPLET: geen 'asterisk-slash' in commentaar — die sluit
   het commentaar vroegtijdig en slokte eerder de bk-vrij-regel op.) */
#calendar-days .bk-vrij {
    background-color: #e4f3e9;
    color: #4e9e6f;
    pointer-events: auto;
}
#calendar-days .bk-vrij:hover {
    background-color: #cfe9d9; /* donkerder groen bij mouse-over */
}
#calendar-days .bk-vrij:active {
    transform: scale(0.95);
}
/* Vol of gesloten: licht rood vlak met gedempt-rode datum, géén streep. */
#calendar-days .bk-vol {
    background-color: #fdecea;
    color: #dd8a8a;
    pointer-events: auto;
}
#calendar-days .bk-verleden {
    background-color: #eceef1;
    color: #b3b9c0;
    font-weight: 400;
}

/* Vandaag: roze ring, ongeacht status (dag 15 in het voorbeeld). */
#calendar-days .day-today {
    box-shadow: inset 0 0 0 2px #e3b0b0;
    font-weight: 700;
}

/* Gekozen dag: gevuld inktblauw. */
#calendar-days .day-selected {
    background-color: #27416d;
    border-color: #27416d;
    color: #ffffff;
}

/* Focus zichtbaar (toetsenbord). */
#calendar-days .day:focus-visible,
#calendar-header .btn:focus-visible {
    outline: 2px solid #e30613;
    outline-offset: 2px;
}

/* Legenda onder de kalender. */
.bk-legenda {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px 18px;
    margin: 10px 0 0;
    font-size: 0.85rem;
    color: #495057;
}
.bk-legenda span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.bk-legenda i {
    display: inline-block;
    width: 14px;
    height: 14px;
    border-radius: 3px;
}
.bk-legenda .bk-dot-vrij   { background: #e4f3e9; border: 1px solid #4e9e6f; }
.bk-legenda .bk-dot-vol    { background: #fdecea; border: 1px solid #dd8a8a; }
.bk-legenda .bk-dot-verleden { background: #eceef1; border: 1px solid #b3b9c0; }

/* Vrije tijden. */
#slotsavailable {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
    align-items: center;
}
#slotsavailable .slot-button {
    min-width: 84px;
    min-height: 44px;
    border-radius: 5px;
    font-weight: 600;
    transition: transform 160ms cubic-bezier(0.23, 1, 0.32, 1),
        background-color 0.2s ease-out,
        border-color 0.2s ease-out;
}
#slotsavailable .slot-button:active {
    transform: scale(0.96);
}
#slotsavailable .slot-button.btn-success {
    background-color: #1a7f4e;
    border-color: #1a7f4e;
}
#slotsavailable .slot-button.btn-secondary {
    background-color: #f1f3f5;
    border-color: #dee2e6;
    color: #495057;
}
.bk-hint {
    font-size: 0.9rem;
    color: #6c757d;
}

/* ============================================================
   Publiek boekingsformulier (.bk-*) — alleen element booking.
   Horizontale grondvorm: kalender links, gegevens rechts,
   actiebalk eronder over de volle breedte. Onder 992px stapelt
   alles (kalender eerst).
   ============================================================ */
.bk-stappen {
    display: flex;
    flex-direction: column;
    gap: 20px;
}
.bk-rij {
    display: flex;
    flex-direction: column;
    gap: 20px;
    align-items: stretch;
}
@media (min-width: 992px) {
    .bk-rij {
        flex-direction: row;
        align-items: flex-start;
    }
    .bk-stap-kies {
        flex: 0 0 38%;
        max-width: 38%;
    }
    .bk-stap-gegevens {
        flex: 1;
        min-width: 0;
    }
    #calendar {
        margin: 0 auto;
    }
}
.bk-kaart {
    background: #ffffff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 5px;
    padding: 20px;
}
.bk-staptitel {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin: 0 0 14px;
    font-family: "Raleway", sans-serif;
    font-size: 1.15rem;
    font-weight: 700;
    color: #27416d;
}
.bk-stapnr {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: #27416d;
    color: #fff;
    font-size: 0.85rem;
    font-weight: 700;
    flex: 0 0 auto;
    transform: translateY(3px);
}
.bk-groep {
    margin: 0 0 16px;
    padding: 12px 14px;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 5px;
}
.bk-groep legend {
    float: left;
    width: auto;
    padding: 0 6px;
    margin: 0;
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6c757d;
}
.bk-groep .form-check {
    min-height: 32px;
    padding-left: 2.6rem;
}
.bk-groep .form-check-input {
    width: 2.1rem;
    height: 1.15rem;
    margin-left: -2.6rem;
}
.bk-groep .form-check-label {
    padding-top: 2px;
}

/* Actiebalk: samenvatting + knop, onderaan over de volle breedte. */
.bk-actiebalk {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: 20px;
    padding: 16px 20px;
    background: #ffffff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-left: 4px solid #e30613;
    border-radius: 5px;
}
@media (min-width: 768px) {
    .bk-actiebalk {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}
#selection {
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: #27416d;
    font-weight: 600;
    transition: opacity 200ms ease-out;
    opacity: 1;
}
@starting-style {
    #selection {
        opacity: 0;
    }
}
#selection:empty {
    display: none;
}

/* Linkerkant van de actiebalk: samenvatting van het gekozen moment +
   (zolang het formulier incompleet is) tekstueel wat er nog moet
   ingevuld worden. */
.bk-actie-info {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2px;
    min-width: 0;
}
#bk-ontbreekt {
    font-size: 0.9rem;
    font-weight: 600;
    color: #b02a37;
}
#bk-ontbreekt:empty {
    display: none;
}
/* Klik op de knop terwijl het formulier incompleet is: de info even
   laten opvallen i.p.v. stil niets doen. */
.bk-pulse {
    animation: bk-schudden 320ms ease-out 2;
}
@keyframes bk-schudden {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-5px); }
    75% { transform: translateX(5px); }
}

#book {
    min-height: 48px;
    padding: 12px 28px;
    border-radius: 5px;
    font-size: 1.05rem;
    font-weight: 700;
    transition: transform 0.16s ease-out, opacity 0.2s ease-out,
        background-color 0.25s ease-out, border-color 0.25s ease-out;
    /* Merkrode CTA: de BootstrapUI-plugin plakt .btn.btn-secondary op
       Form-knoppen; de id-selector verslaat die betrouwbaar. */
    background-color: #e30613;
    border-color: #e30613;
    color: #ffffff;
}
#book:hover {
    background-color: #c00510;
    border-color: #c00510;
    color: #ffffff;
}
#book:not(.disabled):hover {
    transform: translateY(-2px);
}
#book:not(.disabled):active {
    transform: scale(0.97);
}
#book.disabled {
    /* Nog niet alles correct ingevuld: gedempt grijs i.p.v. rood — de
       knop wordt pas de merkrode CTA (de JS haalt .disabled weg) als
       dag & uur én alle verplichte velden correct zijn. */
    background-color: #a9b4c5;
    border-color: #a9b4c5;
    color: #ffffff;
    opacity: 1;
    pointer-events: auto; /* klik geeft een pulse op de ontbreek-lijst */
    cursor: not-allowed;
}
#book.disabled:hover {
    /* #book:hover (rood) en .power-btn:hover (blauw) neutraliseren. */
    background-color: #a9b4c5;
    border-color: #a9b4c5;
    color: #ffffff;
}
.bk-intro {
    max-width: 60rem;
    margin: 0 auto 22px;
    text-align: center;
    color: #495057;
    font-size: 0.95rem;
}
/* ============================================================
   Header-CTA onderdrukken zodra het formulier zichtbaar is: de
   "MAAK EEN AFSPRAAK"-knop in de header is dan redundant (het
   formulier staat op het scherm). main.js zet .cta-verbergen via
   een IntersectionObserver op #afspraak. Alleen actief op pagina's
   mét boekingsformulier — dit bestand laadt alleen daar.
   ============================================================ */
#header-cta-afspraak {
    transition: opacity 180ms ease-out, transform 180ms ease-out;
}
#header-cta-afspraak.cta-verbergen {
    opacity: 0;
    transform: translateY(-6px);
    pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
    .day,
    #book,
    #slotsavailable .slot-button {
        transition: none;
    }
    #header-cta-afspraak {
        transition: none;
    }
    .bk-pulse {
        animation: none;
    }
}
