.availability-date-trigger { display:block; width:100%; min-height:48px; border:1px solid var(--lp-line); border-radius:6px; padding:10px 12px; background:white; color:var(--lp-ink); text-align:left; font:inherit; cursor:pointer; }
.availability-date-trigger::after { content:'▦'; float:right; margin-left:8px; color:var(--lp-green-dark); }
.availability-date-trigger:focus-visible,.availability-picker button:focus-visible { outline:3px solid var(--lp-gold);outline-offset:2px; }
.availability-picker[hidden] { display:none; }
.availability-picker { grid-column:1/-1; min-width:0; padding:18px; margin:2px 0 14px; border:1px solid var(--lp-line); border-radius:10px; background:var(--lp-paper); box-shadow:0 5px 20px #173c2f0b; }
.availability-picker-heading,.availability-nav { display:flex;justify-content:space-between;align-items:center;gap:12px; }
.availability-picker-heading strong { font-size:1.1rem; }
.availability-picker-heading button,.availability-nav button { display:grid;place-items:center; flex:none; width:40px;height:40px; border:1px solid var(--lp-line);border-radius:50%;background:white;color:var(--lp-green-dark);font-size:1.5rem;cursor:pointer; }
.availability-nav { margin:10px 0; }
.availability-nav span { text-transform:capitalize;text-align:center;font-size:.88rem; }
.availability-instruction,.availability-calendar-note { font-size:.83rem;line-height:1.5;color:var(--lp-muted); }
.availability-months { display:grid;grid-template-columns:1fr 1fr;gap:24px; }
.availability-month h4 { margin:8px 0 12px;font-family:inherit;font-size:.95rem;text-align:center;text-transform:capitalize; }
.availability-days { display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px; }
.availability-weekday { text-align:center;font-size:.7rem;color:var(--lp-muted);padding:4px 0; }
.availability-day { display:block; min-width:0;width:100%;height:39px;border:1px solid transparent;border-radius:5px;font:inherit;font-size:.9rem;font-weight:600;cursor:pointer; }
.availability-day.is-available,.availability-key.is-available { background:#e4f0e6;color:#27513e; }
.availability-day.is-unavailable,.availability-key.is-unavailable { background:#f7e6e4;color:#87524b; }
.availability-day.is-past,.availability-day.is-unknown { background:#eeefec;color:#7c837d; }
.availability-day:disabled { cursor:default;opacity:1; }
.availability-day.is-selected { outline:2px solid var(--lp-green-dark);outline-offset:-2px; }
.availability-day.is-between { border-color:#71957b; }
.availability-day.is-available:hover { border-color:var(--lp-green-dark); }
.availability-legend { display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:.76rem;margin:16px 0 8px; }
.availability-key { width:13px;height:13px;display:inline-block;border:1px solid #0001;border-radius:3px; }
.availability-key:not(:first-child) { margin-left:12px; }
.availability-notice { color:var(--lp-muted);font-size:.85rem;line-height:1.5;margin:12px 0 0; }
.availability-retry { display:inline-block;border:0;background:none;padding:5px 0;color:var(--lp-green-dark);text-decoration:underline;font:inherit;font-size:.78rem;cursor:pointer; }
.availability-error { color:#873a32;font-size:.9rem;line-height:1.5; }
.availability-error:empty { display:none; }
@media(max-width:767px) { .availability-months { grid-template-columns:1fr; }.availability-picker { padding:12px; }.availability-day { min-height:40px; }.availability-nav span { font-size:.8rem; } }
