/**
 * KAT Booking popup — WhatsApp + Telegram, calendar, assistant, map.
 * Mobile-first + smart responsive (phone bottom-sheet -> tablet/desktop card).
 * Scoped under .kat-book so it never leaks into the host theme.
 *
 * v4 redesign: sectioned "When / Details / Confirm" flow, chip-based time
 * grid, party-size stepper, seating preference, and a dedicated success
 * screen — layered on the same data-kat-book-* JS hooks.
 */
.kat-book {
	--kat-navy:#001D6C;
	--kat-navy-ink:#001449;
	--kat-gold:#EAB308;
	--kat-ink:#1a1a1a;
	--kat-muted:#6b6b76;
	--kat-faint:#9797a3;
	--kat-line:#e6e6ea;
	--kat-surface:#fafafc;
	--kat-radius-lg:18px;
	--kat-radius-md:12px;
	--kat-radius-sm:9px;
	--kat-shadow-modal:0 28px 70px rgba(0,10,40,.35);
	font-family:inherit;
	box-sizing:border-box;
}
.kat-book *, .kat-book *::before, .kat-book *::after { box-sizing:border-box; }

/* ---------------------------------------------------------------- */
/* Trigger */
/* ---------------------------------------------------------------- */
.kat-book__trigger { display:inline-flex; align-items:center; gap:9px; border:none; border-radius:999px;
	background:linear-gradient(135deg,var(--kat-navy),var(--kat-navy-ink)); color:#fff; font-weight:700; font-size:15px;
	padding:13px 22px; cursor:pointer; box-shadow:0 10px 24px rgba(0,29,108,.32), inset 0 0 0 1px rgba(234,179,8,.35);
	transition:transform .15s ease, box-shadow .15s ease, filter .15s ease; }
.kat-book__trigger:hover { filter:brightness(1.08); transform:translateY(-1px); box-shadow:0 14px 30px rgba(0,29,108,.38), inset 0 0 0 1px rgba(234,179,8,.5); }
.kat-book__trigger:active { transform:translateY(0); }
.kat-book__trigger-icon { font-size:17px; }
.kat-book--floating { position:fixed; right:18px; bottom:18px; z-index:99990; }
@media (max-width:480px){ .kat-book--floating{ right:12px; bottom:12px; } .kat-book--floating .kat-book__trigger{ padding:12px 18px; font-size:14px; } }

/* ---------------------------------------------------------------- */
/* Overlay + modal shell */
/* ---------------------------------------------------------------- */
.kat-book__overlay { position:fixed; inset:0; z-index:99991; background:rgba(10,12,22,.6); backdrop-filter:blur(2px);
	display:flex; align-items:center; justify-content:center; padding:16px; animation:kat-book-fade .18s ease; }
.kat-book__overlay[hidden] { display:none; }
@keyframes kat-book-fade { from{ opacity:0; } to{ opacity:1; } }
.kat-book__modal { position:relative; width:100%; max-width:440px; max-height:92vh; overflow-y:auto;
	-webkit-overflow-scrolling:touch; background:#fff; color:var(--kat-ink); border-radius:var(--kat-radius-lg);
	padding:22px 22px 20px; box-shadow:var(--kat-shadow-modal); animation:kat-book-pop .2s cubic-bezier(.2,.8,.3,1); }
@keyframes kat-book-pop { from{ opacity:0; transform:translateY(10px) scale(.98); } to{ opacity:1; transform:none; } }
.kat-book__close { position:absolute; top:12px; right:14px; width:34px; height:34px; border:none; background:#f2f2f5;
	font-size:22px; line-height:1; color:#7a7a86; cursor:pointer; border-radius:999px; transition:background .15s ease,color .15s ease; }
.kat-book__close:hover { background:#e9e9ee; color:#333; }
.kat-book__title { margin:0 0 14px; font-size:21px; font-weight:800; color:var(--kat-navy); padding-right:32px; letter-spacing:-.01em; }

/* ---------------------------------------------------------------- */
/* Step progress rail */
/* ---------------------------------------------------------------- */
.kat-book__steps { display:flex; align-items:center; gap:6px; margin:0 0 18px; }
.kat-book__step { flex:1 1 0; position:relative; display:flex; flex-direction:column; align-items:center; gap:4px;
	font-size:12px; font-weight:800; color:#fff; width:26px; height:26px; line-height:26px; text-align:center;
	border-radius:50%; background:var(--kat-line); color:var(--kat-faint); flex:0 0 auto; }
.kat-book__step em { position:absolute; top:32px; left:50%; transform:translateX(-50%); font-style:normal;
	font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--kat-faint); white-space:nowrap; }
.kat-book__step.is-active, .kat-book__step.is-done { background:var(--kat-navy); color:#fff; }
.kat-book__step.is-active em, .kat-book__step.is-done em { color:var(--kat-navy); }
.kat-book__steps::before { content:''; }
.kat-book__steps { position:relative; }
.kat-book__steps { padding-bottom:14px; margin-bottom:20px; border-bottom:1px solid var(--kat-line); }
.kat-book__steps { justify-content:space-between; }
.kat-book__step:not(:last-child)::after { content:''; position:absolute; left:100%; top:50%; width:calc(100% - 4px);
	height:2px; background:var(--kat-line); transform:translateY(-50%); z-index:-1; }
.kat-book__step.is-done:not(:last-child)::after { background:var(--kat-navy); }

.kat-book__body { display:flex; flex-direction:column; }

/* ---------------------------------------------------------------- */
/* Section headings + field groups */
/* ---------------------------------------------------------------- */
.kat-book__field-group { margin:0 0 14px; }
.kat-book__field-label, .kat-book__assistant-title { display:block; font-size:11.5px; font-weight:800; text-transform:uppercase;
	letter-spacing:.05em; color:var(--kat-muted); margin-bottom:8px; }
.kat-book__hint { margin:-4px 0 8px; font-size:12px; color:var(--kat-faint); }
.kat-book__hint:empty { display:none; }

/* Assistant: quick-pick + meal chips */
.kat-book__assistant { margin:0 0 12px; }
.kat-book__meals { margin:0 0 14px; }
.kat-book__chips { display:flex; flex-wrap:wrap; gap:7px; }
.kat-book__chip { border:1.5px solid var(--kat-line); background:#fff; border-radius:999px; padding:8px 14px;
	font-size:13px; font-weight:700; color:var(--kat-navy); cursor:pointer; transition:border-color .15s ease,background .15s ease,transform .1s ease; }
.kat-book__chip:hover { border-color:var(--kat-navy); background:#f0f3fb; }
.kat-book__chip:active { transform:scale(.97); }
.kat-book__chip.is-active { background:var(--kat-navy); border-color:var(--kat-navy); color:#fff; }
.kat-book__chips--meal .kat-book__chip { display:inline-flex; align-items:center; gap:6px; }

/* Live summary pill */
.kat-book__summary { margin:0 0 14px; font-size:13px; color:var(--kat-faint); padding:10px 14px; background:var(--kat-surface);
	border-radius:var(--kat-radius-sm); border:1px dashed var(--kat-line); }
.kat-book__summary[data-ready] { color:var(--kat-navy); font-weight:700; background:#eef1fb; border:1px solid rgba(0,29,108,.18); }

/* ---------------------------------------------------------------- */
/* Calendar */
/* ---------------------------------------------------------------- */
.kat-book__calendar { margin:0 0 16px; padding:14px; background:var(--kat-surface); border-radius:var(--kat-radius-md); border:1px solid var(--kat-line); }
.kat-cal__head { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.kat-cal__head span { font-size:14px; font-weight:800; color:var(--kat-ink); }
.kat-cal__nav { border:1px solid var(--kat-line); background:#fff; border-radius:8px; width:32px; height:32px;
	font-size:15px; cursor:pointer; color:var(--kat-navy); transition:background .15s ease; }
.kat-cal__nav:hover:not(:disabled) { background:#eef1fb; }
.kat-cal__nav:disabled { opacity:.35; cursor:default; }
.kat-cal__grid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.kat-cal__dow { text-align:center; font-size:10.5px; font-weight:700; color:var(--kat-faint); padding:2px 0 4px; }
.kat-cal__day { border:1px solid transparent; background:#fff; border-radius:9px; padding:0; aspect-ratio:1/1;
	font-size:13px; font-weight:600; cursor:pointer; color:var(--kat-ink); min-height:34px; transition:background .12s ease,color .12s ease,transform .1s ease; }
.kat-cal__day:hover:not(:disabled) { border-color:var(--kat-navy); background:#eef1fb; }
.kat-cal__day:active:not(:disabled) { transform:scale(.94); }
.kat-cal__day--empty { background:transparent; border:none; cursor:default; }
.kat-cal__day:disabled:not(.kat-cal__day--selected) { opacity:.3; cursor:default; }
.kat-cal__day--today { box-shadow:inset 0 0 0 1.5px var(--kat-gold); font-weight:800; }
.kat-cal__day--selected { background:var(--kat-navy); color:#fff; font-weight:800; box-shadow:0 4px 12px rgba(0,29,108,.35); }

/* ---------------------------------------------------------------- */
/* Time grid (chip buttons, replaces the old <select>) */
/* ---------------------------------------------------------------- */
.kat-book__timegrid { display:flex; flex-wrap:wrap; gap:7px; max-height:168px; overflow-y:auto; padding:2px 2px 4px; }
.kat-book__timegrid:empty::after { content:attr(data-empty-label); font-size:13px; color:var(--kat-faint); padding:8px 2px; }
.kat-time { border:1.5px solid var(--kat-line); background:#fff; border-radius:999px; padding:8px 13px; font-size:13px;
	font-weight:700; color:var(--kat-ink); cursor:pointer; transition:border-color .15s ease,background .15s ease,color .15s ease,transform .1s ease; }
.kat-time:hover:not(:disabled) { border-color:var(--kat-navy); background:#f0f3fb; }
.kat-time:active:not(:disabled) { transform:scale(.96); }
.kat-time.is-selected { background:var(--kat-navy); border-color:var(--kat-navy); color:#fff; box-shadow:0 4px 12px rgba(0,29,108,.3); }
.kat-time:disabled { opacity:.35; cursor:not-allowed; text-decoration:line-through; }

/* ---------------------------------------------------------------- */
/* Party stepper + seating chips */
/* ---------------------------------------------------------------- */
.kat-book__row--split { display:flex; gap:14px; }
.kat-book__row--split .kat-book__field-group { flex:1 1 0; margin-bottom:14px; }
.kat-book__stepper { display:inline-flex; align-items:center; gap:0; border:1.5px solid var(--kat-line); border-radius:999px;
	overflow:hidden; background:#fff; }
.kat-book__stepper-btn { width:38px; height:38px; border:none; background:var(--kat-surface); font-size:18px; font-weight:700;
	color:var(--kat-navy); cursor:pointer; line-height:1; transition:background .15s ease; }
.kat-book__stepper-btn:hover { background:#eef1fb; }
.kat-book__stepper-btn:active { background:#e2e7f8; }
.kat-book__stepper-val { min-width:34px; text-align:center; font-size:15px; font-weight:800; color:var(--kat-ink); }
.kat-book__seating { display:flex; flex-direction:column; gap:6px; }
.kat-book__seating-opt { border:1.5px solid var(--kat-line); background:#fff; border-radius:var(--kat-radius-sm); padding:8px 12px;
	font-size:12.5px; font-weight:700; color:var(--kat-ink); text-align:left; cursor:pointer; transition:border-color .15s ease,background .15s ease; }
.kat-book__seating-opt:hover { border-color:var(--kat-navy); }
.kat-book__seating-opt.is-active { border-color:var(--kat-navy); background:#eef1fb; color:var(--kat-navy); }

/* ---------------------------------------------------------------- */
/* Form fields */
/* ---------------------------------------------------------------- */
.kat-book__form label { display:block; font-size:13px; font-weight:700; color:#4a4a52; margin-bottom:12px; }
.kat-book__form input, .kat-book__form select, .kat-book__form textarea { width:100%; margin-top:5px;
	border:1.5px solid var(--kat-line); border-radius:var(--kat-radius-sm); padding:11px 13px; font-size:15px; font-family:inherit;
	color:var(--kat-ink); background:#fff; transition:border-color .15s ease,box-shadow .15s ease; }
.kat-book__form input:focus, .kat-book__form select:focus, .kat-book__form textarea:focus {
	outline:none; border-color:var(--kat-navy); box-shadow:0 0 0 3px rgba(0,29,108,.12); }
.kat-book__row { display:flex; gap:10px; }
.kat-book__row label { flex:1; }

/* Messages */
.kat-book__msg { margin:2px 0 10px; font-size:13px; min-height:1.2em; font-weight:600; }
.kat-book__msg[data-tone="error"] { color:#b3261e; }
.kat-book__msg[data-tone="success"] { color:#1a7f4e; }

/* ---------------------------------------------------------------- */
/* Action buttons */
/* ---------------------------------------------------------------- */
.kat-book__actions { display:flex; flex-flow:row wrap; gap:9px; margin-top:6px; }
.kat-book__btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; border:none;
	border-radius:999px; padding:13px 16px; font-weight:700; font-size:14px; cursor:pointer; white-space:nowrap;
	transition:filter .15s ease, transform .1s ease; }
.kat-book__btn-icon { display:inline-flex; align-items:center; justify-content:center; line-height:1; flex:0 0 auto; }
.kat-book__btn-icon svg { display:block; width:16px; height:16px; }
.kat-book__btn--whatsapp, .kat-book__btn--telegram { flex:1 1 auto; min-width:0; }
.kat-book__btn--whatsapp { background:#25d366; color:#083d1c; }
.kat-book__btn--telegram { background:#229ed9; color:#06344a; }
.kat-book__btn--request { flex:1 1 100%; order:-1; background:linear-gradient(135deg,var(--kat-navy),var(--kat-navy-ink)); color:#fff;
	font-size:15.5px; padding:15px 18px; letter-spacing:.2px;
	box-shadow:inset 0 0 0 2px var(--kat-gold), 0 10px 22px rgba(0,29,108,.28); }
.kat-book__btn--request:hover { filter:brightness(1.08); }
.kat-book__btn:hover { filter:brightness(1.05); transform:translateY(-1px); }
.kat-book__btn:active { transform:translateY(0); }
.kat-book__btn:disabled { opacity:.6; cursor:default; filter:none; transform:none; }
.kat-book__link-btn { display:block; margin:14px auto 0; border:none; background:none; color:var(--kat-muted);
	font-size:13px; font-weight:700; text-decoration:underline; cursor:pointer; }
.kat-book__link-btn:hover { color:var(--kat-navy); }
@media (max-width:360px){
	.kat-book__btn--whatsapp, .kat-book__btn--telegram { font-size:13px; padding:12px 10px; gap:6px; }
}

/* ---------------------------------------------------------------- */
/* Success screen */
/* ---------------------------------------------------------------- */
.kat-book__success { text-align:center; padding:6px 4px 4px; animation:kat-book-pop .25s cubic-bezier(.2,.8,.3,1); }
.kat-book__success[hidden] { display:none; }
.kat-book__success-icon { width:56px; height:56px; margin:0 auto 12px; border-radius:50%; background:#e8f8ee;
	color:#1a7f4e; font-size:28px; font-weight:800; display:flex; align-items:center; justify-content:center; }
.kat-book__success-title { margin:0 0 14px; font-size:18px; font-weight:800; color:var(--kat-navy); }
.kat-book__success-summary { display:grid; grid-template-columns:auto 1fr; gap:6px 12px; text-align:left; margin:0 0 14px;
	padding:14px 16px; background:var(--kat-surface); border-radius:var(--kat-radius-md); border:1px solid var(--kat-line); }
.kat-book__success-summary dt { font-size:11.5px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--kat-faint); }
.kat-book__success-summary dd { margin:0; font-size:14px; font-weight:700; color:var(--kat-ink); }
.kat-book__success .kat-book__actions { margin-top:6px; }

/* Add-to-calendar CTAs */
.kat-book__calcta { display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin-top:12px; }
.kat-book__calcta[hidden] { display:none; }
.kat-book__cal-link { display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:600;
	color:var(--kat-navy); text-decoration:none; border-bottom:1px dashed rgba(0,29,108,.4); }
.kat-book__cal-link:hover { border-bottom-style:solid; }

/* ---------------------------------------------------------------- */
/* Discover panel — TripAdvisor-style Map / Menu / Experiences tabs
   surfaced right inside the booking flow, so a guest can check the
   location, skim signature dishes, or browse experiences without ever
   leaving the popup. Built client-side (see buildDiscover() in
   kat-booking-popup.js) from the localized KAT_BOOKING.discover config;
   a tab with no live cards yet still shows a plain "view page" link. */
/* ---------------------------------------------------------------- */
.kat-book__discover { margin-top:16px; border-top:1px solid var(--kat-line); padding-top:14px; }
.kat-book__discover[hidden] { display:none; }
.kat-book__discover-tabs { display:flex; gap:5px; margin-bottom:12px; background:var(--kat-surface); padding:4px; border-radius:12px; }
.kat-book__discover-tab { flex:1 1 0; border:none; background:transparent; color:var(--kat-muted); font-weight:700;
	font-size:13px; padding:9px 6px; border-radius:9px; cursor:pointer; transition:background .15s ease,color .15s ease; }
.kat-book__discover-tab:hover { color:var(--kat-navy); }
.kat-book__discover-tab.is-active { background:#fff; color:var(--kat-navy); box-shadow:0 2px 8px rgba(0,0,0,.08); }
.kat-book__discover-pane[hidden] { display:none; }
.kat-book__discover-browse { display:inline-block; margin-top:2px; font-size:13px; font-weight:700;
	color:var(--kat-navy); text-decoration:none; }
.kat-book__discover-browse:hover { text-decoration:underline; }

/* Map pane */
.kat-book__dmap { margin-bottom:8px; }
.kat-book__dmap iframe { width:100%; height:180px; border:0; border-radius:12px; display:block; }

/* Menu / Experiences card strips */
.kat-book__dstrip { display:flex; gap:10px; overflow-x:auto; padding-bottom:8px; margin-bottom:4px;
	scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch; }
.kat-book__dcard { flex:0 0 auto; width:150px; scroll-snap-align:start; border:1px solid var(--kat-line);
	border-radius:12px; overflow:hidden; text-decoration:none; color:var(--kat-ink); background:#fff;
	transition:transform .15s ease, box-shadow .15s ease; }
.kat-book__dcard:hover { transform:translateY(-2px); box-shadow:0 8px 18px rgba(0,0,0,.1); }
.kat-book__dcard-img { display:block; width:100%; height:88px; background-color:#f2f2f5; background-size:cover;
	background-position:center; }
.kat-book__dcard-img--blank { background:linear-gradient(135deg,#f2f2f5,#e6e6ea); }
.kat-book__dcard-body { display:block; padding:8px 10px 10px; }
.kat-book__dcard-title { display:block; font-size:13px; font-weight:700; line-height:1.3; margin-bottom:2px; }
.kat-book__dcard-excerpt { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden;
	font-size:12px; line-height:1.35; color:#7a7a82; }
.kat-book__dstrip::-webkit-scrollbar { height:6px; }
.kat-book__dstrip::-webkit-scrollbar-thumb { background:var(--kat-line); border-radius:6px; }

/* --- Smart responsive: phone bottom-sheet --- */
@media (max-width:480px){
	.kat-book__overlay { align-items:flex-end; padding:0; }
	.kat-book__modal { max-width:100%; max-height:94vh; border-radius:20px 20px 0 0; padding:18px 16px calc(18px + env(safe-area-inset-bottom)); }
	.kat-book__modal::before { content:''; display:block; width:36px; height:4px; background:var(--kat-line); border-radius:99px; margin:0 auto 12px; }
	.kat-book__title { font-size:18px; }
	.kat-book__row { flex-direction:column; gap:0; }
	.kat-book__row--split { flex-direction:row; }
	.kat-book__dmap iframe { height:160px; }
	.kat-book__dcard { width:130px; }
	.kat-book__timegrid { max-height:150px; }
}
/* --- Tablet+ : roomier calendar cells --- */
@media (min-width:600px){
	.kat-book__modal { max-width:480px; padding:26px; }
	.kat-cal__day { min-height:38px; font-size:14px; }
}
/* Respect reduced-motion */
@media (prefers-reduced-motion:reduce){
	.kat-book__trigger, .kat-book__btn, .kat-book__chip, .kat-time, .kat-cal__day, .kat-book__dcard { transition:none; }
	.kat-book__overlay, .kat-book__modal, .kat-book__success { animation:none; }
}

/* ---------------------------------------------------------------- */
/* Assistant chat (merged into the Book Now popup) */
/* ---------------------------------------------------------------- */
.kat-book__chat { --kat-accent:var(--kat-navy); margin:0 0 14px; border:1px solid var(--kat-line); border-radius:var(--kat-radius-md); overflow:hidden; background:#fff; }
.kat-book__chat[hidden] { display:none; }
.kat-book__chat-log { max-height:220px; min-height:96px; overflow-y:auto; padding:12px; display:flex; flex-direction:column; gap:8px;
	background:radial-gradient(circle at 1px 1px, rgba(0,29,108,.05) 1px, transparent 0) 0 0 / 20px 20px, #fff; }
.kat-book__cmsg { max-width:86%; padding:9px 12px; border-radius:13px; font-size:14px; line-height:1.45; word-wrap:break-word; }
.kat-book__cmsg--user { align-self:flex-end; background:var(--kat-accent); color:#fff; border-bottom-right-radius:4px; }
.kat-book__cmsg--bot { align-self:flex-start; background:#f2f4fb; color:var(--kat-ink); border-bottom-left-radius:4px; }
.kat-book__ctyping { align-self:flex-start; display:inline-flex; gap:4px; padding:11px 13px; background:#f2f4fb; border-radius:13px; border-bottom-left-radius:4px; }
.kat-book__ctyping span { width:6px; height:6px; border-radius:50%; background:#9aa2b1; animation:kat-book-bounce 1.2s infinite; }
.kat-book__ctyping span:nth-child(2){ animation-delay:.15s; }
.kat-book__ctyping span:nth-child(3){ animation-delay:.3s; }
@keyframes kat-book-bounce { 0%,60%,100%{ transform:translateY(0); opacity:.5; } 30%{ transform:translateY(-4px); opacity:1; } }
.kat-book__chat-bar { display:flex; gap:8px; padding:10px; border-top:1px solid var(--kat-line); background:#fff; }
.kat-book__chat-input { flex:1 1 auto; border:1px solid var(--kat-line); border-radius:10px; padding:10px 12px; font-size:14px; font-family:inherit; color:var(--kat-ink); background:#fff; }
.kat-book__chat-input:focus { outline:none; border-color:var(--kat-accent); box-shadow:0 0 0 3px rgba(0,29,108,.12); }
.kat-book__chat-send { flex:0 0 auto; width:44px; border:none; border-radius:10px; background:var(--kat-accent); color:#fff; font-size:15px; cursor:pointer; }
.kat-book__chat-send:hover { filter:brightness(1.06); }
@media (prefers-reduced-motion:reduce){ .kat-book__ctyping span { animation:none; } }
