:root{
  --bone:#F6F2E8;
  --paper:#FFFEFA;
  --paper-soft:#FBF8F0;
  --line:#E3DCCB;
  --line-strong:#CDC2AB;
  --ink:#2D2C28;
  --muted:#6F6A5F;
  --sage:#78866B;
  --sage-dark:#526147;
  --gold:#B7953B;
  --danger:#8E3F35;
}

*{box-sizing:border-box}

body{
  background:radial-gradient(circle at top left,rgba(183,149,59,.14),transparent 34rem),linear-gradient(180deg,#FBF8F0 0%,var(--bone) 100%);
  color:var(--ink);
}

.booking-nav{
  background:rgba(255,254,250,.88);
  border-bottom:1px solid rgba(45,44,40,.1);
  backdrop-filter:blur(16px);
}

.booking-nav>a:last-child{
  color:var(--sage-dark);
  text-decoration:none;
  font-weight:800;
}

.booking-shell{
  max-width:1280px;
  min-height:calc(100vh - 84px);
  margin:auto;
  padding:clamp(1.25rem,3vw,2.75rem) clamp(1rem,3vw,2.5rem) 4rem;
}

.booking-error{
  max-width:1120px;
  margin:0 auto 1rem;
  padding:1rem 1.15rem;
  background:#FFF8F4;
  border:1px solid rgba(142,63,53,.35);
  border-radius:14px;
  color:var(--danger);
}

.scheduler-card{
  display:grid;
  grid-template-columns:minmax(270px,.78fr) minmax(430px,1.12fr) minmax(260px,.72fr);
  max-width:1180px;
  min-height:690px;
  margin:auto;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:24px;
  box-shadow:0 24px 70px rgba(45,44,40,.12);
  overflow:hidden;
}

.meeting-panel,.calendar-panel,.time-panel{
  min-width:0;
  min-height:690px;
  padding:clamp(1.5rem,3vw,2.5rem);
}

.meeting-panel{
  background:linear-gradient(180deg,#FFFDF8 0%,#F8F1E4 100%);
  border-right:1px solid var(--line);
}

.calendar-panel{background:var(--paper)}

.time-panel{
  background:#FCFAF4;
  border-left:1px solid var(--line);
  max-height:690px;
  overflow:auto;
}

.panel-kicker{
  margin:0 0 .7rem;
  color:var(--sage-dark);
  font-size:.7rem;
  font-weight:900;
  letter-spacing:.16em;
  line-height:1.35;
  text-transform:uppercase;
}

.meeting-panel h1,.calendar-panel h2,.time-panel h2,.details-panel h2{
  margin:0;
  color:var(--ink);
  font:400 clamp(1.65rem,3vw,2.45rem)/1.08 Georgia,serif;
  letter-spacing:-.035em;
}

.meeting-grid{display:grid;gap:.75rem;margin:2rem 0 1.5rem}

.meeting-card{
  position:relative;
  display:block;
  border:1px solid var(--line);
  border-radius:16px;
  padding:1rem;
  background:rgba(255,254,250,.72);
  cursor:pointer;
  transition:border-color .16s,box-shadow .16s,transform .16s,background .16s;
}

.meeting-card:hover{
  transform:translateY(-1px);
  border-color:var(--sage);
  box-shadow:0 10px 28px rgba(45,44,40,.08);
}

.meeting-card:has(input:checked){
  border-color:var(--sage);
  background:#F3F7EF;
  box-shadow:0 0 0 3px rgba(120,134,107,.14);
}

.meeting-card input{position:absolute;opacity:0}
.meeting-card strong,.meeting-card small,.meeting-description{display:block}
.meeting-card strong{font:400 1.2rem/1.25 Georgia,serif;color:var(--ink)}
.meeting-card small{margin:.25rem 0 .75rem;color:var(--sage-dark);font-weight:800}
.meeting-description{color:var(--muted);font-size:.9rem;line-height:1.55}

.single-meeting .meeting-card{
  padding:0;
  border:0;
  background:transparent!important;
  box-shadow:none!important;
  cursor:default;
}

.single-meeting .meeting-card:hover{transform:none}
.single-meeting .meeting-card strong{font-size:clamp(1.35rem,2.6vw,1.9rem)}

.meeting-facts{
  display:grid;
  gap:.75rem;
  margin:1.5rem 0;
  padding:1.25rem 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}

.meeting-facts p{
  display:flex;
  align-items:flex-start;
  gap:.75rem;
  margin:0;
  color:var(--muted);
  font-size:.9rem;
}

.meeting-facts span{
  min-width:3.8rem;
  color:var(--gold);
  font-size:.68rem;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
}

.meeting-facts strong{color:var(--ink);font-weight:800}
.meeting-panel fieldset{margin:0;padding:0;border:0}
.meeting-panel legend{margin:0 0 .8rem;font-size:.83rem;font-weight:900;color:var(--ink)}

.method-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.7rem;
}

.method-grid label{
  position:relative;
  display:flex;
  min-height:44px;
  align-items:center;
  justify-content:center;
  border:1px solid var(--line-strong);
  border-radius:999px;
  background:var(--paper);
  color:var(--ink);
  cursor:pointer;
  font-size:.86rem;
  font-weight:900;
  transition:background .16s,border-color .16s,color .16s,box-shadow .16s;
}

.method-grid label:has(input:checked){
  border-color:var(--sage);
  background:var(--sage);
  color:white;
  box-shadow:0 8px 18px rgba(82,97,71,.18);
}

.method-grid input{position:absolute;opacity:0}

.booking-assurance{
  margin:1.5rem 0 0;
  color:var(--muted);
  font-size:.82rem;
  line-height:1.55;
}

.calendar-heading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1.75rem;
}

.calendar-nav{display:flex;gap:.55rem}

.calendar-nav button{
  width:42px;
  height:42px;
  border:1px solid var(--line-strong);
  border-radius:50%;
  background:var(--paper);
  color:var(--sage-dark);
  cursor:pointer;
  font-size:1.45rem;
  line-height:1;
  transition:background .16s,border-color .16s,color .16s;
}

.calendar-nav button:hover:not(:disabled){
  background:var(--sage);
  border-color:var(--sage);
  color:white;
}

.calendar-nav button:disabled{opacity:.32;cursor:not-allowed}

.calendar-weekdays,.calendar-grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:.45rem;
}

.calendar-weekdays{margin-bottom:.75rem}

.calendar-weekdays span{
  text-align:center;
  color:var(--muted);
  font-size:.68rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.calendar-day,.calendar-blank{
  aspect-ratio:1;
  min-height:48px;
}

.calendar-day{
  position:relative;
  border:1px solid transparent;
  border-radius:50%;
  background:transparent;
  color:var(--ink);
  cursor:pointer;
  font-weight:900;
  transition:background .14s,border-color .14s,color .14s,box-shadow .14s;
}

.calendar-day:not(:disabled):hover{
  border-color:var(--sage);
  background:#F3F7EF;
  color:var(--sage-dark);
}

.calendar-day.today:after{
  content:"";
  position:absolute;
  left:calc(50% - 2px);
  bottom:7px;
  width:4px;
  height:4px;
  border-radius:50%;
  background:var(--gold);
}

.calendar-day.selected{
  background:var(--sage);
  border-color:var(--sage);
  color:white;
  box-shadow:0 10px 22px rgba(82,97,71,.22);
}

.calendar-day:disabled{
  color:#B7B0A1;
  opacity:.55;
  cursor:not-allowed;
}

.time-panel[hidden],.calendar-panel[hidden],.details-panel[hidden]{display:none}

.time-panel h2{
  margin-bottom:1rem;
  font-size:clamp(1.45rem,2vw,1.85rem);
}

#slot-status{
  min-height:2.2rem;
  margin:.25rem 0 1rem;
  color:var(--muted);
  font-size:.9rem;
  line-height:1.45;
}

.slot-grid{
  display:grid;
  gap:.75rem;
}

.slot-button{
  width:100%;
  min-height:48px;
  padding:.85rem 1rem;
  border:1px solid var(--sage);
  border-radius:10px;
  background:var(--paper);
  color:var(--sage-dark);
  cursor:pointer;
  font-size:.95rem;
  font-weight:900;
  letter-spacing:.01em;
  text-align:center;
  transition:background .16s,border-color .16s,color .16s,box-shadow .16s,transform .16s;
}

.slot-button:hover{
  transform:translateY(-1px);
  background:#F3F7EF;
  box-shadow:0 10px 22px rgba(45,44,40,.08);
}

.slot-button.selected{
  background:var(--sage);
  border-color:var(--sage);
  color:white;
  box-shadow:0 10px 24px rgba(82,97,71,.22);
}

.details-panel{
  display:grid;
  grid-template-columns:minmax(240px,.8fr) minmax(360px,1.2fr);
  gap:clamp(1.5rem,4vw,4rem);
  max-width:1180px;
  margin:1.5rem auto 0;
  padding:clamp(1.5rem,4vw,3rem);
  border:1px solid var(--line);
  border-radius:24px;
  background:var(--paper);
  box-shadow:0 18px 46px rgba(45,44,40,.09);
}

.details-copy p:last-child{margin-bottom:0;color:var(--muted);line-height:1.65}

.booking-fields{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1rem;
}

.booking-fields label{
  color:var(--ink);
  font-size:.75rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.booking-fields small{color:var(--muted);font-weight:800;text-transform:none}

.booking-fields input,.booking-fields textarea{
  display:block;
  width:100%;
  margin-top:.45rem;
  padding:.9rem 1rem;
  border:1px solid var(--line-strong);
  border-radius:12px;
  background:var(--paper-soft);
  color:var(--ink);
  font:400 1rem/1.4 inherit;
}

.booking-fields input:focus,.booking-fields textarea:focus{
  outline:3px solid rgba(120,134,107,.2);
  border-color:var(--sage);
}

.booking-fields textarea{resize:vertical}
.booking-fields .wide,.booking-submit,.privacy-note{grid-column:1/-1}

.booking-submit{
  display:flex;
  width:100%;
  align-items:center;
  justify-content:space-between;
  border:1px solid var(--sage-dark);
  border-radius:999px;
  background:var(--sage-dark);
  color:white;
}

.booking-submit:hover{
  background:var(--gold);
  border-color:var(--gold);
  color:var(--ink);
}

.privacy-note{
  margin:0;
  color:var(--muted);
  text-align:center;
  font-size:.72rem;
}

.booking-empty{
  max-width:760px;
  margin:8vh auto;
  padding:3rem;
  border:1px solid var(--line);
  border-radius:24px;
  background:var(--paper);
  text-align:center;
}

.confirmation{
  max-width:760px;
  margin:7vh auto;
  padding:clamp(2rem,6vw,5rem);
  border:1px solid var(--line);
  border-radius:24px;
  background:var(--paper);
  text-align:center;
  box-shadow:0 18px 46px rgba(45,44,40,.09);
}

.confirmation-mark{color:var(--sage)}

.calendar-save{margin:2rem 0;text-align:left}
.calendar-save h2{font:400 1.65rem Georgia,serif;text-align:center}

.calendar-actions{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:.75rem;
}

.calendar-action{
  display:flex;
  min-height:104px;
  flex-direction:column;
  justify-content:center;
  padding:1rem;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--paper-soft);
  color:var(--ink);
  text-decoration:none;
  transition:transform .15s,border-color .15s,box-shadow .15s;
}

.calendar-action:hover{
  transform:translateY(-2px);
  border-color:var(--sage);
  box-shadow:0 12px 30px rgba(45,44,40,.08);
}

.calendar-action strong{font-size:.95rem}
.calendar-action span{margin-top:.35rem;color:var(--muted);font-size:.76rem;line-height:1.35}

.confirmation-actions{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:1rem;
  flex-wrap:wrap;
}

.confirmation-actions>a:not(.button){color:var(--sage-dark);font-weight:800}

body.booking-embed{background:var(--paper)}
.booking-embed .booking-nav{display:none}
.booking-embed .booking-shell{padding:1rem;min-height:0}
.booking-embed .scheduler-card{box-shadow:none}

@media(max-width:980px){
  .scheduler-card{grid-template-columns:1fr}
  .meeting-panel,.calendar-panel,.time-panel{min-height:0;border:0;border-bottom:1px solid var(--line)}
  .time-panel{max-height:none;overflow:visible;border-bottom:0}
  .method-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .details-panel{grid-template-columns:1fr}
}

@media(max-width:640px){
  .booking-shell{padding:1rem .65rem 3rem}
  .scheduler-card,.details-panel{border-radius:18px}
  .meeting-panel,.calendar-panel,.time-panel{padding:1.25rem}
  .calendar-heading{align-items:flex-start}
  .calendar-day,.calendar-blank{min-height:38px}
  .calendar-weekdays,.calendar-grid{gap:.1rem}
  .booking-fields{grid-template-columns:1fr}
  .booking-fields label,.booking-fields .wide,.booking-submit,.privacy-note{grid-column:1}
  .calendar-actions{grid-template-columns:1fr}
  .calendar-action{min-height:82px}
}
