
<style>
  .ksdpick{
    --ksd-accent:#6366f1; --ksd-accent-hover:#4f46e5; --ksd-accent-soft:#eef2ff;
    --ksd-text:#1e293b; --ksd-muted:#94a3b8; --ksd-border:#e2e8f0;
    --ksd-border-focus:#c7d2fe; --ksd-bg:#ffffff; --ksd-danger:#ef4444;
    position:relative; display:block;
  }
  .ksdpick > input.cf7-modern-date{ cursor:pointer !important; }
  .ksdpick > input.cf7-modern-date.ksd-open{border-color:var(--ksd-accent) !important; box-shadow:0 0 0 4px var(--ksd-accent-soft) !important;}
  .ksdpick__icon{position:absolute; right:14px; top:50%; transform:translateY(-50%); color:var(--ksd-accent); pointer-events:none; display:flex;}
 
  .ksdpick__pop{
    position:fixed; z-index:999999; box-sizing:border-box;
    width:320px; max-width:320px; padding:16px; margin:0;
    background:#ffffff; border:1px solid #e2e8f0; border-radius:18px;
    box-shadow:0 10px 40px -10px rgba(15,23,42,0.25);
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    opacity:0; transform:translateY(-6px) scale(.98); pointer-events:none;
    transition:opacity .18s ease, transform .18s ease;
  }
  .ksdpick__pop.is-open{opacity:1; transform:none; pointer-events:auto;}
  .ksdpick__pop *{box-sizing:border-box;}
 
  .ksdpick__head{display:flex; align-items:center; gap:8px; margin:0 0 14px;}
  .ksdpick__selects{display:flex; gap:6px; flex:1 1 auto; min-width:0;}
 
  .ksdpick__sel{
    appearance:none !important; -webkit-appearance:none !important; -moz-appearance:none !important;
    font-family:inherit !important; font-size:14px !important; font-weight:600 !important;
    color:#1e293b !important; height:38px !important; line-height:normal !important;
    padding:0 26px 0 12px !important; margin:0 !important;
    border:1.5px solid #e2e8f0 !important; border-radius:10px !important;
    background-color:#fff !important; cursor:pointer !important; box-shadow:none !important;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") !important;
    background-repeat:no-repeat !important; background-position:right 8px center !important;
    transition:border-color .15s;
  }
  .ksdpick__sel:hover{border-color:#c7d2fe !important;}
  .ksdpick__sel:focus{outline:none !important; border-color:#6366f1 !important; box-shadow:0 0 0 3px #eef2ff !important;}
  .ksdpick__sel--m{flex:1 1 auto !important; min-width:0 !important; width:auto !important;}
  .ksdpick__sel--y{flex:0 0 auto !important; width:84px !important;}
 
  .ksdpick__nav{display:flex; gap:4px; flex:0 0 auto;}
  .ksdpick__nav button{
    width:34px !important; height:34px !important; min-width:0 !important; flex:0 0 auto !important;
    display:flex !important; align-items:center !important; justify-content:center !important;
    border:1.5px solid #e2e8f0 !important; border-radius:10px !important;
    background:#fff !important; color:#64748b !important; cursor:pointer !important;
    padding:0 !important; margin:0 !important; box-shadow:none !important; transition:all .15s;
  }
  .ksdpick__nav button:hover{background:#eef2ff !important; border-color:#c7d2fe !important; color:#6366f1 !important;}
 
  .ksdpick__dow{display:grid; grid-template-columns:repeat(7,1fr); margin:0 0 4px; gap:0;}
  .ksdpick__dow > span{text-align:center; font-size:11px; font-weight:600; color:#94a3b8; padding:6px 0; letter-spacing:0.03em;}
 
  .ksdpick__grid{display:grid; grid-template-columns:repeat(7,1fr); gap:2px;}
  .ksdpick__day{
    aspect-ratio:1; width:auto !important; height:auto !important; min-width:0 !important;
    display:flex !important; align-items:center !important; justify-content:center !important;
    font-family:inherit !important; font-size:14px !important; font-weight:400 !important; color:#1e293b !important;
    border:none !important; border-radius:10px !important; background:none !important;
    cursor:pointer !important; padding:0 !important; margin:0 !important; box-shadow:none !important;
    transition:background .12s, color .12s;
  }
  .ksdpick__day:hover{background:#eef2ff !important;}
  .ksdpick__day.muted{color:#cbd5e1 !important; pointer-events:none !important; background:none !important;}
  .ksdpick__day.disabled{color:#e2e8f0 !important; pointer-events:none !important; background:none !important;}
  .ksdpick__day.today{box-shadow:inset 0 0 0 1.5px #6366f1 !important; font-weight:600 !important;}
  .ksdpick__day.sel{background:#6366f1 !important; color:#fff !important; font-weight:600 !important;}
  .ksdpick__day.sel:hover{background:#4f46e5 !important;}
</style>
 
<script>
(function(){
  var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];
  var DOW=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
  var MIN_YEAR=1920;
  var DEFAULT_VIEW_YEAR=2000;
 
  function sameDay(a,b){ return a&&b&&a.getFullYear()===b.getFullYear()&&a.getMonth()===b.getMonth()&&a.getDate()===b.getDate(); }
 
  function initOne(input){
    try{
      if(input.dataset.ksdReady) return;
      input.dataset.ksdReady='1';
      input.setAttribute('readonly','readonly');
 
      var today=new Date(); today.setHours(0,0,0,0);
 
      var wrap=document.createElement('span');
      wrap.className='ksdpick';
      input.parentNode.insertBefore(wrap,input);
      wrap.appendChild(input);
 
      var icon=document.createElement('span');
      icon.className='ksdpick__icon';
      icon.innerHTML='<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg>';
      wrap.appendChild(icon);
 
      var pop=document.createElement('div');
      pop.className='ksdpick__pop';
      pop.setAttribute('role','dialog');
      var monthOpts='', yearOpts='';
      MONTHS.forEach(function(m,i){ monthOpts+='<option value="'+i+'">'+m+'</option>'; });
      for(var y=today.getFullYear(); y>=MIN_YEAR; y--) yearOpts+='<option value="'+y+'">'+y+'</option>';
      var dowHtml=''; DOW.forEach(function(d){ dowHtml+='<span>'+d+'</span>'; });
      pop.innerHTML=
        '<div class="ksdpick__head">'+
          '<div class="ksdpick__selects">'+
            '<select class="ksdpick__sel ksdpick__sel--m" aria-label="Month">'+monthOpts+'</select>'+
            '<select class="ksdpick__sel ksdpick__sel--y" aria-label="Year">'+yearOpts+'</select>'+
          '</div>'+
          '<div class="ksdpick__nav">'+
            '<button type="button" class="ksdpick__prev" aria-label="Previous month"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"/></svg></button>'+
            '<button type="button" class="ksdpick__next" aria-label="Next month"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"/></svg></button>'+
          '</div>'+
        '</div>'+
        '<div class="ksdpick__dow">'+dowHtml+'</div>'+
        '<div class="ksdpick__grid"></div>';
      document.body.appendChild(pop);
 
      var monthSel=pop.querySelector('.ksdpick__sel--m');
      var yearSel=pop.querySelector('.ksdpick__sel--y');
      var grid=pop.querySelector('.ksdpick__grid');
      var view=new Date(DEFAULT_VIEW_YEAR,0,1);
      var selected=null;
 
      function position(){
        var r=input.getBoundingClientRect();
        var w=320, left=r.left;
        if(left+w>window.innerWidth-8) left=Math.max(8,window.innerWidth-w-8);
        var top=r.bottom+8;
        if(top+360>window.innerHeight && r.top-360>0){ top=r.top-360; }
        pop.style.left=left+'px'; pop.style.top=top+'px';
      }
      function render(){
        monthSel.value=view.getMonth(); yearSel.value=view.getFullYear(); grid.innerHTML='';
        var yy=view.getFullYear(), mm=view.getMonth();
        var startDay=new Date(yy,mm,1).getDay();
        var daysInMonth=new Date(yy,mm+1,0).getDate();
        var prevDays=new Date(yy,mm,0).getDate();
        for(var i=startDay-1;i>=0;i--) addCell(prevDays-i,'muted');
        for(var d=1;d<=daysInMonth;d++){
          var date=new Date(yy,mm,d); var cls='';
          if(date>today){ cls='disabled'; }
          else{ if(sameDay(date,today)) cls+=' today'; if(sameDay(date,selected)) cls+=' sel'; }
          addCell(d,cls.replace(/^\s+/,''), date<=today?date:null);
        }
        var trailing=(7-((startDay+daysInMonth)%7))%7;
        for(var t=1;t<=trailing;t++) addCell(t,'muted');
      }
      function addCell(num,extra,date){
        var b=document.createElement('button');
        b.type='button'; b.className='ksdpick__day'+(extra?' '+extra:''); b.textContent=num;
        if(date){ b.addEventListener('click',function(){ selected=date; commit(); }); }
        grid.appendChild(b);
      }
      function commit(){
        var dd=String(selected.getDate()).padStart(2,'0');
        var mo=String(selected.getMonth()+1).padStart(2,'0');
        input.value=dd+'/'+mo+'/'+selected.getFullYear();
        input.classList.remove('wpcf7-not-valid');
        // BOTH events so CF7 marks the required field as filled
        input.dispatchEvent(new Event('input',{bubbles:true}));
        input.dispatchEvent(new Event('change',{bubbles:true}));
        var tip=wrap.parentNode && wrap.parentNode.querySelector('.wpcf7-not-valid-tip'); if(tip) tip.remove();
        close();
      }
      function open(){ render(); position(); pop.classList.add('is-open'); input.classList.add('ksd-open'); }
      function close(){ pop.classList.remove('is-open'); input.classList.remove('ksd-open'); }
      function toggle(){ pop.classList.contains('is-open')?close():open(); }
 
      input.addEventListener('click',toggle);
      input.addEventListener('keydown',function(e){ if(e.key==='Enter'||e.key===' '){ e.preventDefault(); toggle(); } });
      monthSel.addEventListener('change',function(){ view.setMonth(+monthSel.value); render(); });
      yearSel.addEventListener('change',function(){ view.setFullYear(+yearSel.value); render(); });
      pop.querySelector('.ksdpick__prev').addEventListener('click',function(){ view.setMonth(view.getMonth()-1); render(); });
      pop.querySelector('.ksdpick__next').addEventListener('click',function(){ view.setMonth(view.getMonth()+1); render(); });
 
      // Outside-click: only close if click is truly outside picker AND popup.
      // Never interferes with submit button or other form controls.
      document.addEventListener('mousedown',function(e){
        if(!pop.classList.contains('is-open')) return;
        if(pop.contains(e.target) || wrap.contains(e.target)) return;
        close();
      });
      document.addEventListener('keydown',function(e){ if(e.key==='Escape') close(); });
      window.addEventListener('resize',function(){ if(pop.classList.contains('is-open')) position(); });
      window.addEventListener('scroll',function(){ if(pop.classList.contains('is-open')) position(); }, true);
    }catch(err){
      // Never let a picker error block the form. Log and move on.
      if(window.console&&console.error) console.error('DOB picker init failed:',err);
    }
  }
 
  function initAll(){
    var list=document.querySelectorAll('input.cf7-modern-date');
    for(var i=0;i<list.length;i++) initOne(list[i]);
  }
 
  if(document.readyState==='loading'){
    document.addEventListener('DOMContentLoaded',initAll);
  }else{
    initAll();
  }
  // Re-init after CF7 swaps the form HTML (submit success/fail) so it
  // keeps working without a page reload.
  document.addEventListener('wpcf7submit',initAll);
  document.addEventListener('wpcf7invalid',initAll);
  document.addEventListener('wpcf7mailsent',initAll);
})();
</script>

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//www.keeleshepparddentistry.com/main-sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>https://www.keeleshepparddentistry.com/post-sitemap.xml</loc>
		<lastmod>2026-05-19T06:33:04+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://www.keeleshepparddentistry.com/page-sitemap.xml</loc>
		<lastmod>2026-05-21T10:40:06+00:00</lastmod>
	</sitemap>
</sitemapindex>
<!-- XML Sitemap generated by Rank Math SEO Plugin (c) Rank Math - rankmath.com -->