/* Floriade booking pop-up (component/booking-modal.php) */
.flr-bm{--g:#087D6A;--g-dark:#05584B;--g-soft:#E7F4F1;--plum:#9D2748;--gold:#C9A24A;--cream:#FBF7EE;--cream-deep:#F1E9D8;--line:#E8DFCC;--ink:#1F2A27;--muted:#69716E;--amber:#8A5300;--amber-soft:#FFF4DE;
  position:fixed;inset:0;z-index:100000;display:none;align-items:center;justify-content:center;padding:16px;font-family:'Kumbh Sans',system-ui,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}
.flr-bm.open{display:flex}
.flr-bm *{box-sizing:border-box}
.flr-bm-backdrop{position:absolute;inset:0;background:rgba(10,40,34,.55);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:flrFade .2s ease}
.flr-bm-sheet{position:relative;width:100%;max-width:520px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);display:flex;flex-direction:column;
  background:linear-gradient(180deg,var(--cream-deep) 0%,var(--cream) 30%,#fffaf2 100%);border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden;animation:flrPop .25s cubic-bezier(.2,.8,.3,1)}
@keyframes flrFade{from{opacity:0}}
@keyframes flrPop{from{opacity:0;transform:translateY(16px) scale(.98)}}
@keyframes flrUp{from{transform:translateY(100%)}}

/* header */
.flr-bm-head{display:flex;align-items:center;gap:10px;padding:12px 12px 0}
.flr-bm-title{flex:1;background:var(--g);color:#fff;text-align:center;padding:10px 12px;border-radius:10px;font-weight:700;font-size:16px;letter-spacing:.3px;margin:0;line-height:1.3}
.flr-bm-close{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line);background:#fff;color:var(--ink);font-size:22px;line-height:1;cursor:pointer;flex:none;display:grid;place-items:center;padding:0}
.flr-bm-close:hover{border-color:var(--g);color:var(--g)}
.flr-bm-body{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:8px 12px 12px;flex:1}

/* cards */
.flr-bm .card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:6px}
.flr-bm .lbl{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:600;margin-bottom:8px;color:var(--ink)}
.flr-bm .lbl small{font-weight:500;color:var(--muted);font-size:12px}
.flr-bm .chips{display:flex;flex-wrap:wrap;gap:6px}
.flr-bm .chip{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;transition:background .15s,color .15s,border-color .15s,transform .15s;line-height:1.25;font-family:inherit}
.flr-bm .chip:hover{border-color:var(--g)}
.flr-bm .chip.active{background:var(--g);border-color:var(--g);color:#fff;transform:scale(1.03)}
.flr-bm .chip[disabled]{opacity:.45;cursor:not-allowed;text-decoration:line-through;transform:none}
.flr-bm .chip .st{display:block;font-size:10.5px;font-weight:500;opacity:.85;margin-top:1px}
.flr-bm .slots .chip{flex:1;text-align:center;border-radius:12px;padding:8px 6px}

/* calendar */
.flr-bm .cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.flr-bm .cal-head b{font-size:15px}
.flr-bm .cal-nav{width:32px;height:32px;border-radius:50%;border:1.5px solid var(--line);background:#fff;font-size:17px;line-height:1;cursor:pointer;color:var(--g);padding:0;font-family:inherit}
.flr-bm .cal-nav:disabled{opacity:.35;cursor:not-allowed}
.flr-bm .cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.flr-bm .cal .dow{font-size:11px;text-align:center;color:var(--muted);font-weight:600}
.flr-bm .day{height:38px;border-radius:9px;border:1.5px solid transparent;background:#f2f1ee;color:#b3b6b4;font-weight:600;font-size:13.5px;display:flex;align-items:center;justify-content:center;cursor:default;padding:0;font-family:inherit}
.flr-bm .day.available{background:var(--g-soft);color:var(--g-dark);cursor:pointer}
.flr-bm .day.partial{background:linear-gradient(135deg,var(--g-soft) 50%,#FFEFCF 50%);color:var(--g-dark);cursor:pointer}
.flr-bm .day.reserved{background:#FFEFCF;color:#94600A;cursor:pointer}
.flr-bm .day.booked{background:#FBE3E9;color:var(--plum);cursor:pointer}
.flr-bm .day.sel{border-color:var(--ink);box-shadow:inset 0 0 0 2px #fff}
.flr-bm .day.empty{background:none}
.flr-bm .cal.loading{opacity:.45;pointer-events:none}
.flr-bm .legend{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:8px;font-size:11.5px;color:var(--muted)}
.flr-bm .legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:4px;vertical-align:-1px}

/* availability notice */
.flr-bm .notice{border-radius:10px;padding:9px 12px;font-size:13px;font-weight:600;margin-bottom:6px;display:none;gap:9px;align-items:flex-start;line-height:1.4}
.flr-bm .notice.show{display:flex}
.flr-bm .notice.ok{background:var(--g-soft);border:1.5px solid #9fd3c7;color:var(--g-dark)}
.flr-bm .notice.wait{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:1.5px solid #f2c46d;color:var(--amber)}
.flr-bm .notice.bad{background:#FBE6EB;border:1.5px solid #e8a8b7;color:var(--plum)}
.flr-bm .notice .ic{font-size:16px;line-height:1.1}

/* inputs */
.flr-bm .row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.flr-bm .fg{margin-bottom:8px;min-width:0}
.flr-bm .fg label{display:block;font-size:12px;color:var(--muted);margin-bottom:3px;font-weight:500}
.flr-bm .in{width:100%;padding:9px 10px;border:1.5px solid var(--line);border-radius:10px;font-size:15px;font-family:inherit;background:#fffcf6;color:var(--ink);outline:none;transition:border-color .2s;-webkit-appearance:none;appearance:none;margin:0;height:auto;line-height:1.4}
.flr-bm textarea.in{resize:vertical;min-height:58px}
.flr-bm .in:focus{border-color:var(--g);background:#fff}
.flr-bm .in.err,.flr-bm .chips.err .chip{border-color:#d9534f}
.flr-bm .ferr{color:#c0392b;font-size:12px;margin-top:3px;display:none}
.flr-bm .ferr.show{display:block}
.flr-bm .check{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;color:var(--muted);margin:4px 0;line-height:1.45;cursor:pointer}
.flr-bm .check input{margin-top:2px;width:16px;height:16px;accent-color:var(--g);flex:none}
.flr-bm .check a{color:var(--g);text-decoration:underline}
.flr-bm .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* summary */
.flr-bm .sum-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700}
.flr-bm .sum-meta{color:var(--muted);font-size:12.5px;margin:2px 0 6px}
.flr-bm .srow{display:flex;justify-content:space-between;gap:10px;font-size:13.5px;margin-bottom:3px}
.flr-bm .srow span:first-child{color:var(--muted)}
.flr-bm .srow span:last-child{font-weight:600;text-align:right}
.flr-bm .srow.total{font-size:15px;font-weight:700;margin:6px 0 0;padding-top:6px;border-top:1.5px dashed var(--line)}
.flr-bm .srow.total span{color:var(--g)}
.flr-bm .srow.total.wait span{color:var(--amber)}

/* footer button */
.flr-bm-foot{padding:10px 12px calc(12px + env(safe-area-inset-bottom));background:rgba(255,250,242,.96);border-top:1px solid var(--line)}
.flr-bm .btn-go{width:100%;background:linear-gradient(135deg,#0A9A82 0%,var(--g) 100%);color:#fff;border:none;padding:13px;font-size:16px;font-weight:700;font-family:inherit;border-radius:12px;cursor:pointer;transition:transform .15s;line-height:1.2}
.flr-bm .btn-go:active{transform:translateY(2px)}
.flr-bm .btn-go:disabled{background:#d8dedc;color:#7c8582;cursor:not-allowed;transform:none}
.flr-bm .btn-go.wait{background:linear-gradient(135deg,#E3B04B 0%,#C98A1A 100%);color:#2e1d02}
.flr-bm .btn-go .spin{display:none;width:21px;height:21px;margin:0 auto;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:flrSpin .7s linear infinite}
.flr-bm .btn-go.loading .t{display:none}
.flr-bm .btn-go.loading .spin{display:block}
@keyframes flrSpin{to{transform:rotate(360deg)}}
.flr-bm .form-err{display:none;color:var(--plum);background:#fbeae6;border:1px solid #f1c9c1;padding:8px 10px;border-radius:8px;text-align:center;margin-bottom:8px;font-size:13px;font-weight:600}
.flr-bm .help{font-size:11.5px;color:var(--muted);text-align:center;margin-top:7px}
.flr-bm .help a{color:var(--g);font-weight:700}

/* success */
.flr-bm .done{text-align:center;padding:26px 14px 10px;display:none}
.flr-bm .done .badge-ic{width:64px;height:64px;border-radius:50%;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;font-size:28px;color:#fff;background:var(--g)}
.flr-bm .done.wait .badge-ic{background:#E0A93B}
.flr-bm .done h3{font-size:21px;margin:0 0 4px;font-weight:700;color:var(--ink)}
.flr-bm .done .code{display:inline-block;background:var(--g-soft);color:var(--g-dark);font-weight:700;padding:6px 14px;border-radius:999px;margin:8px 0 10px;letter-spacing:.5px}
.flr-bm .done.wait .code{background:#FFF1D6;color:var(--amber)}
.flr-bm .done p{color:var(--muted);font-size:14px;line-height:1.55;margin:0 0 14px}
.flr-bm.is-done .flr-bm-form,.flr-bm.is-done .flr-bm-foot{display:none}
.flr-bm.is-done .done{display:block}

body.flr-bm-lock{overflow:hidden}

/* phones: full-screen sheet sliding up */
@media (max-width:575px){
  .flr-bm{padding:0;align-items:flex-end}
  .flr-bm-sheet{max-width:none;height:100%;max-height:100%;max-height:100dvh;border-radius:0;animation:flrUp .28s cubic-bezier(.2,.8,.3,1)}
  .flr-bm-head{padding-top:calc(10px + env(safe-area-inset-top))}
}
@media (max-width:380px){
  .flr-bm .row2{grid-template-columns:1fr}
  .flr-bm .chip{padding:6px 10px;font-size:12.5px}
  .flr-bm .day{height:34px;font-size:12.5px}
}
.flr-bm h2,.flr-bm h3{text-transform:none;letter-spacing:normal}
.flr-bm-close:focus-visible,.flr-bm .chip:focus-visible,.flr-bm .day:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.flr-bm-close:focus:not(:focus-visible){outline:none}
