.vwp-booking-widget { --vwp-accent:#1e5eff; --vwp-button:#1e5eff; --vwp-button-text:#fff; --vwp-surface:#fff; --vwp-text:#1d2939; --vwp-border:#d0d5dd; --vwp-radius:12px; --vwp-font:inherit; box-sizing:border-box; color:var(--vwp-text); font-family:var(--vwp-font); }
.vwp-booking-widget *, .vwp-booking-widget *::before, .vwp-booking-widget *::after { box-sizing:border-box; }
.vwp-booking-widget__form { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)) auto; gap:12px; align-items:end; padding:18px; border:1px solid var(--vwp-border); border-radius:var(--vwp-radius); background:var(--vwp-surface); box-shadow:0 8px 24px rgba(16,24,40,.08); }
.vwp-booking-widget__field { min-width:0; }
.vwp-booking-widget__field label { display:block; margin:0 0 7px; color:var(--vwp-text); font:inherit; font-size:14px; font-weight:600; line-height:1.3; }
.vwp-booking-widget__field input, .vwp-booking-widget__field select { width:100%; min-height:46px; padding:0 12px; border:1px solid var(--vwp-border); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-surface); color:var(--vwp-text); font:inherit; font-size:16px; line-height:1.2; }
.vwp-booking-widget__field input:focus, .vwp-booking-widget__field select:focus, .vwp-booking-widget__action button:focus { outline:2px solid var(--vwp-accent); outline-offset:2px; }
.vwp-booking-widget__action button { min-height:46px; padding:0 20px; border:1px solid var(--vwp-button); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-button); color:var(--vwp-button-text); cursor:pointer; font:inherit; font-size:16px; font-weight:700; line-height:1.2; white-space:nowrap; }
.vwp-booking-widget__action button:hover:not(:disabled) { filter:brightness(.94); }
.vwp-booking-widget__action button:disabled, .vwp-booking-widget__field :disabled { cursor:default; opacity:1; }
.vwp-booking-widget--preview { max-width:100%; }
.vwp-booking-widget__results { margin-top:16px; }
.vwp-booking-widget__message { margin:0; padding:13px 14px; border:1px solid var(--vwp-border); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-surface); color:var(--vwp-text); font:inherit; line-height:1.45; }
.vwp-booking-widget__message--error { border:1px solid #d92d20; color:#b42318; }
.vwp-booking-widget__message--loading { border:1px solid var(--vwp-border); }
.vwp-booking-widget__result-list { display:grid; gap:12px; }
.vwp-booking-widget__result { display:grid; gap:16px; padding:16px; border:1px solid var(--vwp-border); border-radius:var(--vwp-radius); background:var(--vwp-surface); color:var(--vwp-text); overflow:hidden; }
.vwp-booking-widget__result-main { display:grid; grid-template-columns:minmax(220px,248px) minmax(0,1fr) minmax(186px,210px); gap:18px; align-items:start; min-width:0; }
.vwp-booking-widget__result.is-selected { border-color:var(--vwp-accent); box-shadow:0 0 0 1px var(--vwp-accent); }
.vwp-booking-widget__result-summary { min-width:0; }
.vwp-booking-widget__result-media { min-width:0; aspect-ratio:4 / 3; overflow:hidden; border-radius:calc(var(--vwp-radius) * .66); background:#e9edf2; }
.vwp-booking-widget__result-media img { display:block; width:100%; height:100%; object-fit:cover; }
.vwp-booking-widget__result h3, .vwp-booking-widget__result p { margin:0; font:inherit; }
.vwp-booking-widget__result h3 { font-size:17px; font-weight:700; line-height:1.35; }
.vwp-booking-widget__result-summary > p { margin-top:7px; font-size:14px; line-height:1.4; }
.vwp-booking-widget__result-facts { color:var(--vwp-text); font-weight:600; }
.vwp-booking-widget__result-amenities { color:var(--vwp-text); opacity:.78; }
.vwp-booking-widget__availability { color:var(--vwp-text); font-weight:600; }
.vwp-booking-widget__price { display:grid; gap:3px; margin:0; }
.vwp-booking-widget__price span { color:var(--vwp-text); font-size:13px; }
.vwp-booking-widget__price strong { font-size:20px; line-height:1.15; }
.vwp-booking-widget__result-controls { display:grid; gap:10px; min-width:0; align-content:start; }
.vwp-booking-widget__result-controls label { display:grid; gap:6px; font:inherit; font-size:13px; font-weight:600; }
.vwp-booking-widget__result-controls select { min-height:40px; min-width:68px; padding:0 8px; border:1px solid var(--vwp-border); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-surface); color:var(--vwp-text); font:inherit; }
.vwp-booking-widget__result-controls select:focus, .vwp-booking-widget__continue:focus { outline:2px solid var(--vwp-accent); outline-offset:2px; }
.vwp-booking-widget__details { min-height:40px; padding:0 12px; border:1px solid var(--vwp-accent); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-surface); color:var(--vwp-accent); cursor:pointer; font:inherit; font-size:14px; font-weight:700; white-space:nowrap; }
.vwp-booking-widget__details:hover, .vwp-booking-widget__details:focus-visible { border-color:var(--vwp-accent); background:var(--vwp-accent); color:var(--vwp-button-text); outline:0; box-shadow:0 0 0 3px color-mix(in srgb, var(--vwp-accent) 18%, transparent); }
.vwp-booking-widget__result-detail { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; min-width:0; padding-top:16px; border-top:1px solid var(--vwp-border); }
.vwp-booking-widget__result-detail[hidden] { display:none !important; }
.vwp-booking-widget__detail-gallery { grid-column:1 / -1; display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; min-width:0; }
.vwp-booking-widget__detail-gallery img { width:100%; aspect-ratio:4 / 3; border-radius:calc(var(--vwp-radius) * .5); object-fit:cover; }
.vwp-booking-widget__detail-description { grid-column:1 / -1; margin:0; color:var(--vwp-text); font:inherit; line-height:1.55; white-space:pre-line; }
.vwp-booking-widget__detail-section { min-width:0; }
.vwp-booking-widget__detail-section h4 { margin:0 0 7px; color:var(--vwp-text); font:inherit; font-size:14px; font-weight:700; }
.vwp-booking-widget__detail-section ul { display:flex; flex-wrap:wrap; gap:7px 12px; margin:0; padding:0; list-style:none; color:var(--vwp-text); font:inherit; font-size:14px; line-height:1.4; }
.vwp-booking-widget__detail-section li { min-width:0; }
.vwp-booking-widget__composition { display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:14px 20px; align-items:end; padding:18px; border:1px solid var(--vwp-border); border-radius:var(--vwp-radius); background:var(--vwp-surface); box-shadow:inset 4px 0 0 var(--vwp-accent); color:var(--vwp-text); }
.vwp-booking-widget__composition h3 { grid-column:1 / -1; margin:0; font:inherit; font-size:17px; font-weight:700; }
.vwp-booking-widget__composition-summary { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px; margin:0; }
.vwp-booking-widget__composition-summary div { display:grid; gap:4px; }
.vwp-booking-widget__composition-summary dt { font-size:13px; font-weight:600; }
.vwp-booking-widget__composition-summary dd { margin:0; font-size:17px; font-weight:700; }
.vwp-booking-widget__continue { min-height:44px; padding:0 22px; border:1px solid var(--vwp-button); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-button); color:var(--vwp-button-text); cursor:pointer; font:inherit; font-size:16px; font-weight:700; }
.vwp-booking-widget__continue:hover:not(:disabled) { filter:brightness(.94); }
.vwp-booking-widget__continue:disabled { cursor:not-allowed; opacity:.5; }
.vwp-booking-widget__refresh, .vwp-booking-widget__modify { margin-top:10px; padding:8px 12px; border:1px solid var(--vwp-accent); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-surface); color:var(--vwp-accent); cursor:pointer; font:inherit; font-weight:700; }
.vwp-booking-widget__customer { display:grid; gap:18px; padding:20px; border:1px solid var(--vwp-border); border-radius:var(--vwp-radius); background:var(--vwp-surface); color:var(--vwp-text); box-shadow:0 8px 24px rgba(16,24,40,.08); }
.vwp-booking-widget__customer-heading { display:flex; gap:16px; align-items:center; justify-content:space-between; }
.vwp-booking-widget__customer-heading h2 { margin:0; font:inherit; font-size:22px; font-weight:700; }
.vwp-booking-widget__modify { flex:0 0 auto; margin:0; }
.vwp-booking-widget__hold-summary { display:grid; gap:8px; padding:15px; border-left:4px solid var(--vwp-accent); background:var(--vwp-surface); }
.vwp-booking-widget__hold-summary p, .vwp-booking-widget__hold-summary ul { margin:0; }
.vwp-booking-widget__hold-summary ul { padding-left:20px; }
.vwp-booking-widget__hold-total { display:flex; gap:10px; align-items:baseline; }
.vwp-booking-widget__hold-total strong { font-size:18px; }
.vwp-booking-widget__hold-note { color:var(--vwp-text); font-size:13px; opacity:.8; }
.vwp-booking-widget__stripe-note { padding:10px 12px; border-radius:calc(var(--vwp-radius) * .5); background:color-mix(in srgb, var(--vwp-accent) 8%, var(--vwp-surface)); font-size:14px; }
.vwp-booking-widget__customer-error { margin:0; padding:10px 12px; border:1px solid #d92d20; border-radius:calc(var(--vwp-radius) * .66); color:#b42318; }
.vwp-booking-widget__customer-form { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.vwp-booking-widget__customer-form label { display:grid; gap:7px; font-size:14px; font-weight:600; }
.vwp-booking-widget__customer-form input { width:100%; min-height:46px; padding:0 12px; border:1px solid var(--vwp-border); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-surface); color:var(--vwp-text); font:inherit; font-size:16px; }
.vwp-booking-widget__customer-form input:focus, .vwp-booking-widget__refresh:focus, .vwp-booking-widget__modify:focus { outline:2px solid var(--vwp-accent); outline-offset:2px; }
.vwp-booking-widget__payment-methods { grid-column:1 / -1; display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:10px; margin:0; padding:12px; border:1px solid var(--vwp-border); border-radius:calc(var(--vwp-radius) * .66); }
.vwp-booking-widget__payment-methods legend { padding:0 4px; font-size:14px; font-weight:700; }
.vwp-booking-widget__payment-method { position:relative; display:block; min-width:0; cursor:pointer; }
.vwp-booking-widget__payment-method input { position:absolute; inline-size:1px; block-size:1px; margin:-1px; opacity:0; }
.vwp-booking-widget__payment-method-content { display:grid; gap:4px; min-height:74px; padding:13px; border:1px solid var(--vwp-border); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-surface); color:var(--vwp-text); transition:border-color .15s ease, box-shadow .15s ease, background-color .15s ease; }
.vwp-booking-widget__payment-method-content strong { font-size:15px; }
.vwp-booking-widget__payment-method-content small { color:var(--vwp-text); font-size:13px; font-weight:400; line-height:1.35; opacity:.8; }
.vwp-booking-widget__payment-method input:checked + .vwp-booking-widget__payment-method-content { border-color:var(--vwp-accent); background:color-mix(in srgb, var(--vwp-accent) 8%, var(--vwp-surface)); box-shadow:0 0 0 2px color-mix(in srgb, var(--vwp-accent) 22%, transparent); }
.vwp-booking-widget__payment-method input:focus-visible + .vwp-booking-widget__payment-method-content { outline:2px solid var(--vwp-accent); outline-offset:2px; }
.vwp-booking-widget__payment-actions { grid-column:1 / -1; display:grid; gap:12px; min-height:46px; }
.vwp-booking-widget__paypal, .vwp-booking-widget__paypal-error { min-width:0; }
.vwp-booking-widget__confirm[hidden], .vwp-booking-widget__paypal[hidden] { display:none !important; }
.vwp-booking-widget__paypal paypal-button { display:block; max-width:360px; }
.vwp-booking-widget__confirm { grid-column:1 / -1; min-height:46px; padding:0 22px; border:1px solid var(--vwp-button); border-radius:calc(var(--vwp-radius) * .66); background:var(--vwp-button); color:var(--vwp-button-text); cursor:pointer; font:inherit; font-size:16px; font-weight:700; }
.vwp-booking-widget__confirm:hover:not(:disabled) { filter:brightness(.94); }
.vwp-booking-widget__confirm:disabled { cursor:wait; opacity:.65; }
.vwp-booking-widget__confirmation { display:grid; gap:16px; padding:20px; border:1px solid var(--vwp-border); border-radius:var(--vwp-radius); background:var(--vwp-surface); color:var(--vwp-text); box-shadow:0 8px 24px rgba(16,24,40,.08); }
.vwp-booking-widget__confirmation h2, .vwp-booking-widget__confirmation p { margin:0; }
.vwp-booking-widget__confirmation h2 { font:inherit; font-size:24px; font-weight:700; }
.vwp-booking-widget__confirmation-reference { color:var(--vwp-accent); font-size:18px; font-weight:700; }
.vwp-booking-widget__stripe-status > .vwp-booking-widget__refresh { justify-self:start; margin-top:0; }
.vwp-booking-widget button, .vwp-booking-widget input, .vwp-booking-widget select { font-family:var(--vwp-font); }
.vwp-booking-widget .vwp-booking-widget__action button:hover:not(:disabled), .vwp-booking-widget .vwp-booking-widget__continue:hover:not(:disabled), .vwp-booking-widget .vwp-booking-widget__confirm:hover:not(:disabled) { border-color:var(--vwp-button); background:var(--vwp-button); color:var(--vwp-button-text); filter:brightness(.94); }
.vwp-booking-widget .vwp-booking-widget__refresh:hover, .vwp-booking-widget .vwp-booking-widget__modify:hover { border-color:var(--vwp-accent); background:var(--vwp-accent); color:var(--vwp-button-text); }
.vwp-booking-widget .vwp-booking-widget__action button, .vwp-booking-widget .vwp-booking-widget__continue, .vwp-booking-widget .vwp-booking-widget__confirm { color:var(--vwp-button-text) !important; background-color:var(--vwp-button) !important; border-color:var(--vwp-button) !important; text-decoration:none !important; }
.vwp-booking-widget .vwp-booking-widget__action button:hover:not(:disabled), .vwp-booking-widget .vwp-booking-widget__action button:focus:not(:disabled), .vwp-booking-widget .vwp-booking-widget__action button:focus-visible:not(:disabled), .vwp-booking-widget .vwp-booking-widget__action button:active:not(:disabled), .vwp-booking-widget .vwp-booking-widget__continue:hover:not(:disabled), .vwp-booking-widget .vwp-booking-widget__continue:focus:not(:disabled), .vwp-booking-widget .vwp-booking-widget__continue:focus-visible:not(:disabled), .vwp-booking-widget .vwp-booking-widget__continue:active:not(:disabled), .vwp-booking-widget .vwp-booking-widget__confirm:hover:not(:disabled), .vwp-booking-widget .vwp-booking-widget__confirm:focus:not(:disabled), .vwp-booking-widget .vwp-booking-widget__confirm:focus-visible:not(:disabled), .vwp-booking-widget .vwp-booking-widget__confirm:active:not(:disabled) { color:var(--vwp-button-text) !important; background-color:var(--vwp-button) !important; border-color:var(--vwp-button) !important; text-decoration:none !important; filter:brightness(.94); }
.vwp-booking-widget .vwp-booking-widget__action button:focus, .vwp-booking-widget .vwp-booking-widget__action button:focus-visible, .vwp-booking-widget .vwp-booking-widget__continue:focus, .vwp-booking-widget .vwp-booking-widget__continue:focus-visible, .vwp-booking-widget .vwp-booking-widget__confirm:focus, .vwp-booking-widget .vwp-booking-widget__confirm:focus-visible { outline:2px solid var(--vwp-accent) !important; outline-color:var(--vwp-accent) !important; outline-offset:2px; box-shadow:0 0 0 3px color-mix(in srgb, var(--vwp-accent) 18%, transparent) !important; }
.vwp-booking-widget .vwp-booking-widget__action button:disabled, .vwp-booking-widget .vwp-booking-widget__continue:disabled, .vwp-booking-widget .vwp-booking-widget__confirm:disabled { color:var(--vwp-button-text) !important; background-color:var(--vwp-button) !important; border-color:var(--vwp-button) !important; text-decoration:none !important; }
.vwp-booking-widget .vwp-booking-widget__details, .vwp-booking-widget .vwp-booking-widget__refresh, .vwp-booking-widget .vwp-booking-widget__modify { color:var(--vwp-accent) !important; background-color:var(--vwp-surface) !important; border-color:var(--vwp-accent) !important; text-decoration:none !important; box-shadow:none !important; }
.vwp-booking-widget .vwp-booking-widget__details:hover, .vwp-booking-widget .vwp-booking-widget__details:focus:not(:disabled), .vwp-booking-widget .vwp-booking-widget__details:focus-visible:not(:disabled), .vwp-booking-widget .vwp-booking-widget__details:active:not(:disabled), .vwp-booking-widget .vwp-booking-widget__refresh:hover:not(:disabled), .vwp-booking-widget .vwp-booking-widget__refresh:focus:not(:disabled), .vwp-booking-widget .vwp-booking-widget__refresh:focus-visible:not(:disabled), .vwp-booking-widget .vwp-booking-widget__refresh:active:not(:disabled), .vwp-booking-widget .vwp-booking-widget__modify:hover:not(:disabled), .vwp-booking-widget .vwp-booking-widget__modify:focus:not(:disabled), .vwp-booking-widget .vwp-booking-widget__modify:focus-visible:not(:disabled), .vwp-booking-widget .vwp-booking-widget__modify:active:not(:disabled) { color:var(--vwp-button-text) !important; background-color:var(--vwp-accent) !important; border-color:var(--vwp-accent) !important; text-decoration:none !important; box-shadow:0 0 0 3px color-mix(in srgb, var(--vwp-accent) 18%, transparent) !important; }
.vwp-booking-widget .vwp-booking-widget__details:focus, .vwp-booking-widget .vwp-booking-widget__details:focus-visible, .vwp-booking-widget .vwp-booking-widget__refresh:focus, .vwp-booking-widget .vwp-booking-widget__refresh:focus-visible, .vwp-booking-widget .vwp-booking-widget__modify:focus, .vwp-booking-widget .vwp-booking-widget__modify:focus-visible { outline:2px solid var(--vwp-accent) !important; outline-color:var(--vwp-accent) !important; outline-offset:2px; }
.vwp-booking-widget a, .vwp-booking-widget a:visited, .vwp-booking-widget a:hover, .vwp-booking-widget a:focus, .vwp-booking-widget a:focus-visible, .vwp-booking-widget a:active { color:var(--vwp-accent) !important; text-decoration:none !important; }
.vwp-booking-widget a:focus, .vwp-booking-widget a:focus-visible { outline:2px solid var(--vwp-accent) !important; outline-color:var(--vwp-accent) !important; outline-offset:2px; box-shadow:0 0 0 3px color-mix(in srgb, var(--vwp-accent) 18%, transparent) !important; }
.vwp-booking-widget .vwp-booking-widget__field select, .vwp-booking-widget .vwp-booking-widget__result-controls select { color:var(--vwp-text) !important; background-color:var(--vwp-surface) !important; border-color:var(--vwp-border) !important; }
.vwp-booking-widget .vwp-booking-widget__field select:hover, .vwp-booking-widget .vwp-booking-widget__field select:active, .vwp-booking-widget .vwp-booking-widget__result-controls select:hover, .vwp-booking-widget .vwp-booking-widget__result-controls select:active { color:var(--vwp-text) !important; background-color:var(--vwp-surface) !important; border-color:var(--vwp-border) !important; }
.vwp-booking-widget .vwp-booking-widget__field select:focus, .vwp-booking-widget .vwp-booking-widget__field select:focus-visible, .vwp-booking-widget .vwp-booking-widget__result-controls select:focus, .vwp-booking-widget .vwp-booking-widget__result-controls select:focus-visible { color:var(--vwp-text) !important; background-color:var(--vwp-surface) !important; border-color:var(--vwp-border) !important; outline:2px solid var(--vwp-accent) !important; outline-color:var(--vwp-accent) !important; outline-offset:2px; box-shadow:0 0 0 3px color-mix(in srgb, var(--vwp-accent) 18%, transparent) !important; }
@media (max-width:900px) { .vwp-booking-widget__result-main { grid-template-columns:minmax(180px,220px) minmax(0,1fr); } .vwp-booking-widget__result-controls { grid-column:1 / -1; grid-template-columns:repeat(4,minmax(0,max-content)); align-items:end; } }
@media (max-width:700px) { .vwp-booking-widget__form { grid-template-columns:1fr 1fr; } .vwp-booking-widget__action { grid-column:1 / -1; } .vwp-booking-widget__action button { width:100%; } }
@media (max-width:540px) { .vwp-booking-widget__result-main { grid-template-columns:1fr; } .vwp-booking-widget__result-media { max-width:none; } .vwp-booking-widget__result-controls { grid-column:auto; grid-template-columns:1fr; } .vwp-booking-widget__result-detail { grid-template-columns:1fr; } .vwp-booking-widget__detail-gallery { grid-template-columns:1fr; } .vwp-booking-widget__composition { grid-template-columns:1fr; } .vwp-booking-widget__composition-summary { grid-template-columns:1fr 1fr; } .vwp-booking-widget__continue { width:100%; } .vwp-booking-widget__customer-heading { align-items:flex-start; flex-direction:column; } .vwp-booking-widget__customer-form { grid-template-columns:1fr; } }
@media (max-width:420px) { .vwp-booking-widget__form { grid-template-columns:1fr; } }
