.scheduler-shell{
  border:1px solid var(--line);
  border-radius:28px;
  background:#fafafd;
  padding:18px;
}

.scheduler-toolbar{
  display:grid;
  grid-template-columns:44px 1fr 44px;
  gap:12px;
  align-items:center;
  margin-bottom:6px;
}

.scheduler-toolbar>div{
  min-width:0;
  text-align:center;
  display:grid;
  gap:3px;
}

.scheduler-toolbar span{
  color:var(--muted);
  font-size:10px;
  font-weight:950;
  letter-spacing:.11em;
  text-transform:uppercase;
}

.scheduler-toolbar strong{
  color:#111;
  font-size:17px;
  line-height:1.25;
}

.scheduler-arrow{
  width:44px;
  height:44px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
  color:#111;
  font-size:19px;
  font-weight:900;
  cursor:pointer;
}

.scheduler-arrow:hover:not(:disabled){
  border-color:#b9bbc2;
  transform:translateY(-1px);
}

.scheduler-arrow:disabled{
  opacity:.35;
  cursor:not-allowed;
}

.scheduler-message{
  min-height:20px;
  margin:7px 0 11px;
  color:var(--muted);
  font-size:12px;
  font-weight:750;
  text-align:center;
}

.scheduler-message.error{
  color:#a21525;
}

.public-calendar-shell{
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:22px;
  background:#fff;
}

.public-weekdays,.public-month-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
}

.public-weekdays{
  background:#f4f4f1;
  border-bottom:1px solid var(--line);
}

.public-weekdays span{
  padding:10px 4px;
  color:var(--muted);
  font-size:10px;
  font-weight:950;
  letter-spacing:.08em;
  text-align:center;
  text-transform:uppercase;
}

.public-month-day{
  min-width:0;
  min-height:82px;
  border:0;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:#fff;
  color:#171a17;
  padding:10px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:7px;
  text-align:left;
  cursor:pointer;
  transition:background .17s ease,box-shadow .17s ease,transform .17s ease;
}

.public-month-day:nth-child(7n){border-right:0}
.public-month-day:nth-last-child(-n+7){border-bottom:0}
.public-month-day:hover:not(:disabled){background:#f4faf6;box-shadow:inset 0 0 0 2px #7da68c}
.public-month-day b{font-size:14px;line-height:1}
.public-month-day small{margin-top:auto;color:#347653;font-size:10px;font-weight:900}
.public-day-dots{display:flex;min-height:7px}
.public-day-dots i{width:7px;height:7px;border-radius:50%;background:#347653}
.public-month-day.outside{background:#fafaf8;color:#a4a7a3}
.public-month-day.today:not(.selected){box-shadow:inset 0 0 0 2px var(--red)}
.public-month-day.today b{color:var(--red)}
.public-month-day.selected{z-index:1;background:#171a17;color:#fff;box-shadow:inset 0 0 0 2px #171a17}
.public-month-day.selected small{color:#fff}
.public-month-day.selected .public-day-dots i{background:#ff8b99}
.public-month-day:disabled{background:#f1f1ef;color:#adb0ad;cursor:not-allowed}
.public-month-day:disabled small{color:#a4a7a3}
.public-month-day:disabled .public-day-dots{display:none}

.public-calendar-legend{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin:11px 2px 0;
  color:var(--muted);
  font-size:10px;
  font-weight:850;
}

.public-calendar-legend span{display:flex;align-items:center;gap:6px}
.public-calendar-legend i{width:8px;height:8px;border-radius:50%;background:#c7cac7}
.public-calendar-legend i.available{background:#347653}
.public-calendar-legend i.selected{background:#171a17}

.modern-slot-panel{
  margin-top:14px;
  border:0;
  border-radius:20px;
  background:#fff;
  padding:18px;
  box-shadow:inset 0 0 0 1px var(--line);
}

.modern-slot-panel .slot-panel-title{
  margin-bottom:14px;
}

.modern-slot-panel .slot-panel-title strong{
  font-size:18px;
}

.modern-slot-panel .slot-panel-title span{
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-size:12px;
  font-weight:750;
}

.modern-slot-panel .slot-list{
  grid-template-columns:repeat(2,1fr);
  gap:9px;
}

.modern-slot-panel .slot{
  min-height:54px;
  margin:0;
  border-radius:15px;
  font-size:14px;
}

.modern-slot-panel .slot.selected{
  border-color:var(--red);
  background:var(--red);
  color:#fff;
  box-shadow:0 10px 22px rgba(223,19,39,.18);
}

.flexible-time{
  width:100%;
  margin-top:12px;
  border:1px dashed #c5c7cd;
  border-radius:18px;
  background:transparent;
  padding:14px 16px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  text-align:left;
  cursor:pointer;
}

.flexible-time:hover{
  border-color:#9da0a8;
  background:#fff;
}

.flexible-time span{
  color:#111;
  font-size:14px;
  font-weight:950;
}

.flexible-time small{
  color:var(--muted);
  font-size:12px;
}

.flexible-time.selected{
  border-style:solid;
  border-color:var(--red);
  background:#fff5f6;
  box-shadow:0 0 0 4px rgba(223,19,39,.07);
}

.form-submit-message{
  min-height:20px;
  margin:14px 0 0;
  color:var(--red);
  font-size:13px;
  font-weight:850;
  line-height:1.5;
}

@media(max-width:540px){
  .scheduler-shell{
    margin:0 -4px;
    padding:14px;
    border-radius:22px;
  }
  .scheduler-toolbar{
    grid-template-columns:40px 1fr 40px;
    gap:8px;
  }
  .scheduler-arrow{
    width:40px;
    height:40px;
  }
  .scheduler-toolbar strong{font-size:15px}
  .public-calendar-shell{border-radius:16px}
  .public-weekdays span{padding:8px 1px;font-size:8px}
  .public-month-day{min-height:56px;padding:7px 6px;gap:4px}
  .public-month-day b{font-size:12px}
  .public-month-day small{font-size:0}
  .public-month-day.available small:not(:empty)::after{content:"Open";font-size:8px}
  .public-day-dots i{width:6px;height:6px}
  .public-calendar-legend{gap:10px}
  .modern-slot-panel{padding:14px}
  .modern-slot-panel .slot-list{grid-template-columns:1fr}
  .flexible-time{display:grid}
}

@media(prefers-reduced-motion:reduce){
  .public-month-day,.scheduler-arrow{transition:none}
}
