:root{ --zf-bg:#fff; --zf-muted:#6b7280; --zf-ink:#1f2937; --zf-blue:#2a68ec; --zf-blue-soft:rgba(42,104,236,.14); --zf-border:1px solid rgba(0,0,0,.08); /* tighter pane height */ --zf-pane-h: 260px; } #zf-booking, #zf-booking * { font-family:"Poppins",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,"Helvetica Neue","Noto Sans"; } #zf-booking{width:100%} .zf-card{background:var(--zf-bg);border:var(--zf-border);border-radius:18px;padding:16px;position:relative;min-height:calc(var(--zf-pane-h) + 120px)} .wf-step-hidden{display:none !important} .zf-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px} .zf-controls{display:flex;align-items:center;gap:8px} .zf-pill{display:inline-block;border:var(--zf-border);background:#fff;border-radius:999px;padding:4px 10px;line-height:1} .zf-pill-date{font-size:.8rem;color:var(--zf-ink)} .zf-navwrap{display:flex;align-items:center;gap:8px} .zf-month{font-weight:600;min-width:140px;text-align:center} .zf-nav{border:var(--zf-border);background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer} .zf-wrap{display:grid;grid-template-columns:2fr 1fr;gap:20px;align-items:start} @media (max-width:991px){.zf-wrap{grid-template-columns:1fr}} .zf-cal{display:grid;grid-auto-rows:auto;row-gap:8px;padding-top:12px;min-height:var(--zf-pane-h)} .zf-weekdays{display:grid;grid-template-columns:repeat(5,1fr);color:var(--zf-muted);font-size:.75rem;text-align:center;margin:0} /* CALENDAR GRID: fixed height, not scrollable */ .zf-grid{ display:grid; grid-template-columns:repeat(5,1fr); gap:8px; position:relative; z-index:1; pointer-events:auto; min-height:var(--zf-pane-h); max-height:var(--zf-pane-h); overflow:visible; /* no scrolling */ padding:2px; } .zf-day{padding:10px;border:var(--zf-border);border-radius:10px;background:#fff;text-align:center;cursor:pointer;transition:background .15s ease,transform .05s ease,box-shadow .15s ease,outline-color .15s ease} .zf-day:not(:disabled):hover{background:rgba(42,104,236,.06);box-shadow:0 0 0 2px rgba(42,104,236,.10) inset} .zf-day:not(:disabled):active{transform:scale(.98)} .zf-day.is-selected{outline:2px solid var(--zf-blue)} .zf-day:disabled{opacity:.35;cursor:not-allowed} .zf-day:focus{outline:none} .zf-day:focus-visible{box-shadow:0 0 0 2px rgba(42,104,236,.25)} .zf-day--empty{visibility:hidden;border:none;padding:0} .zf-slots{display:flex;flex-direction:column;border-left:var(--zf-border);padding-left:16px;padding-top:4px} @media (max-width:991px){.zf-slots{border-left:0;padding-left:0}} .zf-slots-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px} .zf-slots-title{font-weight:600} /* TIME SLOTS: scrollable with fades */ .zf-slot-list{ display:grid; grid-template-columns:1fr; gap:10px; max-height:var(--zf-pane-h); overflow:auto; padding-right:4px; position:relative; } .zf-slot-list::before, .zf-slot-list::after{ content:""; position:sticky; left:0; right:0; height:18px; pointer-events:none; z-index:2; display:block; } .zf-slot-list::before{ top:0; background:linear-gradient(to bottom, #fff, rgba(255,255,255,0)); } .zf-slot-list::after{ bottom:0; background:linear-gradient(to top, #fff, rgba(255,255,255,0)); } .zf-slot-list.is-top::before{ opacity:0 } .zf-slot-list.is-bottom::after{ opacity:0 } /* nice scrollbar */ .zf-slot-list::-webkit-scrollbar{ width:8px } .zf-slot-list::-webkit-scrollbar-thumb{ background:rgba(0,0,0,.15); border-radius:8px } .zf-slot-btn{ width:100%;height:26px;line-height:26px;padding:0 24px;border-radius:28px; border:1px solid rgba(0,0,0,.08);background:#fff;color:#2a68ec;text-align:center; font-size:.8rem;font-weight:600;cursor:pointer; transition:background .15s ease,color .15s ease,transform .05s ease,box-shadow .15s ease } .zf-slot-btn:hover{background:rgba(42,104,236,.08)} .zf-slot-btn:active{transform:scale(.98)} .zf-slot-btn.is-selected{border-color:#2a68ec;background:#2a68ec;color:#fff;box-shadow:0 0 0 3px var(--zf-blue-soft)} .zf-slot-btn[disabled]{opacity:.5;cursor:not-allowed} .zf-summary{margin-top:10px;padding:10px 12px;background:#fff;border:var(--zf-border);border-radius:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.9rem;color:var(--zf-ink);opacity:0;pointer-events:none;transition:opacity .3s ease} .zf-summary.is-visible{opacity:1;pointer-events:auto} .zf-summary-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap} .zf-summary-left strong{font-weight:700} .zf-summary-tz{color:var(--zf-muted)} .zf-summary-clear{border:var(--zf-border);background:#fff;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:#6b7280;cursor:pointer;transition:background .15s ease,color .15s ease,transform .05s ease} .zf-summary-clear:hover{background:rgba(42,104,236,.1);color:#2a68ec} .zf-summary-clear:active{transform:scale(.96)} /* MODAL — cleaner SaaS look */ .zf-modal[hidden]{display:none} .zf-modal{ position:fixed; inset:0; display:flex; justify-content:center; align-items:center; background:rgba(17,24,39,.45); backdrop-filter:saturate(120%) blur(4px); padding:16px; z-index:9999; } .zf-modal-inner{ background:#fff; border-radius:16px; border:var(--zf-border); padding:0; width:min(640px,100%); max-height:90vh; overflow:auto; box-shadow:0 20px 60px rgba(0,0,0,.25); } .zf-modal-header{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:16px 18px; border-bottom:1px solid rgba(0,0,0,.06); } .zf-modal-title{ font-weight:700; font-size:1.05rem; } .zf-modal-close{ border:var(--zf-border); background:#fff; border-radius:10px; padding:8px 10px; cursor:pointer; } .zf-modal-body{ padding:18px; } .zf-modal-actions{ display:flex; gap:10px; justify-content:flex-end; padding:0 18px 18px 18px; } /* Buttons */ .zf-btn{ border:var(--zf-border); background:#fff; border-radius:10px; padding:10px 14px; cursor:pointer; } .zf-btn-primary{ background:#2a68ec; color:#fff; border:none; box-shadow:0 6px 16px rgba(42,104,236,.25); } .zf-btn[disabled]{ opacity:.6; cursor:not-allowed } /* Progress (indeterminate) */ .zf-modal-progress{ padding:16px 18px; display:grid; gap:10px } .zf-progress-track{ position:relative; height:6px; border-radius:999px; background:rgba(0,0,0,.06); overflow:hidden } .zf-progress-indeterminate{ position:absolute; inset:0; transform:translateX(-40%); background:linear-gradient(90deg, transparent 0%, rgba(42,104,236,.15) 40%, rgba(42,104,236,.4) 55%, rgba(42,104,236,.15) 70%, transparent 100%); animation: zf-sweep 1.4s ease-in-out infinite; } @keyframes zf-sweep{ 0%{ transform:translateX(-60%) } 100%{ transform:translateX(60%) } } /* mobile: slightly smaller */ @media (max-width:991px){ :root{ --zf-pane-h: 240px } }