/* CCP Booking widget — styled to match cardioclinicpanama.com (FR-8).
   Scoped under #ccp-booking-root to avoid theme collisions. */
#ccp-booking-root{--ccp-accent:#047C80;--ccp-accent-dark:#03595c;--ccp-accent-light:#EAF7FF;--ccp-bg:#F7FBFB;--ccp-heading:#353535;--ccp-text:#4F4F4F;--ccp-border:#EAEAEA;--ccp-radius:6.8px;
  font-family:'Montserrat',sans-serif;color:var(--ccp-text);line-height:1.5}
#ccp-booking-root *{box-sizing:border-box}
#ccp-booking-root .ccp-widget{max-width:680px;margin:0 auto;background:#fff;border:1px solid var(--ccp-border);border-radius:12px;overflow:hidden;box-shadow:0 4px 24px rgba(4,124,128,.08)}
#ccp-booking-root .ccp-header{background:#fff;color:var(--ccp-heading);padding:20px 28px;border-bottom:1px solid var(--ccp-border)}
#ccp-booking-root .ccp-logo{height:40px;margin-bottom:12px;display:block}
#ccp-booking-root .ccp-header h2{font-size:20px;font-weight:700;margin:0;color:var(--ccp-heading)}
#ccp-booking-root .ccp-header p{font-size:13px;color:var(--ccp-text);margin:2px 0 0}
#ccp-booking-root .ccp-steps{display:flex;gap:4px;padding:16px 28px 0}
#ccp-booking-root .ccp-steps span{flex:1;height:4px;border-radius:2px;background:var(--ccp-border);transition:background .3s}
#ccp-booking-root .ccp-steps span.done{background:var(--ccp-accent)}
#ccp-booking-root .ccp-body{padding:24px 28px 32px}
#ccp-booking-root h3{color:var(--ccp-heading);font-size:17px;font-weight:600;margin:0 0 16px}
#ccp-booking-root .ccp-step{display:none}
#ccp-booking-root .ccp-step.active{display:block;animation:ccpfade .25s ease}
@keyframes ccpfade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
#ccp-booking-root .ccp-doc{display:flex;align-items:center;gap:16px;width:100%;text-align:left;border:2px solid var(--ccp-border);border-radius:var(--ccp-radius);padding:14px 16px;cursor:pointer;transition:.15s;margin-bottom:12px;background:#fff;font-family:inherit}
#ccp-booking-root .ccp-doc:hover{border-color:var(--ccp-accent)}
#ccp-booking-root .ccp-doc img{width:64px;height:64px;border-radius:50%;object-fit:cover;background:var(--ccp-accent-light)}
#ccp-booking-root .ccp-doc-nm{display:block;color:var(--ccp-heading);font-weight:600;font-size:15px}
#ccp-booking-root .ccp-doc-sp{display:block;font-size:12.5px;margin-top:2px}
#ccp-booking-root .ccp-slot-section{margin-top:20px;border-top:1px solid var(--ccp-border);padding-top:16px;display:none}
#ccp-booking-root .ccp-slot-section.visible{display:block;animation:ccpfade .25s ease}
#ccp-booking-root .ccp-slot-title{color:var(--ccp-heading);font-size:14.5px;font-weight:600;margin:0 0 12px}
#ccp-booking-root .ccp-cal button.selected{background:var(--ccp-accent);color:#fff}
#ccp-booking-root .ccp-phone-row{display:flex;gap:8px;margin-top:5px}
#ccp-booking-root .ccp-phone-row select{flex:0 0 150px;border:1.5px solid var(--ccp-border);border-radius:var(--ccp-radius);padding:11px 8px;font-family:inherit;font-size:14px;color:var(--ccp-heading);background:#fff}
#ccp-booking-root .ccp-phone-row input{flex:1;margin-top:0}
#ccp-booking-root .ccp-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
#ccp-booking-root .ccp-cal-title{color:var(--ccp-heading);font-size:15px;text-transform:capitalize}
#ccp-booking-root .ccp-nav{border:1.5px solid var(--ccp-accent);background:var(--ccp-accent-light);border-radius:var(--ccp-radius);width:44px;height:44px;font-size:20px;font-weight:700;line-height:1;cursor:pointer;color:var(--ccp-accent);flex:0 0 44px;transition:.15s}
#ccp-booking-root .ccp-nav:hover{background:var(--ccp-accent);color:#fff}
#ccp-booking-root .ccp-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
#ccp-booking-root .ccp-dow{font-size:11px;font-weight:600;color:#9aa;padding:4px 0;text-transform:uppercase}
#ccp-booking-root .ccp-cal button{aspect-ratio:1;border:none;border-radius:var(--ccp-radius);background:transparent;font-family:inherit;font-size:13.5px;color:#bbb;cursor:default}
#ccp-booking-root .ccp-cal button.avail{background:var(--ccp-accent-light);color:var(--ccp-heading);font-weight:600;cursor:pointer}
#ccp-booking-root .ccp-cal button.avail:hover{background:var(--ccp-accent);color:#fff}
/* Loading month: the grid is drawn immediately on a nav click and the day cells fill in when
   availability lands (see loadMonth() in widget.js). Shimmer the empty cells so the wait reads
   as "loading" rather than "this month has nothing". */
#ccp-booking-root .ccp-cal.loading button{background:var(--ccp-accent-light);opacity:.45;color:transparent;animation:ccppulse 1.1s ease-in-out infinite}
#ccp-booking-root .ccp-cal.loading{pointer-events:none}
@keyframes ccppulse{0%,100%{opacity:.25}50%{opacity:.6}}
@media (prefers-reduced-motion:reduce){#ccp-booking-root .ccp-cal.loading button{animation:none}}
#ccp-booking-root .ccp-cal-note{font-size:11.5px;color:var(--ccp-accent);margin-top:10px;min-height:14px}
#ccp-booking-root .ccp-tz{font-size:11.5px;color:#9aa;margin-top:10px}
#ccp-booking-root .ccp-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px}
#ccp-booking-root .ccp-slots button{border:1.5px solid var(--ccp-accent);color:var(--ccp-accent);background:#fff;border-radius:var(--ccp-radius);padding:10px 0;font-family:inherit;font-weight:600;font-size:13.5px;cursor:pointer;transition:.15s}
#ccp-booking-root .ccp-slots button:hover{background:var(--ccp-accent);color:#fff}
#ccp-booking-root .ccp-form label{display:block;font-size:13px;font-weight:600;color:var(--ccp-heading);margin-bottom:14px}
#ccp-booking-root .ccp-form input{display:block;width:100%;border:1.5px solid var(--ccp-border);border-radius:var(--ccp-radius);padding:11px 12px;font-family:inherit;font-size:14px;color:var(--ccp-heading);margin-top:5px}
#ccp-booking-root .ccp-form input:focus{outline:none;border-color:var(--ccp-accent)}
#ccp-booking-root .ccp-req{color:#c0392b}
#ccp-booking-root .ccp-hp{position:absolute;left:-9999px;height:1px;width:1px;opacity:0}
#ccp-booking-root .ccp-error{font-size:13px;color:#c0392b;margin-bottom:12px}
#ccp-booking-root .ccp-summary{background:var(--ccp-bg);border:1px solid var(--ccp-border);border-radius:var(--ccp-radius);padding:14px 16px;font-size:13.5px;margin-bottom:18px}
#ccp-booking-root .ccp-summary b{color:var(--ccp-heading)}
#ccp-booking-root .ccp-btn{display:inline-block;background:var(--ccp-accent);color:#fff;border:none;border-radius:var(--ccp-radius);padding:13px 26px;font-family:inherit;font-weight:600;font-size:15px;cursor:pointer;transition:.15s}
#ccp-booking-root .ccp-btn:hover{background:var(--ccp-accent-dark)}
#ccp-booking-root .ccp-btn[disabled]{opacity:.6;cursor:wait}
#ccp-booking-root .ccp-back{background:none;border:none;color:var(--ccp-accent);font-family:inherit;font-weight:600;font-size:13px;cursor:pointer;padding:0;margin-bottom:16px}
#ccp-booking-root .ccp-confirm{text-align:center;padding:12px 0}
#ccp-booking-root .ccp-check{width:64px;height:64px;border-radius:50%;background:var(--ccp-accent-light);color:var(--ccp-accent);font-size:32px;line-height:64px;margin:0 auto 16px}
#ccp-booking-root .ccp-detail{text-align:left;max-width:380px;margin:0 auto 18px}
#ccp-booking-root .ccp-down{text-align:center;padding:24px 12px}
#ccp-booking-root .ccp-down .ccp-btn{margin-top:12px}
@media(max-width:520px){
  #ccp-booking-root .ccp-header,#ccp-booking-root .ccp-body{padding-left:18px;padding-right:18px}
  #ccp-booking-root .ccp-slots{grid-template-columns:repeat(auto-fill,minmax(76px,1fr))}
  #ccp-booking-root .ccp-phone-row select{flex-basis:120px}
}
