.availability-calendar{
  --calendar-free:#287a56;
  --calendar-partial:#d39a32;
  --calendar-awaiting:#d57b2c;
  --calendar-busy:#aa4541;
  --calendar-checkin:#168c91;
  --calendar-blocked:#695b7c;
  --calendar-past:#7c8c86;
  width:100%;
  min-width:0;
  padding:clamp(1rem,3vw,1.5rem);
  border:1px solid var(--border-light,var(--border,rgba(137,93,49,.22)));
  border-radius:var(--radius-md,18px);
  background:color-mix(in srgb,var(--surface-card,var(--surface,#fffdf8)) 92%,transparent);
  color:var(--color-body,var(--text,#18302b));
  box-shadow:var(--shadow-sm,0 10px 30px rgba(7,27,23,.08));
  overflow-x:auto;
}
.availability-calendar-header{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:.65rem}
.availability-calendar-title{margin:0;text-align:center;font:700 clamp(1.15rem,3vw,1.45rem)/1.2 var(--font-display,var(--display,serif));color:var(--color-heading,var(--primary-dark,#0d2d27));text-transform:capitalize}
.availability-calendar-nav{display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--border-light,var(--border));border-radius:50%;background:transparent;color:inherit;font-size:1.8rem;cursor:pointer}
.availability-calendar-nav:hover{border-color:var(--color-accent,var(--accent,#bd8750));background:rgba(189,135,80,.12)}
.availability-calendar-live{min-height:1.4rem;margin:.65rem 0 0;color:var(--color-subtle,var(--muted));font-size:.8rem;text-align:center}
.availability-weekdays,.availability-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:clamp(.25rem,.7vw,.5rem)}
.availability-weekdays{margin:.8rem 0 .45rem;color:var(--color-subtle,var(--muted));font-size:.68rem;font-weight:800;text-align:center;text-transform:uppercase}
.availability-day{position:relative;min-width:0;min-height:clamp(68px,7vw,92px);display:flex;overflow:hidden;flex-direction:column;align-items:flex-start;gap:.2rem;padding:.5rem;border:1px solid var(--border-light,var(--border));border-radius:12px;background:rgba(255,255,255,.32);color:inherit;text-align:left;white-space:normal;cursor:pointer;transition:transform .2s ease,border-color .2s ease,background .2s ease}
.availability-day::before{content:"";position:absolute;top:.45rem;right:.45rem;width:8px;height:8px;border-radius:50%;background:var(--calendar-free)}
.availability-day:hover:not(:disabled){transform:translateY(-2px);border-color:var(--color-accent,var(--accent))}
.availability-day:disabled{cursor:not-allowed;opacity:.58}
.availability-day-number{font-size:.88rem}
.availability-day-status{display:block;width:100%;max-width:100%;overflow:hidden;color:var(--color-subtle,var(--muted));font-size:clamp(.52rem,.7vw,.66rem);line-height:1.2;white-space:normal;overflow-wrap:anywhere;word-break:normal;hyphens:none}
.availability-day.state-indisponivel::before{background:var(--calendar-busy)}
.availability-day.state-data_passada::before{background:var(--calendar-past)}
.availability-day.state-bloqueado::before,.availability-day.admin-state-bloqueado::before{background:var(--calendar-blocked);border-radius:2px;transform:rotate(45deg)}
.availability-day.admin-state-solicitada::before{background:var(--calendar-partial);border-radius:2px}
.availability-day.admin-state-aguardando_pagamento::before{background:var(--calendar-awaiting);border-radius:2px;transform:rotate(45deg)}
.availability-day.admin-state-confirmada::before{background:var(--calendar-free)}
.availability-day.admin-state-checkin::before{background:var(--calendar-checkin);box-shadow:0 0 0 3px color-mix(in srgb,var(--calendar-checkin) 20%,transparent)}
.availability-day.has-special-date::after{content:"";position:absolute;inset:3px;border:1px solid var(--color-accent,var(--accent,#bd8750));border-radius:9px;pointer-events:none}
.availability-day.is-in-range{background:rgba(8,127,130,.12);border-color:rgba(8,127,130,.38)}
.availability-day.is-selected{border-color:var(--color-accent,var(--accent));background:rgba(189,135,80,.2);box-shadow:inset 0 0 0 1px var(--color-accent,var(--accent))}
.availability-calendar-state{min-height:1.2rem;margin-top:.8rem}
.availability-skeleton{display:block;padding:.65rem;border-radius:9px;background:linear-gradient(90deg,rgba(127,127,127,.08),rgba(127,127,127,.18),rgba(127,127,127,.08));background-size:200% 100%;animation:availability-shimmer 1.3s linear infinite;text-align:center;color:var(--color-subtle,var(--muted));font-size:.8rem}
.availability-error{display:flex;align-items:center;justify-content:center;gap:.75rem;flex-wrap:wrap;color:var(--danger,#aa4541);font-size:.8rem;text-align:center}
.availability-error button{min-height:36px;padding:.4rem .8rem;border:1px solid currentColor;border-radius:999px;background:transparent;color:inherit;font-weight:800;cursor:pointer}
.availability-legend{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin:.8rem 0 0;padding:0;list-style:none;color:var(--color-subtle,var(--muted));font-size:.72rem}
.availability-legend li{display:flex;align-items:center;gap:.4rem}
.availability-legend i{width:9px;height:9px;border-radius:50%;background:var(--calendar-free,#287a56)}
.availability-legend .busy i{background:var(--calendar-busy,#aa4541)}
.availability-legend .requested i{border-radius:2px;background:var(--calendar-partial,#d39a32)}
.availability-legend .awaiting i{border-radius:2px;background:var(--calendar-awaiting,#d57b2c);transform:rotate(45deg)}
.availability-legend .confirmed i{background:var(--calendar-free,#287a56)}
.availability-legend .checkin i{background:var(--calendar-checkin,#168c91);box-shadow:0 0 0 3px color-mix(in srgb,var(--calendar-checkin,#168c91) 20%,transparent)}
.availability-legend .blocked i{border-radius:2px;background:var(--calendar-blocked,#695b7c);transform:rotate(45deg)}
.availability-legend .special i{border:2px solid var(--color-accent,var(--accent,#bd8750));background:transparent}
.availability-legend .past i{background:var(--calendar-past,#7c8c86)}
.availability-summary{margin-top:1rem;padding:1rem;border:1px solid var(--border-light,var(--border));border-radius:12px;background:rgba(8,127,130,.08);color:var(--color-subtle,var(--muted));font-size:.84rem}
.availability-summary strong{color:var(--color-heading,var(--primary-dark));display:block;margin-bottom:.35rem}
.availability-summary dl{display:grid;grid-template-columns:auto 1fr;gap:.25rem .75rem;margin:0}
.availability-summary dt{font-weight:800}.availability-summary dd{margin:0}
html[data-theme="dark"] .availability-calendar{background:rgba(4,24,20,.54)}
html[data-theme="dark"] .availability-day{background:rgba(255,255,255,.035)}
html[data-theme="dark"] .availability-day.is-in-range{background:rgba(31,181,176,.12)}
html[data-theme="dark"] .availability-day.is-selected{background:rgba(189,135,80,.18)}
@keyframes availability-shimmer{to{background-position:-200% 0}}
@media(max-width:620px){
  .availability-calendar{padding:.75rem}
  .availability-weekdays,.availability-days{min-width:308px;gap:.2rem}
  .availability-day{min-height:58px;padding:.35rem}
  .availability-day::before{top:.3rem;right:.3rem;width:6px;height:6px}
  .availability-day-status{font-size:.48rem;line-height:1.08}
}
@media(max-width:370px){.availability-day-status{display:none}.availability-day{min-height:46px;align-items:center;justify-content:center}.availability-day::before{top:.28rem;right:.28rem}}
@media(prefers-reduced-motion:reduce){.availability-day{transition:none}.availability-skeleton{animation:none}}

/* Responsive consistency */
.availability-calendar *{min-width:0}
.availability-calendar-title{overflow-wrap:anywhere;text-align:center}
.availability-calendar-header,.availability-legend,.availability-summary{max-width:100%}
@media(max-width:620px){
  .availability-calendar{padding:.75rem;scrollbar-gutter:auto}
  .availability-calendar-header{grid-template-columns:44px minmax(0,1fr) 44px;gap:.35rem}
  .availability-calendar-title{font-size:clamp(1rem,5vw,1.25rem)}
  .availability-legend{gap:.45rem .75rem}
  .availability-summary dl{grid-template-columns:1fr}
  .availability-summary dd{margin:0 0 .4rem;overflow-wrap:anywhere}
}
@media(max-width:360px){.availability-calendar{padding:.5rem}.availability-calendar-header{grid-template-columns:40px minmax(0,1fr) 40px}.availability-calendar-nav{width:40px;height:40px}}
