/**
 * KON Booking Engine — frontend widget styling.
 * Self-contained (own CSS variables) so it looks consistent on any theme.
 *
 * Structure:
 *   .konbk-root             wrapper — holds the CSS vars + data attrs
 *     .konbk-teaser          always-visible compact card: price + Book Now
 *     .konbk-widget           the popup — hidden until opened
 *       .konbk-widget__handle    (mobile — drag-handle affordance)
 *       .konbk-widget__close
 *       .konbk-widget__scroll    inner scrollable content
 *         .konbk-widget__progress   3-step progress indicator
 *         .konbk-widget__form
 *           .konbk-widget__step[data-konbk-step="1|2|3"]  one step's fields
 *
 * The popup is a fixed overlay on every screen size — a bottom sheet
 * on narrow viewports, a centred dialog on wider ones — opened by
 * tapping the teaser's "Book Now" button. JS moves .konbk-widget to
 * <body> so it always renders relative to the real viewport, even if
 * a theme wraps the sidebar in a transformed/animated ancestor that
 * would otherwise trap position:fixed children.
 */
/* Colour tokens declared globally (not scoped to .konbk-root) because
   JS moves the popup panel to be a direct child of <body> (see
   widget.js) — if these variables were scoped to .konbk-root, that
   move would take them out of the cascade and every var(--konbk-*)
   on the moved element would resolve to nothing (invisible
   text/backgrounds until an interaction state briefly repaints
   them). Declaring on :root keeps them available everywhere
   regardless of DOM position. */
/* Refined serif for display moments (price, step titles, summary
   total) paired with the existing system sans for everything else —
   reads noticeably more premium without slowing the whole widget
   down with a heavy font load. */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap');

:root {
    --konbk-primary: #1B4332;
    --konbk-primary-dk: #10291F;
    --konbk-primary-lt: #E6F0EA;
    --konbk-accent: #E4642A;
    --konbk-accent-lt: #FBEAE0;
    --konbk-bg-alt: #F6F3EC;
    --konbk-border: #E7E2D6;
    --konbk-ink: #21261F;
    --konbk-ink-mid: #545C52;
    --konbk-ink-soft: #8A9086;
    --konbk-danger: #C0392B;
    --konbk-whatsapp: #25D366;
    --konbk-whatsapp-dk: #1DA851;
}

.konbk-root {
    display: block;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    color: var(--konbk-ink);
}
.konbk-root *, .konbk-root *::before, .konbk-root *::after { box-sizing: border-box; }
/* .konbk-widget can end up outside .konbk-root once JS moves it to
   <body>, so apply the same box-sizing reset to it directly rather
   than relying on the .konbk-root descendant rule above. */
.konbk-widget, .konbk-widget *, .konbk-widget *::before, .konbk-widget *::after {
    box-sizing: border-box;
}

/* ---------- The teaser — always visible: price + Book Now only ---------- */
.konbk-teaser {
    background: #fff;
    border: 1px solid var(--konbk-border);
    border-radius: 24px;
    box-shadow: 0 1px 2px rgba(16,41,31,.05), 0 20px 40px -20px rgba(16,41,31,.22);
    max-width: 560px;
    margin: 0 0 1.5rem;
    padding: 2.1rem 2rem;
    position: relative;
    overflow: hidden;
    transition: box-shadow .2s ease;
}
.konbk-teaser:hover { box-shadow: 0 1px 2px rgba(16,41,31,.06), 0 24px 48px -18px rgba(16,41,31,.26); }
.konbk-teaser::before {
    content: ""; display: block; height: 5px; position: absolute; top: 0; left: 0; right: 0;
    background: linear-gradient(90deg, var(--konbk-primary), var(--konbk-accent));
}
.konbk-teaser__test-badge {
    display: inline-block; background: var(--konbk-accent-lt); color: #B4501E; font-size: .6875rem; font-weight: 700;
    padding: .25rem .55rem; border-radius: 999px; margin-bottom: .7rem;
}
.konbk-teaser__eyebrow {
    font-size: .6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
    color: var(--konbk-ink-soft); margin: 0 0 .3rem;
}
.konbk-teaser__price-row {
    display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: .5rem;
    margin-bottom: .7rem; padding-bottom: 1rem; border-bottom: 1px solid var(--konbk-border);
}
.konbk-teaser__price { font-family: 'Fraunces', Georgia, serif; font-size: 2.3rem; font-weight: 700; color: var(--konbk-primary); letter-spacing: -.01em; }
.konbk-teaser__price-unit { font-size: .875rem; color: var(--konbk-ink-mid); font-weight: 500; }
.konbk-teaser__price-child { font-size: .875rem; color: var(--konbk-ink-mid); text-align: right; font-weight: 600; }
.konbk-teaser__social-proof { font-size: .8125rem; color: var(--konbk-ink-mid); margin: 0 0 1.1rem; }
.konbk-teaser__cta {
    width: 100%; display: flex; align-items: center; justify-content: center; gap: .45rem;
    background: linear-gradient(135deg, var(--konbk-whatsapp), var(--konbk-whatsapp-dk)); color: #fff; border: none; border-radius: 999px;
    font-size: 1rem; font-weight: 700; padding: 1.05rem 1rem; cursor: pointer;
    box-shadow: 0 8px 20px -6px rgba(37,211,102,.55);
    transition: transform .12s ease, box-shadow .12s ease;
}
.konbk-teaser__cta:hover { transform: translateY(-2px); box-shadow: 0 12px 26px -6px rgba(37,211,102,.6); }
.konbk-teaser__cta:active { transform: translateY(0); }
.konbk-teaser__trust-row {
    list-style: none; margin: .9rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem 1rem;
    justify-content: center; font-size: .6875rem; color: var(--konbk-ink-soft); font-weight: 600;
}

/* ---------- The popup panel — fixed overlay on every screen size ---------- */
.konbk-widget {
    position: fixed;
    inset: 0;
    z-index: 100000;
    display: none;
    align-items: flex-end;
    justify-content: center;
    background: rgba(16,41,31,.55);
}
.konbk-widget.konbk-widget--open { display: flex; }
.konbk-widget__scroll {
    background: #fff;
    width: 100%;
    max-width: 480px;
    max-height: 90vh;
    overflow-y: auto;
    border-radius: 20px 20px 0 0;
    padding: 1.5rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom, 0px));
    position: relative;
    -webkit-overflow-scrolling: touch;
}
.konbk-widget__handle {
    display: block;
    position: absolute;
    top: .6rem; left: 50%;
    transform: translateX(-50%);
    width: 2.75rem; height: .3rem;
    border-radius: 999px;
    background: var(--konbk-border);
    z-index: 1;
}
.konbk-widget__close {
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: .9rem;
    right: .9rem;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    border: none;
    background: var(--konbk-bg-alt);
    color: var(--konbk-ink-mid);
    font-size: 1rem;
    cursor: pointer;
    z-index: 1;
}
body.konbk-modal-open { overflow: hidden; }

/* A roomier, more deliberate dialog once there's screen space to
   spare — bigger type, bigger touch targets, more breathing room
   around every field reads as more premium and gives each step's
   content room to make its case instead of feeling cramped. */
@media (min-width: 640px) {
    .konbk-widget { align-items: center; padding: 2.5rem; }
    .konbk-widget__scroll {
        max-width: 620px; border-radius: 26px; max-height: 88vh; padding: 2.75rem 3rem;
        box-shadow: 0 30px 70px -20px rgba(16,41,31,.42);
    }
    .konbk-widget__handle { display: none; }
    .konbk-widget__close { top: 1.35rem; right: 1.35rem; width: 2.5rem; height: 2.5rem; font-size: 1.0625rem; }
    .konbk-widget__step-title { font-size: 1.625rem; margin-bottom: 0; }
    .konbk-widget__step-subtitle { font-size: .9375rem; margin-bottom: 0; }
    .konbk-widget__field input[type="text"], .konbk-widget__field input[type="tel"],
    .konbk-widget__field input[type="email"], .konbk-widget__field input[type="date"], .konbk-widget__field select {
        padding: .95rem 1.1rem; font-size: 1rem;
    }
    .konbk-widget__next, .konbk-widget__back { padding: 1.1rem 1.2rem; font-size: 1rem; }
    .konbk-widget__submit { padding: 1.2rem 1rem; font-size: 1.0625rem; }
    .konbk-widget__progress { margin-bottom: 2rem; }
    .konbk-widget__progress-step { font-size: .75rem; }
    .konbk-widget__progress-step i { width: 1.9rem; height: 1.9rem; font-size: .84375rem; }
    .konbk-widget__form { gap: 1.35rem; }
    .konbk-widget__step { gap: 1.6rem; }
    .konbk-widget__fixed-cal { padding: 1.4rem; }
    .konbk-widget__cal-grid { gap: .35rem; }
    .konbk-widget__cal-day { font-size: .9375rem; border-radius: 14px; }
    .konbk-widget__cal-day-dot { width: 6px; height: 6px; }
    .konbk-widget__cal-header { margin-bottom: .9rem; }
    .konbk-widget__cal-title { font-size: .9375rem; }
}

.konbk-widget__test-badge {
    background: var(--konbk-accent-lt); color: #B4501E; font-size: .75rem; font-weight: 700;
    text-align: center; padding: .4rem .6rem; border-radius: 10px; margin-bottom: 1.1rem;
    letter-spacing: .01em;
}

/* ---------- Mobile sticky price bar — hidden on desktop and while the popup itself is open ---------- */
.konbk-widget__mobile-bar { display: none; }
@media (max-width: 639px) {
    .konbk-widget__mobile-bar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 1rem;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 99000;
        background: #fff;
        border-top: 1px solid var(--konbk-border);
        padding: .7rem 1.1rem calc(.7rem + env(safe-area-inset-bottom, 0px));
        box-shadow: 0 -6px 20px rgba(16,41,31,.1);
    }
    .konbk-widget__mobile-bar.konbk-widget__mobile-bar--hidden { display: none; }
    .konbk-widget__mobile-bar-price { line-height: 1.25; }
    .konbk-widget__mobile-bar-eyebrow { display: block; font-size: .625rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--konbk-ink-soft); }
    .konbk-widget__mobile-bar-amount { font-family: 'Fraunces', Georgia, serif; font-size: 1.3rem; font-weight: 700; color: var(--konbk-primary); display: block; }
    .konbk-widget__mobile-bar-btn {
        background: linear-gradient(135deg, var(--konbk-whatsapp), var(--konbk-whatsapp-dk)); color: #fff; border: none; border-radius: 999px;
        padding: .8rem 1.6rem; font-weight: 700; font-size: .9375rem; cursor: pointer; flex: 0 0 auto;
        box-shadow: 0 6px 14px -6px rgba(37,211,102,.55);
    }
    .konbk-widget__mobile-bar-btn:active { transform: translateY(1px); }
    /* Leave room at the bottom of the page so the fixed bar never
       covers the last bit of content. Applied by JS to <body>. */
    body.konbk-has-mobile-bar { padding-bottom: 4.75rem; }
}

/* Step progress indicator */
.konbk-widget__progress {
    display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.6rem; gap: .25rem;
}
.konbk-widget__progress-step {
    display: flex; align-items: center; gap: .45rem; font-size: .6875rem; font-weight: 700;
    color: var(--konbk-ink-soft); flex: 1; letter-spacing: .01em;
}
.konbk-widget__progress-step i {
    width: 1.65rem; height: 1.65rem; border-radius: 50%; display: flex; align-items: center; justify-content: center;
    background: var(--konbk-bg-alt); color: var(--konbk-ink-soft); font-style: normal; font-size: .75rem; font-weight: 700; flex: 0 0 auto;
    transition: background .2s ease, color .2s ease, transform .2s ease;
}
.konbk-widget__progress-step.is-active { color: var(--konbk-ink); }
.konbk-widget__progress-step.is-active i { background: var(--konbk-primary); color: #fff; transform: scale(1.08); box-shadow: 0 0 0 4px var(--konbk-primary-lt); }
.konbk-widget__progress-step.is-done i { background: var(--konbk-primary); color: #fff; }
.konbk-widget__progress-step:not(:last-child)::after {
    content: ""; flex: 1; height: 2px; background: var(--konbk-border); margin-left: .4rem; order: 3; min-width: .75rem;
    transition: background .2s ease;
}
.konbk-widget__progress-step.is-done:not(:last-child)::after { background: var(--konbk-primary); }

/* Smooth cross-fade + rise when a step becomes visible */
.konbk-widget__step:not([hidden]) { animation: konbk-step-in .28s ease; }
@keyframes konbk-step-in {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}

.konbk-widget__step-title {
    font-family: 'Fraunces', Georgia, serif; font-size: 1.375rem; font-weight: 600; color: var(--konbk-ink);
    margin: 0; letter-spacing: -.01em;
}
.konbk-widget__step-subtitle {
    font-size: .84375rem; color: var(--konbk-ink-mid); margin: 0; line-height: 1.5;
}
.konbk-widget__step-error {
    font-size: .8125rem; color: var(--konbk-danger); background: #FCEDEA; border-radius: 10px;
    padding: .6rem .8rem; margin: .3rem 0 0;
}
.konbk-widget__step-actions { display: flex; gap: .7rem; margin: 0; }
.konbk-widget__next {
    flex: 1; background: linear-gradient(135deg, var(--konbk-primary), var(--konbk-primary-dk)); color: #fff; border: none; border-radius: 999px;
    font-size: .9375rem; font-weight: 700; padding: 1rem 1rem; cursor: pointer;
    box-shadow: 0 6px 16px -8px rgba(27,67,50,.55);
    transition: transform .12s ease, box-shadow .12s ease;
}
.konbk-widget__next:hover { transform: translateY(-1px); box-shadow: 0 10px 20px -8px rgba(27,67,50,.6); }
.konbk-widget__back {
    flex: 0 0 auto; background: var(--konbk-bg-alt); color: var(--konbk-ink-mid); border: none; border-radius: 999px;
    font-size: .9375rem; font-weight: 700; padding: 1rem 1.15rem; cursor: pointer; transition: background .15s ease;
}
.konbk-widget__back:hover { background: var(--konbk-border); }

/* Step 1's own "Continue" sits alone (no Back button on the first step) */
.konbk-widget__step[data-konbk-step="1"] .konbk-widget__next { width: 100%; margin-top: .3rem; }
.konbk-widget__child-note { display: block; font-size: .6875rem; color: var(--konbk-ink-soft); font-weight: 400; }

.konbk-widget__inclusions {
    list-style: none; margin: 0; padding: 1rem 1.1rem;
    background: linear-gradient(165deg, var(--konbk-primary-lt), #fff);
    border: 1px solid var(--konbk-border); border-radius: 14px; display: grid; gap: .5rem;
}
.konbk-widget__inclusions li { font-size: .8125rem; color: var(--konbk-ink); font-weight: 500; display: flex; align-items: center; gap: .5rem; }

/* Add-ons ------------------------------------------------------ */
.konbk-widget__addons { margin: 0; }
.konbk-widget__addons-title { font-size: .84375rem; font-weight: 700; color: var(--konbk-ink); margin: 0 0 .55rem; display: flex; align-items: baseline; gap: .35rem; }
.konbk-widget__addons-optional { font-size: .6875rem; font-weight: 500; color: var(--konbk-ink-soft); text-transform: none; }
.konbk-widget__addon {
    display: flex; align-items: flex-start; gap: .65rem; padding: .8rem .9rem; margin-bottom: .55rem;
    border: 1.5px solid var(--konbk-border); border-radius: 14px; background: #fff; cursor: pointer;
    transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.konbk-widget__addon:last-child { margin-bottom: 0; }
.konbk-widget__addon:hover { border-color: var(--konbk-primary); background: var(--konbk-primary-lt); }
.konbk-widget__addon:has(input:checked) { border-color: var(--konbk-primary); background: var(--konbk-primary-lt); box-shadow: 0 0 0 1px var(--konbk-primary); }
.konbk-widget__addon input[type="checkbox"] { position: absolute; opacity: 0; width: 0; height: 0; }
.konbk-widget__addon-check {
    flex: 0 0 auto; width: 1.2rem; height: 1.2rem; margin-top: .1rem; border-radius: 6px;
    border: 1.5px solid var(--konbk-border); background: #fff; position: relative; transition: all .15s ease;
}
.konbk-widget__addon input:checked ~ .konbk-widget__addon-check {
    background: var(--konbk-primary); border-color: var(--konbk-primary);
}
.konbk-widget__addon input:checked ~ .konbk-widget__addon-check::after {
    content: ""; position: absolute; left: 6px; top: 2px; width: 5px; height: 9px;
    border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
}
.konbk-widget__addon input:focus-visible ~ .konbk-widget__addon-check { box-shadow: 0 0 0 3px var(--konbk-primary-lt); }
.konbk-widget__addon-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .15rem; }
.konbk-widget__addon-name { font-size: .875rem; font-weight: 600; color: var(--konbk-ink); }
.konbk-widget__addon-desc { font-size: .71875rem; color: var(--konbk-ink-soft); line-height: 1.4; }
.konbk-widget__addon-price { flex: 0 0 auto; font-size: .84375rem; font-weight: 700; color: var(--konbk-accent); white-space: nowrap; }
.konbk-widget__addon input:checked ~ .konbk-widget__addon-price { color: var(--konbk-primary); }
.konbk-widget__summary-row--addons { color: var(--konbk-accent); font-weight: 600; }

.konbk-widget__form { display: block; }
.konbk-widget__step { display: flex; flex-direction: column; gap: 1.2rem; }
/* `display:flex` above has the same specificity as the browser's
   built-in `[hidden] { display:none }` rule, and author styles beat
   user-agent styles on a tie — so without this line every step would
   render at once instead of one at a time. This explicit override
   restores the hide-when-hidden behaviour. */
.konbk-widget__step[hidden] { display: none; }
.konbk-widget__step-header { display: flex; flex-direction: column; gap: .35rem; }
.konbk-widget__field label { display: block; font-size: .6875rem; font-weight: 700; color: var(--konbk-ink-mid); margin-bottom: .4rem; text-transform: uppercase; letter-spacing: .04em; }
.konbk-widget__field input[type="text"], .konbk-widget__field input[type="tel"], .konbk-widget__field input[type="email"], .konbk-widget__field input[type="date"], .konbk-widget__field select {
    width: 100%; padding: .75rem .9rem; border: 1.5px solid var(--konbk-border); border-radius: 12px; font-size: .9375rem; color: var(--konbk-ink); background: #fff;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.konbk-widget__field input:focus, .konbk-widget__field select:focus { outline: none; border-color: var(--konbk-primary); box-shadow: 0 0 0 3px var(--konbk-primary-lt); }

.konbk-widget__row { display: grid; grid-template-columns: 1fr 1fr; gap: .85rem; }

.konbk-widget__slots-msg { font-size: .75rem; font-weight: 600; color: var(--konbk-primary); margin: .35rem 0 0; }
.konbk-widget__slots-msg--urgent { color: var(--konbk-accent); }

/* ---------- Departure date: manual text entry + calendar popover ----------
   Two ways to set the same underlying date so travellers who find a
   calendar fiddly on mobile can just type it, while everyone else can
   tap the 📅 button. Both write into the hidden [data-konbk-date]
   field that actually gets submitted. */
.konbk-widget__date-picker { position: relative; }
.konbk-widget__date-input-row { display: flex; gap: .5rem; }
.konbk-widget__date-manual {
    flex: 1; min-width: 0; padding: .65rem .8rem; border: 1.5px solid var(--konbk-border); border-radius: 10px;
    font-size: .9375rem; font-weight: 600; color: var(--konbk-ink); background: #fff;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.konbk-widget__date-manual:focus { outline: none; border-color: var(--konbk-primary); box-shadow: 0 0 0 3px var(--konbk-primary-lt); }
.konbk-widget__date-manual--error { border-color: var(--konbk-danger); }
.konbk-widget__date-cal-btn {
    flex: 0 0 auto; width: 2.9rem; border: 1.5px solid var(--konbk-border); border-radius: 10px;
    background: var(--konbk-bg-alt); font-size: 1.1rem; line-height: 1; cursor: pointer;
    transition: background .15s ease, border-color .15s ease;
}
.konbk-widget__date-cal-btn:hover,
.konbk-widget__date-cal-btn[aria-expanded="true"] { background: var(--konbk-primary-lt); border-color: var(--konbk-primary); }
.konbk-widget__date-hint { font-size: .75rem; color: var(--konbk-ink-soft); margin: .35rem 0 0; }
.konbk-widget__date-hint--error { color: var(--konbk-danger); font-weight: 600; }

.konbk-widget__calendar {
    margin-top: .6rem;
    background: #fff; border: 1px solid var(--konbk-border); border-radius: 14px;
    box-shadow: 0 1px 2px rgba(16,41,31,.04); padding: .85rem;
}
.konbk-widget__cal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: .6rem; }
.konbk-widget__cal-title { font-size: .8125rem; font-weight: 700; color: var(--konbk-ink); }
.konbk-widget__cal-nav {
    width: 1.8rem; height: 1.8rem; flex: 0 0 auto; border: none; background: var(--konbk-bg-alt); border-radius: 50%;
    font-size: 1rem; font-weight: 700; color: var(--konbk-primary); cursor: pointer; line-height: 1;
}
.konbk-widget__cal-nav:hover { background: var(--konbk-primary-lt); }
.konbk-widget__cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: .25rem; }
.konbk-widget__cal-grid--dow { margin-bottom: .35rem; }
.konbk-widget__cal-grid--dow span { text-align: center; font-size: .6875rem; font-weight: 700; color: var(--konbk-ink-soft); text-transform: uppercase; letter-spacing: .04em; }
.konbk-widget__cal-day {
    aspect-ratio: 1; border: none; background: transparent; border-radius: 12px; font-size: .875rem;
    color: var(--konbk-ink); cursor: pointer; font-weight: 600; transition: background .12s ease, transform .1s ease;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .2rem; padding: 0;
}
.konbk-widget__cal-day-num { line-height: 1; }
.konbk-widget__cal-day-dot { width: 5px; height: 5px; border-radius: 50%; background: transparent; }
.konbk-widget__cal-day:hover:not(:disabled) { background: var(--konbk-bg-alt); }
.konbk-widget__cal-day:active:not(:disabled) { transform: scale(.93); }
.konbk-widget__cal-day:disabled { color: var(--konbk-ink-soft); opacity: .35; cursor: not-allowed; }
.konbk-widget__cal-day--selected { background: var(--konbk-primary); color: #fff; }
.konbk-widget__cal-day--selected .konbk-widget__cal-day-dot { background: #fff; }

/* Fixed batch-date calendar — every day in the month renders, but
   only actual departure dates are enabled/clickable. A clean text
   number plus a small status dot keeps a month full of open dates
   from turning into a wall of solid colour; only the date the guest
   has actually picked gets a filled background. */
.konbk-widget__fixed-cal {
    background: #fff; border: 1px solid var(--konbk-border); border-radius: 18px; padding: 1.1rem;
}
.konbk-widget__cal-grid--fixed { margin-bottom: .85rem; }
.konbk-widget__cal-day--off .konbk-widget__cal-day-num { color: var(--konbk-ink-soft); }
.konbk-widget__cal-day--available { color: var(--konbk-primary-dk); }
.konbk-widget__cal-day--available .konbk-widget__cal-day-dot { background: var(--konbk-primary); }
.konbk-widget__cal-day--available:hover { background: var(--konbk-primary-lt); }
.konbk-widget__cal-day--low { color: #B4501E; }
.konbk-widget__cal-day--low .konbk-widget__cal-day-dot { background: var(--konbk-accent); }
.konbk-widget__cal-day--low:hover { background: var(--konbk-accent-lt); }
.konbk-widget__cal-day--available.konbk-widget__cal-day--selected,
.konbk-widget__cal-day--low.konbk-widget__cal-day--selected {
    background: var(--konbk-primary); color: #fff; box-shadow: 0 0 0 3px var(--konbk-primary-lt); transform: scale(1.04);
}
.konbk-widget__cal-legend { display: flex; gap: 1rem; margin: .2rem 0 .5rem; flex-wrap: wrap; }
.konbk-widget__cal-legend-item {
    display: inline-flex; align-items: center; gap: .35rem; font-size: .6875rem; font-weight: 600; color: var(--konbk-ink-mid);
}
.konbk-widget__cal-dot { width: .55rem; height: .55rem; border-radius: 50%; display: inline-block; }
.konbk-widget__cal-dot--available { background: var(--konbk-primary); }
.konbk-widget__cal-dot--low { background: var(--konbk-accent); }

.konbk-widget__stepper {
    display: flex; align-items: center; border: 1.5px solid var(--konbk-border); border-radius: 999px;
    overflow: hidden; background: #fff; transition: border-color .15s ease;
}
.konbk-widget__stepper:focus-within { border-color: var(--konbk-primary); }
.konbk-widget__step-btn {
    width: 2.55rem; height: 2.55rem; flex: 0 0 auto; background: transparent; border: none;
    font-size: 1.3rem; font-weight: 700; color: var(--konbk-primary); cursor: pointer;
    transition: background .15s ease, transform .1s ease;
}
.konbk-widget__step-btn:hover { background: var(--konbk-primary-lt); }
.konbk-widget__step-btn:active { background: var(--konbk-primary-lt); transform: scale(.92); }
.konbk-widget__stepper input {
    flex: 1; text-align: center; border: none; font-size: 1rem; font-weight: 700;
    background: transparent; padding: 0; min-width: 2rem;
    /* readonly number inputs render near-invisible / washed-out text
       in several browsers unless the colour is set explicitly. */
    color: var(--konbk-ink);
    -webkit-text-fill-color: var(--konbk-ink);
    opacity: 1;
    -moz-appearance: textfield;
}
.konbk-widget__stepper input::-webkit-outer-spin-button,
.konbk-widget__stepper input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.konbk-widget__summary {
    background: linear-gradient(165deg, var(--konbk-bg-alt), #fff);
    border: 1px solid var(--konbk-border); border-radius: 16px;
    padding: 1.1rem 1.25rem; display: grid; gap: .45rem;
}
.konbk-widget__summary-row { display: flex; justify-content: space-between; font-size: .8125rem; color: var(--konbk-ink-mid); font-weight: 500; }
.konbk-widget__summary-row--advance {
    font-family: 'Fraunces', Georgia, serif; font-size: 1.375rem; font-weight: 600; color: var(--konbk-primary);
    border-top: 1px dashed #D8D2C2; padding-top: .55rem; margin-top: .2rem;
}
.konbk-widget__summary-row--balance { font-size: .75rem; }

.konbk-widget__advance-note {
    font-size: .78125rem; color: #2C5670; background: #E4F0F6; padding: .55rem .85rem; border-radius: 10px; margin: 0;
    display: flex; align-items: flex-start; gap: .4rem; line-height: 1.4;
}

.konbk-widget__error { background: #FDECEA; color: var(--konbk-danger); font-size: .8125rem; font-weight: 600; padding: .6rem .85rem; border-radius: 10px; margin: 0; }

.konbk-widget__submit {
    width: 100%; justify-content: center; display: flex; align-items: center; gap: .45rem;
    background: linear-gradient(135deg, var(--konbk-whatsapp), var(--konbk-whatsapp-dk)); color: #fff; border: none; border-radius: 999px;
    font-size: 1rem; font-weight: 700; padding: 1.05rem 1rem; cursor: pointer;
    box-shadow: 0 8px 20px -6px rgba(37,211,102,.55);
    transition: transform .12s ease, box-shadow .12s ease;
}
.konbk-widget__submit:hover { transform: translateY(-2px); box-shadow: 0 12px 26px -6px rgba(37,211,102,.6); }
.konbk-widget__submit:active { transform: translateY(0); }
.konbk-widget__submit:disabled { opacity: .6; cursor: wait; transform: none; }

.konbk-widget__trust-row { list-style: none; display: flex; flex-wrap: wrap; gap: .5rem; padding: 0; margin: 0; justify-content: center; }
.konbk-widget__trust-row li { font-size: .6875rem; font-weight: 600; color: var(--konbk-ink-mid); border: 1px solid var(--konbk-border); padding: .3rem .65rem; border-radius: 999px; }

.konbk-widget__success { text-align: center; padding: 1rem .5rem; }
.konbk-widget__success-icon {
    width: 3.5rem; height: 3.5rem; border-radius: 50%; background: var(--konbk-primary-lt);
    display: flex; align-items: center; justify-content: center; font-size: 1.75rem; margin: 0 auto .75rem;
}
.konbk-widget__success h3 { color: var(--konbk-primary); margin: 0 0 .35rem; font-size: 1.25rem; }
.konbk-widget__success-ref { background: var(--konbk-bg-alt); border-radius: 8px; padding: .3rem .8rem; display: inline-block; font-size: .875rem; margin: .4rem 0; }
.konbk-widget__success-note { font-size: .75rem; color: var(--konbk-ink-soft); margin-top: .6rem; }

.konbk-widget__cancellation { font-size: .75rem; color: var(--konbk-ink-soft); margin: 0; padding-top: .9rem; border-top: 1px solid var(--konbk-border); line-height: 1.5; }