body.fungi-availability-open { overflow: hidden; }
.fungi-availability[hidden], .fungi-availability__calendar[hidden], .fungi-availability__interest[hidden] { display: none !important; }
.fungi-availability { position: fixed; inset: 0; z-index: 10000; display: grid; place-items: center; padding: 24px; color: #29231f; }
.fungi-availability__backdrop { position: absolute; inset: 0; background: rgba(20, 16, 13, .68); backdrop-filter: blur(9px); opacity: 0; transition: opacity .3s ease; }
.fungi-availability__dialog { position: relative; width: min(880px, 100%); max-height: calc(100dvh - 48px); overflow: auto; overscroll-behavior: contain; padding: clamp(38px, 5vw, 68px); background: #f3ede2; box-shadow: 0 30px 100px rgba(0,0,0,.3); outline: none; opacity: 0; transform: translateY(20px) scale(.985); transition: opacity .3s ease, transform .3s ease; }
.fungi-availability__dialog::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 6px; background: #8d563d; }
.fungi-availability.is-open .fungi-availability__backdrop, .fungi-availability.is-open .fungi-availability__dialog { opacity: 1; }
.fungi-availability.is-open .fungi-availability__dialog { transform: none; }
.fungi-availability__close { position: absolute; top: 22px; right: 22px; width: 48px; height: 48px; display: grid; place-items: center; border: 1px solid rgba(41,35,31,.22); border-radius: 50%; background: transparent; color: inherit; cursor: pointer; transition: color .2s, background .2s, transform .2s; }
.fungi-availability__close:hover { color: #fff; background: #29231f; transform: rotate(8deg); }
.fungi-availability__close svg { width: 19px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.fungi-availability__header { max-width: 650px; padding-right: 52px; }
.fungi-availability__header p, .fungi-availability__interest span, .fungi-availability__date-field > span, .fungi-availability__guest > span { display: block; font: 700 16px/1.2 var(--fungi-sans, system-ui, sans-serif); letter-spacing: .18em; text-transform: uppercase; }
.fungi-availability__header p { margin: 0 0 20px; color: #8d563d; }
.fungi-availability__header h2 { max-width: 9ch; margin: 0; font-family: var(--fungi-serif, Georgia, serif); font-size: clamp(43px, 6vw, 72px); font-weight: 500; line-height: .86; letter-spacing: -.055em; }
.fungi-availability__header > span { display: block; max-width: 54ch; margin-top: 22px; color: #655e57; font: 400 14px/1.65 var(--fungi-sans, system-ui, sans-serif); }

.fungi-availability__interest { display: grid; grid-template-columns: 52px minmax(0,1fr); gap: 16px; align-items: start; max-width: 620px; margin: 34px 0 0 34px; padding: 3px 0 4px; border-block: 1px solid rgba(41,35,31,.18); }
.fungi-availability__interest > i { width: 38px; height: 38px; display: grid; place-items: center; margin-top: 14px; border: 1px solid #8d563d; border-radius: 50%; color: #8d563d; font-style: normal; font-size: 14px; }
.fungi-availability__interest > div { padding: 14px 0 15px; }
.fungi-availability__interest span { color: #8d563d; }
.fungi-availability__interest strong { display: block; margin-top: 6px; font: 500 clamp(24px,3vw,31px)/1 var(--fungi-serif, Georgia, serif); letter-spacing: -.025em; }
.fungi-availability__interest p { margin: 7px 0 0; color: #655e57; font: 400 16px/1.5 var(--fungi-sans, system-ui, sans-serif); }

.fungi-availability__form { margin-top: 42px; }
.fungi-availability__dates { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); border: 1px solid rgba(41,35,31,.24); }
.fungi-availability__date-field { min-width: 0; padding: 15px 18px 16px; background: rgba(255,255,255,.24); }
.fungi-availability__date-field + .fungi-availability__date-field { border-left: 1px solid rgba(41,35,31,.2); }
.fungi-availability__date-field > span { color: #6f6257; }
.fungi-availability__date-trigger { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 12px; padding: 0; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }
.fungi-availability__date-trigger strong { overflow: hidden; font: 500 24px/1 var(--fungi-serif, Georgia, serif); letter-spacing: -.035em; text-overflow: ellipsis; white-space: nowrap; }
.fungi-availability__date-trigger svg { width: 19px; flex: 0 0 auto; fill: none; stroke: #8d563d; stroke-width: 1.5; }
.fungi-availability__date-field:has(.fungi-availability__date-trigger[aria-expanded="true"]) { background: #fffaf1; box-shadow: inset 0 -3px #8d563d; }

.fungi-availability__calendar { margin-top: 12px; padding: 16px 18px 19px; border: 1px solid rgba(41,35,31,.24); background: #fffaf1; }
.fungi-availability__calendar-meta { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding-bottom: 15px; border-bottom: 1px solid rgba(41,35,31,.14); }
.fungi-availability__calendar-meta p { margin: 0; color: #8d563d; font: 700 16px/1.2 var(--fungi-sans, system-ui, sans-serif); letter-spacing: .16em; text-transform: uppercase; }
.fungi-availability__calendar-meta button { padding: 0; border: 0; border-bottom: 1px solid currentColor; background: none; color: #655e57; font: 700 14px/1.2 var(--fungi-sans, system-ui, sans-serif); letter-spacing: .12em; text-transform: uppercase; cursor: pointer; }
.fungi-availability__calendar-nav { display: grid; grid-template-columns: 38px minmax(0,1fr) 38px; align-items: center; gap: 10px; margin-top: 14px; }
.fungi-availability__calendar-nav > button { width: 38px; height: 38px; display: grid; place-items: center; border: 1px solid rgba(41,35,31,.26); border-radius: 50%; background: transparent; color: inherit; font-size: 18px; cursor: pointer; }
.fungi-availability__calendar-nav > button:disabled { opacity: .25; cursor: default; }
[data-calendar-months] { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 30px; }
.fungi-availability__month h3 { margin: 0 0 13px; font: 500 20px/1 var(--fungi-serif, Georgia, serif); letter-spacing: -.025em; text-align: center; }
.fungi-availability__weekdays, .fungi-availability__month-days { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); text-align: center; }
.fungi-availability__weekdays { margin-bottom: 4px; color: #8d563d; font: 700 12px/1 var(--fungi-sans, system-ui, sans-serif); text-transform: uppercase; }
.fungi-availability__month-days { row-gap: 3px; }
.fungi-availability__month-days i { min-height: 33px; }
.fungi-availability__month-days button { position: relative; min-height: 33px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: #29231f; font: 500 14px/1 var(--fungi-sans, system-ui, sans-serif); cursor: pointer; }
.fungi-availability__month-days button:hover:not(:disabled) { background: rgba(141,86,61,.13); }
.fungi-availability__month-days button:disabled { color: rgba(41,35,31,.28); cursor: default; }
.fungi-availability__month-days button.is-in-range { border-radius: 0; background: rgba(141,86,61,.13); }
.fungi-availability__month-days button.is-arrival, .fungi-availability__month-days button.is-departure { color: #fff; background: #8d563d; }

.fungi-availability__guests { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); margin-top: 12px; border-block: 1px solid rgba(41,35,31,.24); }
.fungi-availability__guest { min-height: 82px; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px 18px; }
.fungi-availability__guest + .fungi-availability__guest { border-left: 1px solid rgba(41,35,31,.2); }
.fungi-availability__guest > span { color: #6f6257; }
.fungi-availability__guest > div { display: grid; grid-template-columns: 38px 28px 38px; align-items: center; text-align: center; }
.fungi-availability__guest button { width: 38px; height: 38px; border: 1px solid rgba(41,35,31,.27); border-radius: 50%; background: transparent; color: inherit; font: 400 22px/1 var(--fungi-sans, system-ui, sans-serif); cursor: pointer; transition: color .2s, background .2s; }
.fungi-availability__guest button:hover:not(:disabled) { color: #fff; background: #29231f; }
.fungi-availability__guest button:disabled { opacity: .25; cursor: default; }
.fungi-availability__guest output { font: 600 15px/1 var(--fungi-sans, system-ui, sans-serif); }
.fungi-availability__children-note { margin: 10px 0 0; color: #706861; font: 400 16px/1.45 var(--fungi-sans, system-ui, sans-serif); }
.fungi-availability__error { min-height: 20px; margin: 16px 0 8px; color: #9a382f; font: 600 16px/1.45 var(--fungi-sans, system-ui, sans-serif); }
.fungi-availability__submit { min-height: 52px; display: inline-flex; align-items: center; gap: 22px; padding: 0 9px 0 22px; border: 1px solid #29231f; background: #29231f; color: #fff; font: 700 14px/1 var(--fungi-sans, system-ui, sans-serif); letter-spacing: .16em; text-transform: uppercase; cursor: pointer; transition: transform .25s, color .25s, background .25s; }
.fungi-availability__submit:hover { color: #29231f; background: transparent; transform: translateY(-2px); }
.fungi-availability__submit span { width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid currentColor; border-radius: 50%; font-size: 18px; font-weight: 400; }
.fungi-availability button:focus-visible { outline: 2px solid #8d563d; outline-offset: 3px; }

@media (max-width: 700px) {
	.fungi-availability { place-items: end center; padding: 0; }
	.fungi-availability__dialog { width: 100%; max-height: 96dvh; padding: 31px 20px max(25px,env(safe-area-inset-bottom)); transform: translateY(100%); }
	.fungi-availability__dialog::before { width: 44px; height: 4px; top: 12px; left: calc(50% - 22px); border-radius: 999px; }
	.fungi-availability__close { top: 20px; right: 16px; width: 43px; height: 43px; }
	.fungi-availability__header { padding-right: 44px; }
	.fungi-availability__header p { margin-top: 16px; }
	.fungi-availability__header h2 { font-size: clamp(42px,12vw,56px); }
	.fungi-availability__header > span { margin-top: 17px; font-size: 13px; }
	.fungi-availability__interest { grid-template-columns: 39px minmax(0,1fr); gap: 11px; margin: 26px 0 0 10px; }
	.fungi-availability__interest > i { width: 30px; height: 30px; margin-top: 14px; font-size: 12px; }
	.fungi-availability__interest strong { font-size: 24px; }
	.fungi-availability__form { margin-top: 29px; }
	.fungi-availability__date-field { padding: 14px 12px 15px; }
	.fungi-availability__date-trigger strong { font-size: 20px; }
	.fungi-availability__calendar { padding: 14px 10px 16px; }
	.fungi-availability__calendar-nav { grid-template-columns: 32px minmax(0,1fr) 32px; gap: 3px; }
	.fungi-availability__calendar-nav > button { width: 32px; height: 32px; font-size: 16px; }
	[data-calendar-months] { display: block; }
	.fungi-availability__month + .fungi-availability__month { display: none; }
	.fungi-availability__month h3 { font-size: 21px; }
	.fungi-availability__month-days button, .fungi-availability__month-days i { min-height: 37px; }
	.fungi-availability__guests { grid-template-columns: 1fr; margin-top: 12px; }
	.fungi-availability__guest { min-height: 67px; padding: 10px 13px; }
	.fungi-availability__guest + .fungi-availability__guest { border-top: 1px solid rgba(41,35,31,.2); border-left: 0; }
	.fungi-availability__submit { width: 100%; justify-content: space-between; min-height: 56px; }
}
@media (prefers-reduced-motion: reduce) { .fungi-availability__backdrop, .fungi-availability__dialog { transition: none; } }
