/* Shared type, touch and layout refinements for the home and service pages. */
:root { --paper:#f4f1ec; --ink:#171817; --muted:#595a57; --line:#d7d3cc; }
html { scroll-padding-top:108px; }
body { font-size:16px; line-height:1.6; }
[hidden] { display:none!important; }
img { max-width:100%; }
button, input, select, textarea { font:inherit; }
button, a, input, select, textarea { -webkit-tap-highlight-color:transparent; }
button:focus-visible, a:focus-visible { outline:2px solid #646461; outline-offset:4px; }
input:focus-visible, select:focus-visible, textarea:focus-visible { outline:2px solid #646461!important; outline-offset:2px; }
button:disabled { cursor:wait; opacity:.65; }
.button, .button-small, .text-arrow { min-height:48px; font-size:13px; line-height:1.4; padding:12px 20px; gap:14px; }
.button span, .button span:last-child { font-size:inherit; }
.button span[aria-hidden], .button>span:last-child:not(:first-child) { flex-shrink:0; }
.button>span:only-child { font-size:inherit; }
.button-dark { background:#171817; }
.button-dark:hover { background:#3f403e; }
.button-outline { color:#171817; border-color:#777772; background:transparent; }
.button-outline:hover { background:#1718170a; }
.eyebrow { font-size:12px; color:#595a57; letter-spacing:.14em; }
.site-header { position:sticky; height:88px; padding-inline:5%; background:#f7f5f0f5; }
.site-header.is-scrolled { position:sticky; }
.brand-name { font-size:40px; }
.brand-caption { font-size:10px; letter-spacing:.12em; line-height:1.6; }
.main-nav { gap:24px; margin-right:30px; }
.main-nav a { font-size:14px; min-height:44px; display:flex; align-items:center; }
.header-actions { gap:12px; }
.language-toggle { min-width:44px; min-height:44px; font-size:13px; }
.language-menu { top:76px; right:5%; z-index:30; min-width:180px; }
.language-menu button { min-height:44px; font-size:14px; }
.hero { height:660px; min-height:580px; max-height:none; background:#eae6df; }
.hero-photo { object-position:center 54%; transform:none; animation:none; }
.hero-overlay { background:linear-gradient(90deg,rgba(247,245,239,.94) 0%,rgba(247,245,239,.78) 38%,rgba(247,245,239,.08) 72%,rgba(0,0,0,.25) 100%),linear-gradient(0deg,rgba(0,0,0,.16),transparent 36%); }
.hero-content { margin:0 6.3%; max-width:710px; padding:60px 0; color:var(--ink); }
.hero .eyebrow { color:#595a57; margin-bottom:24px; }
.hero h1 { font-size:clamp(52px,5.2vw,78px); line-height:1.08; letter-spacing:-.04em; text-wrap:balance; margin-bottom:24px; }
.hero-description { max-width:500px; color:#454642; font-size:18px; line-height:1.6; margin-bottom:32px; }
.hero-actions { flex-wrap:wrap; gap:14px; }
.hero .button-light { background:#171817; color:#fff; }
.page-pad { padding-inline:6.3%; }
.services-section, .properties-section { padding-block:80px; }
.section-topline { margin-bottom:32px; }
.section-topline h2 { font-size:clamp(34px,3.3vw,48px); line-height:1.15; letter-spacing:-.03em; }
.service-card { min-height:240px; padding:28px; }
.service-card>span:first-child { font-size:13px; color:#626b65; }
.service-card h3 { font-size:27px; line-height:1.15; margin:26px 0 14px; overflow-wrap:anywhere; hyphens:auto; }
.service-card p { font-size:16px; line-height:1.6; color:var(--muted); padding-right:15px; }
.service-card .service-card-arrow { font-size:26px; right:20px; bottom:18px; color:#555651; }
.owner-cta-section { background:#eae6df; padding-block:42px; }
.owner-cta-copy h2 { font-size:clamp(30px,3vw,42px); line-height:1.15; }
.owner-cta-copy p:last-child { font-size:16px; color:var(--muted); max-width:560px; }
.owner-cta-section>.button { white-space:normal; text-align:center; }
.property-actions { flex-wrap:wrap; justify-content:flex-end; gap:12px 24px; }
.filter-button { min-height:44px; font-size:12px; padding:9px 14px; }
.text-arrow { padding:8px 0; font-size:13px; }
.property-grid { gap:18px; }
.property-image { height:200px; }
.property-meta { font-size:12px; padding:16px 16px 7px; color:#565d56; }
.property-meta span { display:none; }
.property-name { font-size:25px; padding:0 16px 8px; line-height:1.2; }
.property-specs { font-size:13px; color:#535b54; padding:0 16px 20px; line-height:1.65; }
.property-specs i { margin:0 3px; }
.concept-note { font-size:13px; line-height:1.6; color:#5d655e; margin-top:20px; }
.story-banner { min-height:360px; height:auto; padding:64px 6.3%; }
.story-banner>img { filter:grayscale(.65); }
.story-shade { background:linear-gradient(90deg,#171917ce 0%,#171917a8 44%,#17191742 100%); }
.story-copy { max-width:650px; }
.story-copy h2 { font-size:clamp(34px,3.5vw,48px); line-height:1.15; }
.story-copy>p:not(.eyebrow) { font-size:17px; line-height:1.65; max-width:580px; margin-bottom:24px; }
.site-footer { padding:48px 6.3% 26px; }
.footer-main { grid-template-columns:1.3fr .8fr 1.1fr 1.4fr; gap:28px; padding-bottom:34px; }
.footer-action { grid-column:4; grid-row:2; }
.footer-contact { grid-column:4; grid-row:1; }
.footer-brand .brand-caption { font-size:9px; }
.footer-column { font-size:13px; line-height:1.6; gap:6px; color:#454e48; }
.footer-column h3 { font-size:15px; margin-bottom:10px; }
.footer-column a { min-height:36px; display:flex; align-items:center; overflow-wrap:anywhere; }
.footer-contact a { text-transform:none; letter-spacing:0; font-size:15px; }
.footer-action .button { justify-content:center; font-size:13px; padding:12px 20px; }
.footer-bottom { font-size:12px; line-height:1.6; gap:20px; flex-wrap:wrap; }
.footer-bottom>div { flex-wrap:wrap; gap:18px; }
.footer-bottom a { display:inline-flex; min-height:44px; align-items:center; }
.footer-language { min-height:44px; font-size:13px; }
.site-dialog { max-height:calc(100dvh - 32px); overflow:auto; overscroll-behavior:contain; }
.site-dialog[open].owner-request-dialog { display:block; width:min(720px,calc(100vw - 32px)); }
.dialog-close { width:44px; height:44px; font-size:28px; right:10px; top:10px; }
.dialog-copy, .contact-dialog .dialog-copy, .owner-request-dialog .dialog-copy { padding:54px 36px 36px; }
.dialog-copy h2, .owner-request-dialog .dialog-copy h2, .story-dialog-copy h2 { font-size:36px; line-height:1.15; }
.dialog-description, .dialog-copy>p:not(.eyebrow), .story-dialog-copy p:not(.eyebrow), .dialog-specs { font-size:16px; line-height:1.65; color:var(--muted); }
.story-dialog>img { filter:grayscale(.25); height:270px; }
.story-dialog-copy { padding:30px 36px; }
.contact-dialog { width:720px; }
.contact-details { grid-template-columns:1fr 1.5fr; gap:16px; padding:18px; }
.contact-details>span { grid-column:1/-1; }
.contact-details small { font-size:12px; color:#525b54; }
.contact-details strong { font-size:15px; }
.contact-dialog form, .owner-request-form, .quote-card form, .cleaning-booking-form { gap:18px; }
.contact-dialog label, .owner-request-form>label, .quote-card label, .cleaning-booking-form label, .owner-services legend { font-size:14px; line-height:1.5; color:#3e4842; gap:8px; }
.contact-dialog input, .contact-dialog select, .contact-dialog textarea,
.owner-request-form input:not([type=checkbox]), .owner-request-form select, .owner-request-form textarea,
.quote-card input:not([type=checkbox]), .quote-card select, .quote-card textarea,
.cleaning-booking-form input, .cleaning-booking-form select { min-height:48px; font-size:16px; line-height:1.4; padding:12px; min-width:0; max-width:100%; border-color:#b8beb5; border-radius:3px; }
form label, form fieldset, form>div { min-width:0; }
form textarea { resize:vertical; }
.owner-service { font-size:14px; min-height:44px; align-items:flex-start; padding-block:10px; }
.owner-service input, .consent input { width:20px; height:20px; flex-shrink:0; }
.owner-services { padding:12px 16px; }
.form-note, .owner-request-error, .quote-status, .cleaning-booking-feedback, .file-names, .upload-label small { font-size:14px; line-height:1.6; }
.form-note:empty, .cleaning-booking-feedback:empty, .quote-status:empty { display:none; }
.dialog-open { overflow:hidden; }
.whatsapp-float, .assistant-toggle { min-height:46px; font-size:13px; padding:10px 15px; }
.whatsapp-float { bottom:calc(16px + env(safe-area-inset-bottom)); background:#242523; border-color:#62635e; }
.assistant-toggle { bottom:calc(72px + env(safe-area-inset-bottom)); border-color:#adb6ab; }
.assistant-toggle-icon { display:flex; color:#555651; }
.assistant-panel { bottom:calc(130px + env(safe-area-inset-bottom)); max-height:calc(var(--visible-height,100dvh) - 150px); min-height:0; height:480px; width:min(390px,calc(100vw - 32px)); }
.assistant-header strong { font-size:16px; }
.assistant-header small { font-size:12px; }
.assistant-close { min-height:44px; min-width:44px; }
.assistant-message { font-size:15px; line-height:1.6; }
.assistant-suggestions button { font-size:12px; min-height:44px; padding:8px 12px; }
.assistant-form input { font-size:16px; }
.assistant-form button { width:44px; height:44px; flex-basis:44px; }
.assistant-open .assistant-toggle { visibility:hidden; }
.service-header { position:sticky; }
.service-back { font-size:13px; min-height:44px; display:flex; align-items:center; }
.service-header .language-menu { right:0; top:54px; }
.service-hero { grid-template-columns:1.05fr 1fr; min-height:410px; }
.service-hero-copy { padding:64px 8% 64px 12%; }
.service-hero h1 { font-size:clamp(44px,4.5vw,64px); line-height:1.1; overflow-wrap:anywhere; }
.service-lead { font-size:18px; color:#50514c; line-height:1.65; }
.response-promise { font-size:14px; color:#555651; align-items:baseline; }
.response-dot { flex-shrink:0; background:#777772; box-shadow:0 0 0 4px #77777220; }
.service-hero-image { min-height:410px; background-image:linear-gradient(90deg,#eae7e00a,#17181705),url('https://images.unsplash.com/photo-1600585154340-be6161a56a0c?auto=format&fit=crop&w=1100&q=80'); }
.service-details { grid-template-columns:minmax(0,.85fr) minmax(0,1fr); gap:6%; padding-block:72px; }
.service-details-copy h2 { font-size:38px; line-height:1.2; }
.service-details-copy>p:not(.eyebrow), .service-details-copy li { font-size:16px; line-height:1.65; color:#454f47; }
.quote-card { padding:32px; box-shadow:none; }
.quote-card h2 { font-size:34px; line-height:1.15; margin-bottom:28px; }
.quote-contact { font-size:14px; line-height:1.7; gap:10px 18px; }
.quote-contact a { overflow-wrap:anywhere; min-height:44px; display:inline-flex; align-items:center; }
.quote-card input[type=file] { font-size:14px; padding:10px; }
.quote-card input[type=file]::file-selector-button { min-height:40px; margin-right:10px; }
.cleaning-options { gap:18px; }
.cleaning-booking { grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:6%; padding-block:70px; }
.cleaning-booking-intro h2 { font-size:40px; line-height:1.15; }
.cleaning-booking-intro>p:not(.eyebrow), .cleaning-booking-intro .cleaning-booking-note { font-size:16px; color:#4d574e; line-height:1.65; }
.cleaning-booking-form { padding:28px; }
.cleaning-choice { padding:10px 0 0; border:0; background:none; justify-content:flex-start; flex-wrap:wrap; gap:12px; }
.cleaning-choice-link { min-width:0; min-height:48px; padding:12px 16px; text-align:center; justify-content:center; flex:1 1 175px; font-size:13px; line-height:1.4; }
.cleaning-choice-link>span:last-child { font-size:13px; }
#quote, #hourlyCleaningBooking { scroll-margin-top:108px; }
.service-footer { font-size:14px; padding-block:32px; line-height:1.65; flex-wrap:wrap; }
.service-footer>a:not(.brand) { min-height:44px; display:flex; align-items:center; overflow-wrap:anywhere; }
@media(min-width:1500px) { .hero { height:740px; } }
@media(max-width:1180px) {
  .site-header { padding-inline:4%; height:80px; }
  .site-header:not(.service-header) .header-actions .button { display:none; }
  .main-nav { gap:18px; margin-right:20px; }
  .brand-caption { font-size:9px; }
  .property-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
  .property-image { height:250px; }
  .property-heading { flex-wrap:wrap; gap:24px; }
  .footer-main { grid-template-columns:1fr 1fr 1fr; }
  .footer-brand { grid-column:1/-1; }
  .footer-contact { grid-column:3; grid-row:2; }
  .footer-action { grid-column:3; grid-row:3; }
}
@media(max-width:980px) {
  .brand-caption { font-size:9px; }
  .menu-toggle { width:44px; height:44px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; border:0; background:none; margin-left:auto; margin-right:12px; cursor:pointer; }
  .menu-toggle span { width:22px; height:1px; background:#232a29; display:block; }
  .menu-toggle[aria-expanded=true] span:first-child { transform:translateY(3.5px) rotate(45deg); }
  .menu-toggle[aria-expanded=true] span:last-child { transform:translateY(-3.5px) rotate(-45deg); }
  .main-nav { display:none; position:absolute; top:80px; left:0; right:0; margin:0; padding:12px 5% 24px; background:#f7f5f0; flex-direction:column; align-items:stretch; gap:0; box-shadow:0 18px 24px #0001; max-height:calc(100dvh - 80px); overflow:auto; }
  .main-nav.open { display:flex; }
  .main-nav a { font-size:15px; padding:15px 0; border-bottom:1px solid var(--line); }
  .service-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .service-details { grid-template-columns:1fr; gap:36px; }
  .service-details-copy { max-width:none; }
  .service-details-copy ul { display:grid; grid-template-columns:1fr 1fr; column-gap:28px; }
  .service-header .button { display:none; }
  .service-hero-copy { padding:44px 8%; }
  .cleaning-booking { grid-template-columns:1fr; gap:24px; }
  .cleaning-booking-intro { max-width:640px; }
}
@media(max-width:760px) {
  html { scroll-padding-top:92px; }
  .site-header, .service-header { height:72px; padding-inline:20px; }
  .brand-name { font-size:35px; }
  .brand-caption { font-size:10px; letter-spacing:.06em; }
  .main-nav { top:72px; max-height:calc(100dvh - 72px); }
  .language-menu { top:66px; right:16px; }
  .hero { height:auto; min-height:0; max-height:none; display:flex; flex-direction:column; align-items:stretch; background:var(--paper); }
  .hero-photo { position:static; height:260px; object-position:center 54%; }
  .hero-overlay { display:none; }
  .hero-content { margin:0; padding:32px 24px 40px; width:100%; max-width:none; color:var(--ink); }
  .hero h1 { font-size:clamp(40px,8.6vw,58px); letter-spacing:-.035em; line-height:1.12; margin-bottom:20px; text-wrap:balance; }
  .hero .eyebrow { font-size:12px; margin-bottom:18px; color:#595a57; }
  .hero-description { font-size:17px; line-height:1.6; margin-bottom:26px; color:#454642; }
  .hero .button-light { background:#171817; color:white; }
  .hero .button-outline { border-color:#777772; color:#171817; background:transparent; }
  .hero-actions { gap:12px; }
  .hero-actions .button { flex:1 1 auto; padding:14px; font-size:12px; }
  .page-pad { padding-inline:24px; }
  .services-section, .properties-section { padding-block:52px; }
  .section-topline h2 { font-size:35px; line-height:1.15; }
  .service-card { padding:22px; min-height:230px; }
  .service-card h3 { font-size:25px; }
  .service-card p { font-size:15px; }
  .owner-cta-section { padding-block:36px; gap:24px; }
  .owner-cta-copy h2 { font-size:32px; }
  .owner-cta-section>.button { width:100%; }
  .property-actions { justify-content:flex-start; gap:12px; }
  .property-grid { gap:18px; }
  .property-image { height:210px; }
  .property-name { font-size:25px; }
  .property-specs { font-size:13px; }
  .story-banner { min-height:340px; padding:48px 24px; }
  .story-copy h2 { font-size:35px; }
  .story-copy>p:not(.eyebrow) { font-size:16px; }
  .site-footer { padding:40px 24px 148px; }
  .footer-main { grid-template-columns:1fr 1fr; gap:28px 24px; }
  .footer-brand { grid-column:1/-1; }
  .footer-contact { grid-column:1/-1; grid-row:auto; }
  .footer-action { grid-column:1/-1; grid-row:auto; }
  .footer-column { font-size:13px; }
  .footer-column a { min-height:44px; }
  .footer-bottom { display:block; font-size:12px; }
  .footer-bottom>div { margin-top:12px; gap:16px; }
  .site-dialog, .contact-dialog, .story-dialog, .site-dialog[open].owner-request-dialog { width:calc(100vw - 24px); max-width:560px; max-height:calc(100dvh - 24px); margin:auto; border-radius:8px; }
  .site-dialog[open]:not(.contact-dialog):not(.story-dialog):not(.owner-request-dialog) { display:block; }
  .dialog-copy, .contact-dialog .dialog-copy, .owner-request-dialog .dialog-copy { padding:56px 22px 28px; }
  .dialog-copy h2, .owner-request-dialog .dialog-copy h2, .story-dialog-copy h2 { font-size:31px; line-height:1.15; }
  .dialog-image { width:100%; height:210px; min-height:0; }
  .dialog-copy .button, .contact-dialog form>.button, .owner-request-form>.button { width:100%; }
  .contact-dialog form, .owner-request-form { grid-template-columns:1fr; }
  .contact-details { grid-template-columns:1fr; padding:16px; }
  .contact-details>span { grid-column:auto; }
  .contact-details a { min-height:44px; }
  .owner-services { grid-template-columns:1fr; gap:0; }
  .owner-service { font-size:15px; }
  .story-dialog>img { height:200px; }
  .story-dialog-copy { padding:26px 22px; }
  .whatsapp-float, .assistant-toggle { right:14px; font-size:12px; min-height:44px; padding:9px 12px; }
  .assistant-panel { right:12px; bottom:calc(var(--keyboard-inset,0px) + 12px + env(safe-area-inset-bottom)); width:calc(100vw - 24px); height:520px; max-height:calc(var(--visible-height,100dvh) - 32px); z-index:25; }
  .assistant-open .whatsapp-float { visibility:hidden; }
  .service-hero { grid-template-columns:1fr; }
  .service-hero-copy { padding:40px 24px 32px; }
  .service-hero h1 { font-size:clamp(36px,9vw,50px); letter-spacing:-.03em; overflow-wrap:normal; hyphens:auto; }
  .service-lead { font-size:17px; }
  .service-hero-image { min-height:220px; height:220px; max-height:220px; }
  .response-promise { margin-top:20px; font-size:14px; }
  .cleaning-choice { flex-direction:row; padding-top:14px; }
  .cleaning-choice-link { flex:1 1 150px; width:auto; }
  .service-back { display:flex; margin-left:auto; margin-right:10px; font-size:12px; }
  .service-header .brand-caption { display:none; }
  .service-details { padding-block:44px; }
  .service-details-copy ul { display:block; margin-top:20px; }
  .service-details-copy h2, .quote-card h2 { font-size:32px; }
  .quote-card { padding:28px 20px; }
  .quote-card form, .cleaning-options { grid-template-columns:1fr; }
  .quote-wide { grid-column:1/-1; }
  .quote-contact { flex-direction:column; gap:8px; }
  .cleaning-booking { padding-block:44px; }
  .cleaning-booking-intro h2 { font-size:34px; }
  .cleaning-booking-form { padding:24px 20px; grid-template-columns:1fr; }
  #quote, #hourlyCleaningBooking { scroll-margin-top:92px; }
  .service-footer { padding:32px 24px; font-size:14px; }
}
@media(max-width:520px) {
  .service-grid { grid-template-columns:1fr; }
  .service-card { min-height:0; padding:22px 24px 26px; }
  .service-card h3 { margin-top:12px; font-size:26px; }
  .service-card p { padding-right:18px; font-size:16px; }
  .property-grid { grid-template-columns:1fr; gap:24px; }
  .property-image { height:auto; aspect-ratio:4 / 3; }
  .property-specs { font-size:14px; }
  .hero-actions { display:grid; grid-template-columns:1fr; }
  .hero-actions .button { width:100%; font-size:13px; }
}
@media(max-width:390px) {
  .site-header { padding-inline:16px; }
  .site-header .brand-caption { display:none; }
  .hero-content, .page-pad { padding-left:20px; padding-right:20px; }
  .hero h1 { font-size:39px; }
  .footer-main { grid-template-columns:1fr; }
  .footer-contact, .footer-action { grid-column:auto; }
  .service-back { font-size:12px; letter-spacing:.02em; }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation:none!important; transition:none!important; }
}
