/* Scottland Farm Booking — front end.
   Colours are CSS variables so the theme / Elementor kit can override them:
   --sfb-accent (brass), --sfb-dark (spruce), --sfb-booked, --sfb-pending. */
.sfb {
	--sfb-accent: #b8925a;
	--sfb-dark: #1f3a30;
	--sfb-text: #1f2a26;
	--sfb-muted: #6b7570;
	--sfb-line: #d9dcd8;
	--sfb-free: #ffffff;
	--sfb-booked: #c9cfcb;
	--sfb-booked-text: #7b8480;
	--sfb-pending: #f3e3c2;
	--sfb-range: #e6efe9;
	--sfb-radius: 6px;
	color: var(--sfb-text);
	font-family: inherit;
	max-width: 100%;
	margin: 0 auto;
}
.sfb *, .sfb *::before, .sfb *::after { box-sizing: border-box; }

/* Calendar */
.sfb-calendar { margin-bottom: 1.5rem; }
.sfb-cal-nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: .5rem; }
.sfb-cal-title { font-weight: 600; font-size: 1.05rem; letter-spacing: .02em; }
.sfb-cal-nav button { background: none; border: 1px solid var(--sfb-line); border-radius: 999px; width: 2.25rem; height: 2.25rem; font-size: 1.4rem; line-height: 1; cursor: pointer; color: var(--sfb-dark); }
.sfb-cal-nav button:hover { border-color: var(--sfb-dark); }
.sfb-months { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.5rem; }
.sfb-month-name { text-align: center; font-weight: 600; margin-bottom: .5rem; color: var(--sfb-dark); }
.sfb-grid7 { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.sfb-dow { text-align: center; font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--sfb-muted); padding: .25rem 0; }
.sfb-day { position: relative; aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center; border-radius: var(--sfb-radius); font-size: .92rem; background: var(--sfb-free); border: 1px solid var(--sfb-line); cursor: pointer; user-select: none; overflow: hidden; }
.sfb-day span { position: relative; z-index: 2; }
.sfb-empty { background: transparent; border: none; cursor: default; }
.sfb-day.is-past { color: var(--sfb-booked-text); background: #f5f6f5; border-color: transparent; cursor: default; }
.sfb-day.is-booked { background: var(--sfb-booked); color: var(--sfb-booked-text); border-color: var(--sfb-booked); cursor: not-allowed; }
.sfb-day.is-pending { background: var(--sfb-pending); }
.sfb-day.is-free:hover:not(.is-disabled) { border-color: var(--sfb-accent); }
/* Changeover days: check-out morning on a free night (bookable check-in) shows a booked wedge top-left;
   a check-in day on a booked night shows a free wedge top-left. */
.sfb-day.is-changeover-out::before { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, var(--sfb-booked) 0 50%, transparent 50% 100%); z-index: 1; }
.sfb-day.is-changeover-in::before { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, var(--sfb-free) 0 50%, transparent 50% 100%); z-index: 1; }
.sfb-day.is-sel-in, .sfb-day.is-sel-out { background: var(--sfb-dark) !important; color: #fff !important; border-color: var(--sfb-dark) !important; }
.sfb-day.is-sel-in::before, .sfb-day.is-sel-out::before { display: none; }
.sfb-day.is-in-range { background: var(--sfb-range) !important; border-color: var(--sfb-range) !important; }
.sfb-legend { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: .75rem; font-size: .82rem; color: var(--sfb-muted); }
.sfb-sw { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: -1px; margin-right: .25rem; border: 1px solid var(--sfb-line); }
.sfb-sw-free { background: var(--sfb-free); }
.sfb-sw-pending { background: var(--sfb-pending); }
.sfb-sw-booked { background: var(--sfb-booked); }
.sfb-hint { font-size: .85rem; color: var(--sfb-muted); margin: .5rem 0 0; }

/* Form */
.sfb-form { border-top: 1px solid var(--sfb-line); padding-top: 1.25rem; }
.sfb-selected { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-end; margin-bottom: 1rem; }
.sfb-date-box { min-width: 120px; }
.sfb-date-box label { display: block; font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--sfb-muted); margin-bottom: .15rem; }
.sfb-date-box output { font-weight: 600; font-size: 1.05rem; color: var(--sfb-dark); }
.sfb-clear { background: none; border: none; color: var(--sfb-muted); text-decoration: underline; cursor: pointer; font-size: .85rem; padding: 0; }
.sfb-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem 1rem; }
.sfb-grid label { display: block; }
.sfb-grid label span { display: block; font-size: .85rem; margin-bottom: .3rem; color: var(--sfb-text); }
.sfb-grid input, .sfb-grid select, .sfb-grid textarea { width: 100%; padding: .6rem .75rem; border: 1px solid var(--sfb-line); border-radius: var(--sfb-radius); font: inherit; background: #fff; color: var(--sfb-text); }
.sfb-grid input:focus, .sfb-grid select:focus, .sfb-grid textarea:focus { outline: 2px solid var(--sfb-accent); outline-offset: 1px; border-color: var(--sfb-accent); }
.sfb-wide { grid-column: 1 / -1; }
.sfb-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.sfb-actions { margin-top: 1.1rem; display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: center; }
.sfb-submit { background: var(--sfb-accent); color: #fff; border: none; border-radius: var(--sfb-radius); padding: .8rem 1.4rem; font: inherit; font-weight: 600; letter-spacing: .03em; cursor: pointer; }
.sfb-submit:hover { filter: brightness(.94); }
.sfb-submit:disabled { opacity: .6; cursor: wait; }
.sfb-message { font-size: .92rem; flex: 1 1 240px; }
.sfb-message.is-error { color: #a13d2d; }
.sfb-message.is-note { color: var(--sfb-muted); }
.sfb-message.is-success { color: var(--sfb-dark); font-weight: 600; font-size: 1rem; }
.sfb-fineprint { font-size: .8rem; color: var(--sfb-muted); margin: .75rem 0 0; }

@media (max-width: 560px) {
	.sfb-grid { grid-template-columns: 1fr; }
	.sfb-day { font-size: .85rem; }
}
