/* LWAS Villa Engine: neutral front-end styles. Restyle with your own CSS; brand colours come from the settings. */
:root { --lwas-ve-primary: #1f4e5f; --lwas-ve-accent: #e07a3f; --lwas-ve-line: #d9dde0; --lwas-ve-muted: #5c666c; --lwas-ve-free: #e8f3ec; --lwas-ve-taken: #e9d3d0; }

.lwas-ve-sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

.lwas-ve-price-box, .lwas-ve-rates, .lwas-ve-amenities, .lwas-ve-search, .lwas-ve-enquiry, .lwas-ve-calendar { box-sizing: border-box; margin: 0 0 1.5rem; }
.lwas-ve-price-box *, .lwas-ve-calendar *, .lwas-ve-search *, .lwas-ve-enquiry *, .lwas-ve-results * { box-sizing: border-box; }

/* Focus */
.lwas-ve-price-box :focus-visible, .lwas-ve-calendar :focus-visible, .lwas-ve-search :focus-visible, .lwas-ve-enquiry :focus-visible,
.lwas-ve-results :focus-visible, .lwas-ve-currency :focus-visible { outline: 3px solid var(--lwas-ve-accent); outline-offset: 2px; }

/* Buttons and fields */
.lwas-ve-price-box button, .lwas-ve-search button, .lwas-ve-enquiry button, .lwas-ve-button {
  display: inline-block; padding: .65rem 1.2rem; border: 0; border-radius: 4px; background: var(--lwas-ve-primary); color: #fff;
  font: inherit; font-weight: 600; text-decoration: none; cursor: pointer;
}
.lwas-ve-price-box button:hover, .lwas-ve-search button:hover, .lwas-ve-enquiry button:hover, .lwas-ve-button:hover { filter: brightness(1.12); }
a.lwas-ve-button:visited { color: #fff; }
.lwas-ve-price-box button[disabled], .lwas-ve-search button[disabled], .lwas-ve-enquiry button[disabled] { opacity: .55; cursor: not-allowed; }
.lwas-ve-price-box input, .lwas-ve-price-box select, .lwas-ve-search input, .lwas-ve-search select,
.lwas-ve-enquiry input, .lwas-ve-enquiry select, .lwas-ve-enquiry textarea {
  width: 100%; padding: .55rem .65rem; border: 1px solid var(--lwas-ve-line); border-radius: 4px; background: #fff; color: inherit; font: inherit;
}
.lwas-ve-price-box label, .lwas-ve-search label, .lwas-ve-enquiry label { display: block; margin-bottom: .25rem; font-size: .9rem; font-weight: 600; }

/* Price box */
.lwas-ve-price-box { padding: 1.25rem; border: 1px solid var(--lwas-ve-line); border-radius: 6px; background: #fff; }
.lwas-ve-price-box .lwas-ve-money { font-weight: 700; color: var(--lwas-ve-primary); }
.lwas-ve-price-box form { display: grid; gap: .75rem; }
.lwas-ve-price-box .lwas-ve-total { font-size: 1.4rem; }

/* Currency switch */
.lwas-ve-currency { display: inline-flex; gap: .25rem; margin: 0 0 1rem; padding: 0; list-style: none; }
.lwas-ve-currency [data-lwas-ve-currency] { padding: .3rem .7rem; border: 1px solid var(--lwas-ve-line); border-radius: 999px; background: #fff; color: inherit; font: inherit; font-size: .85rem; cursor: pointer; }
.lwas-ve-currency [data-lwas-ve-currency].is-active { border-color: var(--lwas-ve-primary); background: var(--lwas-ve-primary); color: #fff; }

/* Calendar */
.lwas-ve-calendar { max-width: 46rem; }
.lwas-ve-calendar-nav { display: flex; justify-content: space-between; margin-bottom: .5rem; }
.lwas-ve-calendar-nav button { padding: .3rem .8rem; border: 1px solid var(--lwas-ve-line); border-radius: 4px; background: #fff; color: inherit; font: inherit; cursor: pointer; }
.lwas-ve-calendar-nav button[disabled] { opacity: .45; cursor: not-allowed; }
.lwas-ve-calendar-months { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 1rem; }
.lwas-ve-day { display: block; line-height: 2.4rem; }
.lwas-ve-calendar-head { display: flex; align-items: center; justify-content: center; margin-bottom: .5rem; font-weight: 700; }
.lwas-ve-calendar-head button { padding: .3rem .7rem; border: 1px solid var(--lwas-ve-line); border-radius: 4px; background: #fff; color: inherit; font: inherit; cursor: pointer; }
.lwas-ve-calendar table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.lwas-ve-calendar th { padding: .25rem 0; font-size: .75rem; font-weight: 600; color: var(--lwas-ve-muted); text-align: center; }
.lwas-ve-calendar td { height: 2.4rem; padding: 0; border: 1px solid #fff; background: var(--lwas-ve-free); font-size: .85rem; text-align: center; vertical-align: middle; }
.lwas-ve-calendar td:empty { background: transparent; }
.lwas-ve-calendar td.is-taken { background: var(--lwas-ve-taken); color: var(--lwas-ve-muted); text-decoration: line-through; }
.lwas-ve-calendar td.is-arrival { background: linear-gradient(135deg, var(--lwas-ve-taken) 50%, var(--lwas-ve-free) 50%); }
.lwas-ve-calendar td.is-departure { background: linear-gradient(135deg, var(--lwas-ve-free) 50%, var(--lwas-ve-taken) 50%); }
.lwas-ve-calendar td.is-past { background: #f1f2f3; color: #9aa2a7; }
.lwas-ve-calendar td.is-unpriced { background: repeating-linear-gradient(135deg, #f1f2f3 0 4px, #e2e5e7 4px 8px); color: var(--lwas-ve-muted); }
.lwas-ve-calendar td.is-selected { outline: 2px solid var(--lwas-ve-primary); outline-offset: -2px; }
.lwas-ve-calendar-legend { display: flex; flex-wrap: wrap; gap: .75rem; margin: .6rem 0 0; padding: 0; list-style: none; font-size: .8rem; color: var(--lwas-ve-muted); }
.lwas-ve-calendar-legend li::before { content: ""; display: inline-block; width: .8rem; height: .8rem; margin-right: .3rem; vertical-align: -.1rem; border: 1px solid var(--lwas-ve-line); background: var(--lwas-ve-free); }
.lwas-ve-calendar-legend .is-taken::before { background: var(--lwas-ve-taken); }
.lwas-ve-calendar-legend .is-arrival::before { background: linear-gradient(135deg, var(--lwas-ve-taken) 50%, var(--lwas-ve-free) 50%); }
.lwas-ve-calendar-legend .is-departure::before { background: linear-gradient(135deg, var(--lwas-ve-free) 50%, var(--lwas-ve-taken) 50%); }
.lwas-ve-calendar-legend .is-unpriced::before { background: repeating-linear-gradient(135deg, #f1f2f3 0 2px, #e2e5e7 2px 4px); }

/* Rates table and amenities */
table.lwas-ve-rates { width: 100%; border-collapse: collapse; }
.lwas-ve-rates th, .lwas-ve-rates td { padding: .55rem .7rem; border-bottom: 1px solid var(--lwas-ve-line); text-align: left; }
.lwas-ve-rates th { font-size: .85rem; color: var(--lwas-ve-muted); }
.lwas-ve-amenities ul { display: grid; grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); gap: .4rem 1rem; margin: 0; padding: 0; list-style: none; }
.lwas-ve-amenities li::before { content: "\2713"; margin-right: .5rem; color: var(--lwas-ve-accent); font-weight: 700; }

/* Search and results */
.lwas-ve-search { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: .75rem; align-items: end; }
.lwas-ve-result-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: 1.25rem; margin: 0 0 1.5rem; padding: 0; list-style: none; }
.lwas-ve-result-list > li, .lwas-ve-card { overflow: hidden; border: 1px solid var(--lwas-ve-line); border-radius: 6px; background: #fff; }
.lwas-ve-results img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
.lwas-ve-card-body { padding: 1rem; }
.lwas-ve-card-body h3 { margin: 0 0 .4rem; font-size: 1.1rem; }
.lwas-ve-card-meta { margin: 0 0 .6rem; font-size: .85rem; color: var(--lwas-ve-muted); }

/* Enquiry form */
.lwas-ve-enquiry { display: grid; gap: .85rem; max-width: 36rem; }
.lwas-ve-enquiry .lwas-ve-hp { position: absolute; left: -9999px; }
.lwas-ve-field-error { display: block; min-height: 0; font-size: .85rem; color: #b3261e; }
.lwas-ve-enquiry-status.is-error { color: #b3261e; }
.lwas-ve-pagination { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.5rem; }
.lwas-ve-pagination [aria-current=page] { font-weight: 700; }

/* Notices */
.lwas-ve-notice { margin: 0 0 1rem; padding: .75rem 1rem; border-left: 4px solid var(--lwas-ve-accent); background: #fbf3ec; }
.lwas-ve-notice.is-error { border-left-color: #b3261e; background: #fbeceb; }
.lwas-ve-notice.is-success { border-left-color: #2e7d4f; background: #e8f3ec; }

@media (prefers-reduced-motion: reduce) { .lwas-ve-price-box *, .lwas-ve-calendar * { transition: none !important; } }
