.site-contact-button { display:none; text-decoration:none; }
.site-contact-button:not([hidden]) {
  position:fixed; z-index:40; right:24px;
  bottom:calc(24px + env(safe-area-inset-bottom,0px));
  display:inline-flex; align-items:center; justify-content:center;
  min-height:48px; padding:.9rem 1.3rem;
  color:#fff; background:#254040; border:1px solid #254040;
  font:500 1rem/1.2 var(--sans,Arial,sans-serif);
  box-shadow:0 5px 20px rgba(0,0,0,.15);
}
.site-contact-button:focus-visible { outline:2px solid #c9a227; outline-offset:4px; }
body.menu-open .site-contact-button { display:none; }
@media (max-width:780px) {
  body { padding-bottom:calc(80px + env(safe-area-inset-bottom,0px)); }
  .site-contact-button:not([hidden]) {
    right:16px;
    bottom:calc(16px + env(safe-area-inset-bottom,0px));
    padding:.8rem 1.1rem;
    font-size:.95rem;
  }
  #contact-page-form { scroll-margin-top:100px; }
}

body.contact-modal-open { overflow:hidden; }
.quick-contact-dialog, .booking-dialog {
 position:fixed; inset:0;
 box-sizing:border-box; width:min(720px,calc(100% - 32px));
 max-height:calc(100vh - 32px); max-height:calc(100dvh - 32px);
 margin:auto; padding:2.4rem; overflow-y:auto; overscroll-behavior:contain;
 border:1px solid var(--gold); background:#fff; color:var(--ink); font:400 1rem/1.6 var(--sans);
}
.quick-contact-dialog { width:min(480px,calc(100% - 32px)); isolation:isolate; }
/* Crop the existing logo to its tree symbol using a decorative background. */
.quick-contact-dialog::before {
 content:""; position:absolute; right:1rem; top:30%;
 width:55%; max-width:240px; aspect-ratio:4/5;
 background:url("/assets/ekonomivision-logo.png") center 9% / 500% auto no-repeat;
 opacity:.065; pointer-events:none; z-index:-1;
}
.quick-contact-dialog::backdrop, .booking-dialog::backdrop { background:rgba(19,27,25,.65); }
.contact-modal-close { display:block; margin:0 0 .5rem auto; width:44px; height:44px; border:0; background:transparent; color:var(--olive); font:32px/1 var(--sans); cursor:pointer; }
.quick-contact-dialog h2, .booking-dialog h2 { margin:0 0 1rem; font:500 clamp(2rem,5vw,3rem)/1.1 var(--serif); }
.quick-contact-header { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1.4rem; }
.quick-contact-header h2 { flex:1 1 auto; min-width:0; margin:0; font:500 clamp(1.6rem,4.5vw,1.9rem)/1.08 var(--serif); letter-spacing:.006em; }
.quick-contact-header .contact-modal-close { flex:0 0 44px; margin:0; padding:0; }
.booking-intro { margin:0 0 1.5rem; color:var(--muted); }
.quick-contact-options { display:grid; gap:.75rem; }
.quick-contact-options :is(a, button) { display:block; box-sizing:border-box; width:100%; padding:.85rem 1rem; border:1px solid var(--gold); border-radius:0; background:transparent; color:var(--olive); text-align:left; text-decoration:none; font:500 1rem/1.6 var(--sans); cursor:pointer; touch-action:manipulation; }
.quick-contact-options :is(a, button) span { display:block; font-size:.875rem; font-weight:400; overflow-wrap:anywhere; }
.quick-contact-options :is(a, button):hover { background:var(--ivory); }
.quick-booking-link { margin-top:1.5rem; padding:.5rem 0; min-height:44px; border:0; background:none; color:var(--olive); font:inherit; text-decoration:underline; text-decoration-color:var(--gold); text-underline-offset:5px; cursor:pointer; }
.booking-dialog .contact-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; padding:0; margin:0; border:0; background:#fff; }
.booking-dialog .field { min-width:0; }
.booking-dialog .field label { display:block; margin-bottom:.4rem; font:500 .875rem/1.5 var(--sans); }
.booking-dialog input:not([type=checkbox]), .booking-dialog select, .booking-dialog textarea { box-sizing:border-box; width:100%; min-height:48px; padding:.7rem; border:1px solid var(--line); border-radius:0; background:#fff; color:var(--ink); font:400 1rem/1.5 var(--sans); }
.booking-dialog textarea { min-height:100px; resize:vertical; }
.booking-dialog .field-full, .booking-dialog .consent, .booking-dialog .form-footer, .booking-dialog .form-note { grid-column:1/-1; }
.booking-dialog .consent { display:flex; align-items:flex-start; gap:.65rem; font-size:.875rem; }
.booking-dialog .consent input[type="checkbox"] {
 flex:0 0 18px; width:18px; min-width:18px; max-width:18px;
 height:18px; min-height:18px; margin:.2rem 0 0; padding:0;
 appearance:auto; accent-color:var(--olive);
}
.booking-dialog .consent > span { flex:1 1 0; min-width:0; overflow-wrap:anywhere; }
.booking-dialog .form-footer { display:flex; flex-wrap:wrap; gap:1rem; align-items:center; }
.booking-dialog .form-footer .btn { padding:1rem; min-height:48px; color:var(--ink); background:#c9a227; border:1px solid #c9a227; font:500 .875rem/1.4 var(--sans); cursor:pointer; }
.booking-dialog .form-note, .booking-dialog .status { margin:0; font-size:.875rem; }
.booking-dialog .status:empty { display:none; }
@media(max-width:600px) {
 .quick-contact-dialog, .booking-dialog { padding:1.25rem; }
 .booking-dialog .contact-form { grid-template-columns:1fr; }
 .booking-dialog .form-footer .btn { width:100%; }
}

.quick-contact-options :is(a, button):focus-visible { outline:2px solid var(--olive); outline-offset:3px; }
