/* Slotbook — theme-agnostic booking widget.
 *
 * Design contract: the widget INHERITS the host theme's typeface and text
 * color so it never fights the surrounding design, and exposes a tiny set
 * of CSS variables any theme can override to make it its own:
 *
 *   .slotbook {
 *     --slotbook-accent: #EB4E12;         (YaadBuilt pepper, for example)
 *     --slotbook-accent-contrast: #fff;
 *     --slotbook-radius: 6px;
 *     --slotbook-border: rgba(0,0,0,.18);
 *   }
 *
 * Everything is scoped under .slotbook; nothing leaks out.
 */

.slotbook {
    --sb-accent: var(--slotbook-accent, #1a1a1a);
    --sb-accent-contrast: var(--slotbook-accent-contrast, #fff);
    --sb-radius: var(--slotbook-radius, 6px);
    --sb-border: var(--slotbook-border, rgba(0, 0, 0, .18));

    font: inherit;
    color: inherit;
    max-width: 560px;
    margin-inline: auto;
}

.slotbook *,
.slotbook *::before,
.slotbook *::after { box-sizing: border-box; }

.slotbook__field { margin: 0 0 1.1em; }

.slotbook__field label,
.slotbook__label {
    display: block;
    font-size: .8em;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    opacity: .75;
    margin-bottom: .35em;
}

.slotbook input[type="text"],
.slotbook input[type="email"],
.slotbook input[type="tel"],
.slotbook input[type="date"],
.slotbook select,
.slotbook textarea {
    width: 100%;
    font: inherit;
    color: inherit;
    background: transparent;
    border: 1px solid var(--sb-border);
    border-radius: var(--sb-radius);
    padding: .6em .75em;
}

.slotbook input:focus-visible,
.slotbook select:focus-visible,
.slotbook textarea:focus-visible,
.slotbook button:focus-visible {
    outline: 2px solid var(--sb-accent);
    outline-offset: 2px;
}

.slotbook__single { margin: 0 0 1.1em; }

/* Slot grid */
.slotbook__slots {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(86px, 1fr));
    gap: .5em;
    min-height: 2.5em;
}

.slotbook__slots .slotbook__hint,
.slotbook__slots .slotbook__none {
    grid-column: 1 / -1;
    margin: 0;
    opacity: .7;
    font-size: .95em;
}

.slotbook__slot {
    font: inherit;
    font-variant-numeric: tabular-nums;
    padding: .55em 0;
    background: transparent;
    color: inherit;
    border: 1px solid var(--sb-border);
    border-radius: var(--sb-radius);
    cursor: pointer;
    transition: border-color .12s ease, background .12s ease;
}

.slotbook__slot:hover { border-color: var(--sb-accent); }

.slotbook__slot[aria-checked="true"] {
    background: var(--sb-accent);
    color: var(--sb-accent-contrast);
    border-color: var(--sb-accent);
}

/* Details reveal */
.slotbook__details { animation: slotbook-in .18s ease; }

@keyframes slotbook-in {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
    .slotbook__details { animation: none; }
}

.slotbook__submit {
    font: inherit;
    font-weight: 700;
    width: 100%;
    padding: .8em 1em;
    border: 1px solid var(--sb-accent);
    border-radius: var(--sb-radius);
    background: var(--sb-accent);
    color: var(--sb-accent-contrast);
    cursor: pointer;
}

.slotbook__submit[disabled] { opacity: .6; cursor: wait; }

.slotbook__error {
    border: 1px solid currentColor;
    border-radius: var(--sb-radius);
    padding: .6em .75em;
    font-size: .95em;
}

/* Honeypot: visually removed, still in the DOM for bots */
.slotbook__hp {
    position: absolute !important;
    width: 1px; height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
}

/* Confirmation "ticket" — the one signature flourish, quiet enough
 * to sit inside any theme: a stub with a perforated tear line. */
.slotbook__done {
    border: 1px solid var(--sb-border);
    border-radius: var(--sb-radius);
    padding: 1.4em 1.5em;
    text-align: center;
}

.slotbook__done-badge {
    display: inline-block;
    margin: 0 0 .9em;
    padding: .3em .9em;
    font-size: .8em;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--sb-accent-contrast);
    background: var(--sb-accent);
    border-radius: 999px;
}

.slotbook__done-what {
    margin: 0 0 1em;
    padding-bottom: 1em;
    font-weight: 700;
    border-bottom: 1px dashed var(--sb-border);
}

.slotbook__done-msg { margin: 0; opacity: .8; }
