{"id":1180,"date":"2026-08-07T09:42:57","date_gmt":"2026-08-07T09:42:57","guid":{"rendered":"https:\/\/www.luxflat-direct.com\/aide\/"},"modified":"2026-09-24T18:53:53","modified_gmt":"2026-09-24T18:53:53","slug":"aide","status":"publish","type":"page","link":"https:\/\/www.luxflat-direct.com\/fr\/aide\/","title":{"rendered":"Aide"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1180\" class=\"elementor elementor-1180 elementor-bc-flex-widget\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3e5aea8 e-con-full e-flex e-con e-parent\" data-id=\"3e5aea8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e2a43fd elementor-widget elementor-widget-html\" data-id=\"e2a43fd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- LuxFlat Direct shared assets \u2014 loaded once per page. Do not duplicate per section. -->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:wght@600;700&display=swap');\n\/* ==========================================================================\n   LuxFlat Direct \u2014 shared page styles\n   Loaded ONCE per page. Every rule is scoped under .lfd so nothing here can\n   leak into the Elementor theme, header or footer.\n   ========================================================================== *\/\n\n.lfd {\n  --lfd-navy: #14203A;\n  --lfd-bronze: #A9822E;\n  --lfd-forest: #334A2E;\n  --lfd-cream: #F5F3EE;\n  --lfd-muted: #6B6B60;\n  --lfd-border: #E8E4DC;\n  --lfd-danger: #B03A2E;\n  --lfd-forest-bg: #E8F0E8;\n  --lfd-danger-bg: #F7E9E6;\n  --lfd-bronze-bg: #F3EBD8;\n\n  \/* Fraunces + Inter are enqueued site-wide by the theme. Playfair Display is NOT \u2014\n     it is loaded by the @font-face import at the top of this stylesheet (2026-09-11).\n     TWO serif roles, matching the design system's own two tokens:\n       --lfd-serif          = Fraunces      -> `--font-fraunces`     : H1 only, plus the\n                                               two numeric accents (stat numbers, the\n                                               numbered circles), which the design also\n                                               sets in Fraunces.\n       --lfd-serif-display  = Playfair      -> `--font-serif-display`: every h2 and h3 and\n                                               all the card\/section display titles.\n     The one deliberate crossover: the Help Centre hero H1 is Playfair, because its design\n     source sets it that way (desktop AND mobile). *\/\n  --lfd-serif: 'Fraunces', Georgia, 'Times New Roman', serif;\n  --lfd-serif-display: 'Playfair Display', Georgia, 'Times New Roman', serif;\n  --lfd-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n\n  --lfd-maxw: 1200px;\n  --lfd-pad: 40px;\n\n  font-family: var(--lfd-sans);\n  color: var(--lfd-navy);\n  -webkit-font-smoothing: antialiased;\n}\n\n\/* Elementor injects its own margins on widget wrappers; neutralise inside .lfd *\/\n.lfd *, .lfd *::before, .lfd *::after { box-sizing: border-box; }\n\/* Any explicit display: rule below would otherwise beat the UA [hidden] style. *\/\n.lfd [hidden], .lfd[hidden] { display: none !important; }\n\/* Element resets are wrapped in :where(): `.lfd p` (0-1-1) out-specified every .lfd-* rule below (0-1-0), so\n   .lfd-h2 \/ .lfd-lede \/ .lfd-stat__l \/ .lfd-hoods__label margins and\n   .lfd-btn--primary's colour were all silently dropped. :where() contributes zero\n   specificity, so these resets sit at (0-1-0) and lose to the later component rules. *\/\n.lfd :where(p, h1, h2, h3, h4, ul, ol) { margin: 0; }\n.lfd :where(ul, ol) { padding: 0; list-style: none; }\n.lfd :where(img) { max-width: 100%; display: block; }\n.lfd :where(a) { text-decoration: none; color: inherit; }\n\n\/* ---------- layout ---------- *\/\n.lfd-band { width: 100%; overflow-x: clip; }\n.lfd-band--white  { background: #fff; }\n.lfd-band--cream  { background: var(--lfd-cream); }\n.lfd-band--navy   { background: var(--lfd-navy); }\n.lfd-wrap { max-width: var(--lfd-maxw); margin: 0 auto; padding: 0 var(--lfd-pad); }\n.lfd-wrap--narrow { max-width: 760px; }\n\n.lfd-pad-lg { padding-top: 104px; padding-bottom: 104px; }\n.lfd-pad-md { padding-top: 80px;  padding-bottom: 80px; }\n.lfd-pad-sm { padding-top: 56px;  padding-bottom: 56px; }\n\n\/* ---------- type ---------- *\/\n.lfd-eyebrow {\n  font: 500 11px\/1 var(--lfd-sans);\n  letter-spacing: .14em; text-transform: uppercase;\n  color: var(--lfd-bronze);\n}\n.lfd-h1 { font: 600 42px\/1.15 var(--lfd-serif); color: #fff; }\n.lfd-h2 { font: 600 36px\/1.2 var(--lfd-serif-display); color: var(--lfd-navy); margin-top: 8px; }\n.lfd-h3 { font: 600 20px\/1.3 var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-lede { font: 400 15px\/1.6 var(--lfd-sans); color: rgba(255,255,255,.68); margin-top: 14px; max-width: 560px; }\n.lfd-body { font: 400 14px\/1.6 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-crumb { font: 400 13px\/1 var(--lfd-sans); color: rgba(255,255,255,.5); margin-bottom: 16px; }\n.lfd-crumb strong { color: rgba(255,255,255,.8); font-weight: 400; }\n\n\/* ---------- buttons ---------- *\/\n.lfd-btn {\n  display: inline-block; border: none; cursor: pointer;\n  border-radius: 8px; padding: 14px 28px;\n  font: 500 15px\/1 var(--lfd-sans); text-align: center;\n  transition: background 150ms ease-out, opacity 150ms ease-out;\n}\n.lfd-btn--primary { background: var(--lfd-bronze); color: #fff; box-shadow: 0 4px 16px rgba(169,130,46,.35); }\n.lfd-btn--primary:hover { background: #96742a; color: #fff; }\n.lfd-btn--ghost { background: transparent; color: #fff; border: 1px solid #fff; padding: 10px 18px; font-size: 13px; }\n.lfd-btn--ghost:hover { background: rgba(255,255,255,.12); color: #fff; }\n.lfd-btn--sm { padding: 10px 18px; font-size: 13px; }\n\n\/* ---------- hero ---------- *\/\n.lfd-hero { position: relative; display: flex; align-items: center; min-height: 680px; overflow: hidden; }\n\/* `.lfd`-prefixed (0-2-0) so `height:100%` beats Elementor's `.elementor img { height: auto }`\n   (0-1-1) in frontend.min.css. Unprefixed (0-1-0) it lost, and because an <img> is a replaced\n   element `height:auto` resolves to the intrinsic height rather than stretching to inset:0 \u2014\n   the image rendered 1295px tall in a 640px hero, top-anchored, so `object-fit: cover` never\n   centred it and the design's centre crop showed as a zoomed-in top slice. *\/\n.lfd .lfd-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.lfd-hero__scrim { position: absolute; inset: 0;\n  background: linear-gradient(90deg, rgba(20,32,58,.75) 0%, rgba(20,32,58,.30) 100%); }\n.lfd-hero__inner { position: relative; width: 100%; }\n.lfd-hero__copy { max-width: 580px; }\n\/* how-it-works hero \u2014 a shorter photo band than for-landlords' full-height `.lfd-hero`.\n   The design gives it `padding:56px 0 96px` and no min-height, so the toggle pill below\n   can pull up into it with `margin-top:-32px`. Renamed from the old \"flat\" modifier,\n   which was a plain navy block until the 2026-08-30 design update put a photo behind it. *\/\n.lfd-hero--band { position: relative; overflow: hidden; display: block; min-height: 0;\n  background: var(--lfd-navy); padding: 56px 0 96px; }\n\/* The design's scrim here is 3-stop and lighter than the 2-stop `.lfd-hero__scrim`\n   for-landlords uses, so it is scoped to this band rather than changing the shared rule. *\/\n.lfd-hero--band .lfd-hero__scrim { background: linear-gradient(90deg,\n  rgba(20,32,58,.90) 0%, rgba(20,32,58,.62) 55%, rgba(20,32,58,.35) 100%); }\n\/* design: 40px, where the shared `.lfd-h1` is 42px. *\/\n.lfd-hero--band .lfd-h1 { font-size: 40px; }\n\n\/* ---------- hero spanning two Elementor widgets (for-tenants) ----------\n   for-tenants' hero holds the live         <div class=\"p2p-home-search-wrap\" data-p2p-home-search>\n            <button\n                class=\"p2p-home-search-trigger\"\n                type=\"button\"\n                aria-expanded=\"false\"\n                aria-controls=\"p2p-home-search-modal-1\"\n            >\n                <span class=\"p2p-home-search-trigger__copy\">\n                    <span class=\"p2p-home-search-trigger__primary\" data-p2p-search-summary-location>Anywhere<\/span>\n                    <span class=\"p2p-home-search-trigger__secondary\">\n                        <span data-p2p-search-summary-date>Move in<\/span>\n                        <span aria-hidden=\"true\"> \u00b7 <\/span>\n                        <span data-p2p-search-summary-duration>3 months<\/span>\n                        <span aria-hidden=\"true\"> \u00b7 <\/span>\n                        <span data-p2p-search-summary-budget>Any budget<\/span>\n                    <\/span>\n                <\/span>\n                <span class=\"p2p-home-search-trigger__go\" aria-hidden=\"true\">\n                    <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" focusable=\"false\">\n                        <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"2\"><\/circle>\n                        <path d=\"M20 20L16.2 16.2\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><\/path>\n                    <\/svg>\n                <\/span>\n            <\/button>\n\n            <div\n                id=\"p2p-home-search-modal-1\"\n                class=\"p2p-home-search-modal\"\n                data-p2p-search-modal\n            >\n                <button class=\"p2p-home-search-modal__backdrop\" type=\"button\" tabindex=\"-1\" aria-label=\"Close search\" data-p2p-search-close><\/button>\n                <div class=\"p2p-home-search-modal__sheet\" data-p2p-search-sheet data-p2p-search-labelledby=\"p2p-home-search-title-1\">\n                    <div class=\"p2p-home-search-modal__handle\" aria-hidden=\"true\"><\/div>\n                    <div class=\"p2p-home-search-modal__header\">\n                        <h2 id=\"p2p-home-search-title-1\">Find accommodation<\/h2>\n                        <button class=\"p2p-home-search-modal__close\" type=\"button\" aria-label=\"Close search\" data-p2p-search-close>&times;<\/button>\n                    <\/div>\n\n                    <form class=\"p2p-home-search\" action=\"https:\/\/www.luxflat-direct.com\/fr\/apartments\/\" method=\"get\">\n                        <input type=\"hidden\" name=\"p2p_home_search\" value=\"1\">\n\n                        <div class=\"p2p-home-search__field p2p-home-search__field--location\">\n                            <label for=\"p2p-home-search-1-location\">Location<\/label>\n                            <select id=\"p2p-home-search-1-location\" name=\"location\" data-p2p-search-location>\n                                <option value=\"\">Anywhere<\/option>\n                                                                    <optgroup label=\"Luxembourg\">\n                                        <option value=\"city:1\">\n                                            All Luxembourg                                        <\/option>\n                                                                                    <option value=\"area:10\">Belair<\/option>\n                                                                                    <option value=\"area:4\">Bonnevoie<\/option>\n                                                                                    <option value=\"area:5\">center<\/option>\n                                                                                    <option value=\"area:13\">Cents<\/option>\n                                                                                    <option value=\"area:11\">Cessange<\/option>\n                                                                                    <option value=\"area:12\">Differdange<\/option>\n                                                                                    <option value=\"area:15\">Esch-sur-Alzette<\/option>\n                                                                                    <option value=\"area:3\">Gare<\/option>\n                                                                                    <option value=\"area:1\">Gasperich<\/option>\n                                                                                    <option value=\"area:17\">Hamm<\/option>\n                                                                                    <option value=\"area:14\">Hesperange<\/option>\n                                                                                    <option value=\"area:8\">Hollerich<\/option>\n                                                                                    <option value=\"area:9\">Kirchberg<\/option>\n                                                                                    <option value=\"area:6\">Limpertsberg<\/option>\n                                                                                    <option value=\"area:16\">Mamer<\/option>\n                                                                                    <option value=\"area:7\">Merl<\/option>\n                                                                            <\/optgroup>\n                                                                    <optgroup label=\"Thionville\">\n                                        <option value=\"city:3\">\n                                            All Thionville                                        <\/option>\n                                                                            <\/optgroup>\n                                                            <\/select>\n                            <span class=\"p2p-home-search__hint\">City or neighbourhood<\/span>\n                        <\/div>\n\n                        <div class=\"p2p-home-search__field\">\n                            <label for=\"p2p-home-search-1-move-in\">Move in<\/label>\n                            <input id=\"p2p-home-search-1-move-in\" type=\"date\" name=\"move_in\" min=\"2026-10-05\" data-p2p-search-date>\n                        <\/div>\n\n                        <div class=\"p2p-home-search__field\">\n                            <label for=\"p2p-home-search-1-duration\">Duration<\/label>\n                            <input id=\"p2p-home-search-1-duration\" type=\"number\" min=\"1\" step=\"1\" inputmode=\"numeric\" name=\"duration\" value=\"3\" data-p2p-search-duration>\n                            <span class=\"p2p-home-search__hint\">1 month minimum<\/span>\n                        <\/div>\n\n                        <div class=\"p2p-home-search__field p2p-home-search__field--budget\">\n                            <label for=\"p2p-home-search-1-budget\">Max budget<\/label>\n                            <div class=\"p2p-home-search__budget-wrap\">\n                                <span aria-hidden=\"true\">\u20ac<\/span>\n                                <input id=\"p2p-home-search-1-budget\" type=\"number\" min=\"0\" step=\"50\" inputmode=\"numeric\" name=\"max_budget\" placeholder=\"1800\" data-p2p-search-budget>\n                            <\/div>\n                            <span class=\"p2p-home-search__hint\">per month<\/span>\n                        <\/div>\n\n                        <div class=\"p2p-home-search__submit\">\n                            <button type=\"submit\" aria-label=\"Search rentals\">\n                                <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n                                    <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"2\"><\/circle>\n                                    <path d=\"M20 20L16.2 16.2\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><\/path>\n                                <\/svg>\n                                <span>Search<\/span>\n                            <\/button>\n                        <\/div>\n                    <\/form>\n                <\/div>\n            <\/div>\n        <\/div>\n         shortcode, which must stay a\n   real Elementor shortcode widget \u2014 so the hero copy and the search bar are two\n   sibling widgets. They now sit in ONE Elementor container, and that container is\n   the hero: it carries the min-height, the padding and `overflow:hidden`, and the\n   backdrop <img> stretches to `inset:0` against it, so a single image covers both\n   widgets. Previously they were two containers, so the image ended at the bottom of\n   the copy and the page background (#ECEDE8) showed through beside the 980px search\n   bar \u2014 the reported right-hand seam.\n\n   These three rules are the only ones in this file NOT scoped under `.lfd`: they\n   style Elementor's own container\/widget wrappers, reached via `_css_classes` set\n   on the elements in build.py. The `lfd-` prefix keeps them from colliding. *\/\n.e-con.lfd-hero-con { position: relative; overflow: hidden;\n  min-height: 640px; justify-content: center; padding: 96px 0; gap: 28px; }\n\/* Elementor sets `position:relative` on every `.elementor-widget`, which would make\n   the copy widget \u2014 not the container \u2014 the <img>'s containing block, collapsing the\n   backdrop back onto the copy alone. Static here hands the containing block back. *\/\n.lfd-hero-con > .elementor-widget.lfd-hero-w { position: static; }\n\/* `--lfd-maxw` \/ `--lfd-pad` are declared on `.lfd`, which is *inside* this element, so\n   the 1200\/40px gutter is repeated literally here to line the bar up with the copy.\n   `max-width` and `margin:auto` are NOT usable on this element: something in the Elementor\n   stack pins the widget to `max-width:100%` \/ `margin:0` at a specificity that even\n   `.lfd-hero-con > .elementor-widget.lfd-hero-search-w` (0-3-0) loses to \u2014 only an inline\n   style won it. Padding *does* apply, so the centred 1200px column is expressed as padding\n   instead, and the bar itself is sized on the plugin's own elements inside it. *\/\n.lfd-hero-con > .lfd-hero-search-w { position: relative; z-index: 1; box-sizing: border-box;\n  padding-left:  calc(max(0px, (100% - 1200px) \/ 2) + 40px);\n  padding-right: calc(max(0px, (100% - 1200px) \/ 2) + 40px); }\n\/* Design (For-Tenants.dc.html:292) renders the bar 850px wide, left-aligned with the copy \u2014\n   NOT the full 1120px content column. The plugin ships `width: min(980px, 100%)` on both of\n   these elements (home-search.css:7 and :31), so both have to be overridden. *\/\n.lfd-hero-con .p2p-home-search-wrap,\n.lfd-hero-con .p2p-home-search { width: 850px; max-width: 100%; }\n.lfd-hero__stack { position: static; }\n.lfd-hero-con .lfd-hero__img, .lfd-hero-con .lfd-hero__scrim { z-index: 0; }\n.lfd-hero-con .lfd-hero__inner { z-index: 1; }\n\n\/* hero: copy beside the floating dossier card (for-landlords) *\/\n.lfd-hero__row { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; flex-wrap: wrap; }\n.lfd-dossier { background: #fff; border-radius: 12px; box-shadow: 0 16px 40px rgba(20,32,58,.30);\n  padding: 16px; width: 320px; box-sizing: border-box; flex-shrink: 0; }\n.lfd-dossier__top { display: flex; align-items: center; gap: 10px; }\n.lfd-dossier__avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--lfd-navy); color: #fff;\n  display: flex; align-items: center; justify-content: center; font: 600 16px var(--lfd-sans); flex-shrink: 0; }\n.lfd-dossier__name { font: 600 15px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-dossier__meta { font: 400 12px var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-dossier__tag { background: var(--lfd-forest-bg); color: var(--lfd-forest); border-radius: 20px;\n  padding: 5px 10px; font: 500 11px var(--lfd-sans); display: flex; align-items: center; gap: 4px; white-space: nowrap; }\n.lfd-dossier__btns { display: flex; gap: 8px; margin-top: 14px; }\n.lfd .lfd-dossier__btn { flex: 1; border-radius: 8px; padding: 9px 0; font: 700 13px var(--lfd-sans); cursor: pointer; }\n.lfd .lfd-dossier__btn--no,\n.lfd .lfd-dossier__btn--no:hover  { background: transparent; border: 1px solid var(--lfd-danger); color: var(--lfd-danger); }\n.lfd .lfd-dossier__btn--yes,\n.lfd .lfd-dossier__btn--yes:hover { background: var(--lfd-forest); border: none; color: #fff; }\n\n\/* feature strip (for-landlords, below the hero) *\/\n.lfd-features { max-width: 1100px; margin: 0 auto; display: flex; gap: 48px; text-align: center; }\n.lfd-features__item { flex: 1; display: flex; flex-direction: column; align-items: center;\n  padding: 0 24px; border-right: 1px solid var(--lfd-border); }\n.lfd-features__item:last-child { border-right: 0; }\n.lfd-features__t { font: 500 14px\/1.5 var(--lfd-sans); color: var(--lfd-navy); max-width: 220px; }\n\n\/* ---------- neighbourhood trust strip (for-landlords) ---------- *\/\n.lfd-hoods-band { border-bottom: 1px solid var(--lfd-border); padding: 32px 0; }\n.lfd-hoods__label {\n  \/* design: font:500 12px var(--font-sans) \u2014 no line-height override, so `normal`. *\/\n  font: 500 12px var(--lfd-sans);\n  letter-spacing: .1em; text-transform: uppercase;\n  color: var(--lfd-muted); text-align: center; margin-bottom: 16px;\n}\n.lfd-hoods { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }\n.lfd-hoods__chip {\n  background: var(--lfd-cream); color: var(--lfd-navy);\n  font: 500 13px\/1 var(--lfd-sans); border-radius: 20px; padding: 8px 16px;\n}\n\n\/* ---------- stats ---------- *\/\n.lfd-stats { display: flex; justify-content: center; gap: 64px; flex-wrap: wrap; }\n.lfd-stat { text-align: center; }\n.lfd-stat__n { font: 700 36px\/1 var(--lfd-serif); color: var(--lfd-navy); }\n.lfd-stat--on-navy .lfd-stat__n { color: #fff; }\n.lfd-stat__l { font: 400 13px\/1.4 var(--lfd-sans); color: var(--lfd-muted); max-width: 190px; margin: 8px auto 0; }\n.lfd-stat--on-navy .lfd-stat__l { color: rgba(255,255,255,.65); }\n\n\/* ---------- cards grid ---------- *\/\n.lfd-grid { display: grid; gap: 24px; }\n\/* Without this a wide child (e.g. a fixed-max-width image) sets the column's\n   min-content width and forces horizontal overflow on narrow screens. *\/\n.lfd-grid > * { min-width: 0; }\n.lfd-trust__item, .lfd-cta, .lfd-step > div { min-width: 0; }\n.lfd-grid--3 { grid-template-columns: repeat(3, 1fr); }\n.lfd-grid--4 { grid-template-columns: repeat(4, 1fr); }\n.lfd-grid--2 { grid-template-columns: repeat(2, 1fr); }\n\n.lfd-card { background: #fff; border: 1px solid var(--lfd-border); border-radius: 12px; overflow: hidden; }\n.lfd-card__media { aspect-ratio: 4\/3; overflow: hidden; }\n.lfd-card__media img { width: 100%; height: 100%; object-fit: cover; }\n\/* wide UI screenshot shown whole (landlords step 2), letterboxed on the screenshot's own background *\/\n.lfd-card__media--contain { background-color: #EEEFEA; }\n.lfd-card__media--contain img { object-fit: contain; }\n\/* real portal screenshots (how-it-works tenant strip): letterbox on the portal's page background *\/\n.lfd-card__media--ui { background-color: #E7E9E2; }\n\/* 4:3 product visuals in a 16:9 cell (how-it-works landlord strip): keep the floating UI cards at the top *\/\n.lfd-card__media--top img { object-position: top center; }\n.lfd-card__body { padding: 20px; }\n\n\/* ---------- audience card (for-tenants \"Who it's for\") ----------\n   Design: For-Tenants.dc.html:338 \u2014 a 3:4 photo tile with a navy gradient and the copy\n   sitting ON the image in white. This is deliberately NOT `.lfd-card` (white card, 4:3\n   media box, dark copy below it), which for-landlords' step cards and the help-centre\n   cards still use \u2014 that treatment is what made this section read as off-system. *\/\n.lfd-acard { position: relative; border-radius: 12px; overflow: hidden; aspect-ratio: 3\/4; }\n\/* same `.elementor img { height: auto }` trap as .lfd-hero__img \u2014 keep `.lfd`-prefixed. *\/\n.lfd .lfd-acard__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.lfd-acard__scrim { position: absolute; inset: 0; background: linear-gradient(to bottom,\n  rgba(20,32,58,.15) 0%, rgba(20,32,58,.35) 35%, rgba(20,32,58,.96) 100%); }\n.lfd-acard__body { position: absolute; left: 0; right: 0; bottom: 0; padding: 20px 16px; }\n.lfd-acard__t { font: 600 17px\/1.3 var(--lfd-serif-display); color: #fff; }\n.lfd-acard__b { font: 400 12px\/1.5 var(--lfd-sans); color: rgba(255,255,255,.85);\n  margin-top: 8px; padding-bottom: 4px; }\n.lfd-acard__more { display: inline-block; margin-top: 8px; font: 500 12px var(--lfd-sans);\n  color: #fff; text-decoration: underline; }\n\n\/* ---------- trust strip ---------- *\/\n.lfd-trust { display: flex; gap: 48px; flex-wrap: wrap; justify-content: space-between; }\n.lfd-trust__item { display: flex; gap: 12px; align-items: flex-start; flex: 1 1 240px; }\n.lfd-trust__t { font: 600 14px\/1.3 var(--lfd-sans); color: var(--lfd-navy); }\n.lfd-trust__d { font: 400 13px\/1.5 var(--lfd-sans); color: var(--lfd-muted); margin-top: 3px; }\n\n\/* ---------- numbered steps ---------- *\/\n.lfd-steps { position: relative; margin-top: 40px; display: flex; flex-direction: column; gap: 32px; }\n.lfd-steps__rail { position: absolute; left: 17px; top: 18px; bottom: 18px; width: 1px; background: var(--lfd-border); }\n.lfd-step { display: flex; gap: 24px; align-items: flex-start; }\n.lfd-step__n {\n  width: 36px; height: 36px; border-radius: 50%; flex-shrink: 0; z-index: 1;\n  display: flex; align-items: center; justify-content: center;\n  font: 700 15px\/1 var(--lfd-serif); color: #fff;\n  background: var(--lfd-bronze); box-shadow: 0 4px 10px rgba(0,0,0,.15);\n}\n.lfd-step--forest .lfd-step__n { background: var(--lfd-forest); }\n.lfd-step__head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }\n.lfd-step__body { max-width: 480px; }\n\n\/* ---------- comparison table ---------- *\/\n.lfd-compare { width: 100%; max-width: 760px; margin: 32px auto 0; border-collapse: collapse;\n  background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 20px rgba(20,32,58,.08); }\n.lfd-compare th, .lfd-compare td { text-align: left; padding: 14px 20px; font: 400 14px\/1.5 var(--lfd-sans); }\n.lfd-compare thead tr { background: var(--lfd-navy); }\n.lfd-compare thead th { font-weight: 500; color: #fff; font-size: 13px; }\n.lfd-compare tbody tr { border-bottom: 1px solid var(--lfd-border); }\n.lfd-compare tbody tr:last-child { border-bottom: none; }\n.lfd-compare tbody tr:nth-child(even) { background: #FAFAF8; }\n.lfd-compare td:first-child { color: var(--lfd-navy); font-weight: 500; }\n.lfd-compare .lfd-yes { color: var(--lfd-forest); font-weight: 500; }\n.lfd-compare .lfd-no  { color: var(--lfd-muted); }\n\/* icon + value, per design: check before the LuxFlat column, dash before Agency *\/\n.lfd-compare__v { display: flex; align-items: center; gap: 8px; }\n.lfd-compare__v svg { flex-shrink: 0; }\n\n\/* ---------- FAQ accordion ---------- *\/\n.lfd-faq { display: flex; flex-direction: column; gap: 14px; margin-top: 32px; }\n.lfd-faq__item { background: #fff; border: 1px solid var(--lfd-border); border-radius: 12px; overflow: hidden; }\n\/* `.lfd`-prefixed (0-2-0) so it beats the theme's `.elementor-kit-7 button` (0-1-1),\n   which otherwise repaints every FAQ row navy-on-white. Same for the dossier and\n   toggle buttons below; border-radius\/padding are restated because the kit sets those too. *\/\n.lfd .lfd-faq__q {\n  width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 12px;\n  padding: 20px; background: none; border: none; border-radius: 0; cursor: pointer; text-align: left;\n  font: 600 15px\/1.4 var(--lfd-serif-display); color: var(--lfd-navy);\n}\n.lfd .lfd-faq__q:hover, .lfd .lfd-faq__q:focus { background: #FCFBF9; color: var(--lfd-navy); }\n.lfd-faq__chev { flex-shrink: 0; color: var(--lfd-muted); transition: transform 150ms ease-out, color 150ms ease-out; }\n.lfd-faq__item.is-open .lfd-faq__chev { transform: rotate(180deg); color: var(--lfd-bronze); }\n.lfd-faq__a { display: none; padding: 0 20px 20px; font: 400 14px\/1.6 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-faq__item.is-open .lfd-faq__a { display: block; }\n\n\/* ---------- tenant \/ landlord toggle ---------- *\/\n\/* The pill is lifted so it straddles the hero's bottom edge. `--lfd-toggle-lift` is the\n   overlap: everything above it sits over the hero, everything below hangs past it.\n\n   That lower part needs a background. In the design the whole page sits inside one\n   `background:#fff` wrapper, so the strip below the hero is white. Here each section is\n   its own Elementor container with no background, so the theme's page background\n   (#ECEDE8) showed through as a full-width band at the seam \u2014 cut into segments by the\n   white pill and its bronze button.\n\n   It is filled by a pseudo-element with a background-COLOR, NOT by a gradient on the rail\n   itself. Elementor's background lazy-load ships this, inline in every page's <head>:\n\n     .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),\n     .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) *\n       { background-image: none !important; }\n\n   ...with `n+3` under `max-height:1024px` and `n+2` under `max-height:640px`. The journey\n   container is the 3rd on this page, so on any viewport shorter than 1024px a gradient\n   here is stripped until Elementor marks the container `.e-lazyloaded` on scroll \u2014 which\n   is exactly when the seam is on screen. `background-color` is untouched by that rule, and\n   pseudo-elements are not matched by its `*` either, so this survives both ways. *\/\n.lfd-toggle-rail {\n  --lfd-toggle-lift: 32px;\n  display: flex; justify-content: center; padding: 0 var(--lfd-pad);\n  margin-top: calc(-1 * var(--lfd-toggle-lift));\n  position: relative; z-index: 2;\n}\n.lfd-toggle-rail::before {\n  content: ''; position: absolute; z-index: -1;\n  left: 0; right: 0; top: var(--lfd-toggle-lift); bottom: 0;\n  background-color: #fff;\n}\n.lfd-toggle {\n  background: #fff; border-radius: 30px; box-shadow: 0 8px 24px rgba(20,32,58,.15);\n  display: flex; padding: 4px; width: 420px; max-width: 100%;\n}\n.lfd .lfd-toggle__btn {\n  flex: 1; border: none; background: transparent; cursor: pointer;\n  border-radius: 26px; padding: 12px 0;\n  font: 500 14px\/1 var(--lfd-sans); color: var(--lfd-navy);\n  transition: background 150ms ease-out, color 150ms ease-out;\n}\n.lfd .lfd-toggle__btn[aria-selected=\"true\"] { background: var(--lfd-bronze); color: #fff; }\n\n\/* ---------- dual CTA ---------- *\/\n.lfd-ctas { display: flex; gap: 24px; }\n.lfd-cta {\n  flex: 1; position: relative; border-radius: 12px; overflow: hidden; min-height: 280px;\n  display: flex; flex-direction: column; justify-content: center; padding: 32px;\n}\n\/* same `.elementor img { height: auto }` trap as .lfd-hero__img above \u2014 keep `.lfd`-prefixed. *\/\n.lfd .lfd-cta__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.lfd-cta__scrim { position: absolute; inset: 0; }\n.lfd-cta__scrim--bronze { background: linear-gradient(135deg, rgba(169,130,46,.88), rgba(169,130,46,.75)); }\n.lfd-cta__scrim--navy   { background: linear-gradient(135deg, rgba(20,32,58,.90), rgba(20,32,58,.78)); }\n.lfd-cta__body { position: relative; }\n.lfd-cta__t { font: 600 22px\/1.25 var(--lfd-serif-display); color: #fff; }\n\n\/* ---------- help centre ----------\n   Rebuilt 2026-08-30 from the DesignSync `Help Centre.dc.html`, which replaced the flat\n   \"Popular articles\" link list with a \"Popular Frequently Asked Questions\" accordion beside\n   a phone mock. Every value here was measured off the design rendered at 1905px (see\n   \"Measured against the design\" in the README), not read off its inline style attributes. *\/\n\n\/* hero \u2014 centred, photo backdrop + navy scrim + bronze radial glow *\/\n.lfd-help-hero { position: relative; overflow: hidden; padding: 80px 40px; text-align: center;\n  background: var(--lfd-navy); }\n\/* `.lfd`-prefixed (0-2-0) so `height:100%` beats Elementor's `.elementor img{height:auto}`\n   (0-1-1) \u2014 same replaced-element trap documented on `.lfd-hero__img` above. *\/\n.lfd .lfd-help-hero__img { position: absolute; inset: 0; width: 100%; height: 100%;\n  object-fit: cover; filter: blur(2px); }\n.lfd-help-hero__scrim { position: absolute; inset: 0;\n  background: linear-gradient(180deg, rgba(20,32,58,.92) 0%, rgba(20,32,58,.80) 100%); }\n.lfd-help-hero__glow { position: absolute; left: 50%; top: 30%; transform: translate(-50%,-50%);\n  width: 420px; height: 420px; pointer-events: none;\n  background: radial-gradient(circle, rgba(169,130,46,.30) 0%, rgba(169,130,46,0) 70%); }\n.lfd-help-hero__inner { position: relative; }\n.lfd-help-hero__h1 { font: 700 38px\/1.15 var(--lfd-serif-display); color: #fff; margin-top: 10px; }\n.lfd-help-hero__p { font: 400 15px\/1.6 var(--lfd-sans); color: rgba(255,255,255,.68); margin-top: 10px; }\n\n.lfd-help-search { position: relative; max-width: 560px; margin: 24px auto 0; }\n.lfd-help-search__icon { position: absolute; left: 20px; top: 50%; transform: translateY(-50%);\n  color: rgba(255,255,255,.75); pointer-events: none; z-index: 1; display: flex; }\n.lfd-help-search input {\n  width: 100%; height: 56px; border-radius: 10px;\n  border: 1px solid rgba(255,255,255,.35); padding: 0 20px 0 52px;\n  font: 400 15px var(--lfd-sans); color: #fff;\n  background: rgba(255,255,255,.14);\n  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);\n  box-shadow: 0 8px 24px rgba(20,32,58,.30); outline: none;\n}\n.lfd-help-search input::placeholder { color: rgba(255,255,255,.65); }\n.lfd-help-search input:focus { border-color: var(--lfd-bronze); background: rgba(255,255,255,.20); }\n\n\/* topic cards \u2014 two photo tiles over four colour tiles *\/\n.lfd-tcards { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 32px; }\n.lfd-tcard { position: relative; display: block; border-radius: 12px; overflow: hidden; min-height: 180px; }\n.lfd .lfd-tcard__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.lfd-tcard__scrim { position: absolute; inset: 0; pointer-events: none;\n  background: linear-gradient(to bottom, rgba(20,32,58,.05) 0%, rgba(20,32,58,.85) 100%); }\n.lfd-tcard__body { position: absolute; left: 0; right: 0; bottom: 0; padding: 20px; }\n.lfd-tcard__t { font: 600 18px\/1.3 var(--lfd-serif-display); color: #fff; }\n.lfd-tcard__d { font: 400 13px\/1.5 var(--lfd-sans); color: rgba(255,255,255,.80); margin-top: 6px; }\n\n\/* 3 tiles since 2026-09-14 \u2014 one clean row of three. *\/\n.lfd-tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 20px; }\n.lfd-tile { display: block; border: 1px solid var(--lfd-border); border-radius: 12px; padding: 28px;\n  box-shadow: 0 2px 12px rgba(20,32,58,.06); transition: box-shadow 150ms ease-out; }\n.lfd-tile:hover { box-shadow: 0 8px 22px rgba(20,32,58,.12); }\n.lfd-tile__ico { display: block; margin-bottom: 16px; }\n.lfd-tile__t { font: 600 18px\/1.3 var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-tile__d { font: 400 13px\/1.5 var(--lfd-sans); color: var(--lfd-muted); margin-top: 8px; }\n\/* `.lfd-tile__n` \/ `.lfd-tcard__n` (article counts) removed 2026-09-14. The tile keeps its\n   28px padding on all four sides, so with icon + title + description it still closes\n   evenly; the photo card's body is bottom-anchored, so it simply sits a line lower. *\/\n\n\/* \"Popular Frequently Asked Questions\" accordion \u2014 help-centre only.\n   Deliberately NOT `.lfd-faq` (for-landlords \/ for-tenants \/ how-it-works use that one):\n   this design gives each row a leading document icon, a RIGHT-pointing chevron that\n   rotates 90deg open (not a down chevron rotating 180deg), 10px radius and 16px padding. *\/\n.lfd-hfaq__row { display: flex; gap: 32px; margin-top: 32px; align-items: flex-start; }\n.lfd-hfaq { flex: 0 0 60%; min-width: 0; display: flex; flex-direction: column; gap: 12px; }\n.lfd-hfaq__item { background: #fff; border: 1px solid var(--lfd-border); border-radius: 10px; overflow: hidden; }\n\/* `.lfd`-prefixed (0-2-0) so it beats the theme's `.elementor-kit-7 button` (0-1-1), which\n   otherwise repaints the row navy-on-white and re-applies the kit's own radius and padding. *\/\n.lfd .lfd-hfaq__q { width: 100%; display: flex; align-items: center; gap: 12px; padding: 16px;\n  background: none; border: none; border-radius: 0; cursor: pointer; text-align: left;\n  \/* `color` is restated because the kit also sets it: without this the button inherits\n     the kit's #fff and any text placed directly in it renders white-on-white. The three\n     children all set their own colour, so this is belt-and-braces, not a live bug. *\/\n  color: var(--lfd-navy); }\n.lfd .lfd-hfaq__q:hover, .lfd .lfd-hfaq__q:focus { background: #FCFBF9; }\n.lfd-hfaq__ico { flex-shrink: 0; display: block; color: var(--lfd-navy); }\n.lfd-hfaq__t { flex: 1; font: 500 15px\/1.4 var(--lfd-sans); color: var(--lfd-navy); }\n.lfd-hfaq__chev { flex-shrink: 0; color: var(--lfd-muted); transition: transform 200ms ease-out; }\n.lfd-hfaq__item.is-open .lfd-hfaq__chev { transform: rotate(90deg); }\n.lfd-hfaq__a { display: none; padding: 0 16px 16px 46px;\n  font: 400 14px\/1.6 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-hfaq__item.is-open .lfd-hfaq__a { display: block; }\n\n\/* phone mock beside the accordion *\/\n.lfd-phone-col { flex: 0 0 40%; min-width: 0; display: flex; flex-direction: column;\n  align-items: center; padding-top: 20px; }\n.lfd-phone { position: relative; width: 204px; border-radius: 44px; padding: 5px;\n  background: linear-gradient(135deg, #3a3b3d 0%, #161718 50%, #000 100%);\n  box-shadow: 0 30px 50px rgba(0,0,0,.28); }\n.lfd-phone__bez { position: relative; overflow: hidden; background: #000; border-radius: 39px; padding: 3px; }\n.lfd-phone__notch { position: absolute; top: 10px; left: 50%; transform: translateX(-50%); z-index: 2;\n  width: 44px; height: 14px; border-radius: 8px; background: #000; border: 1px solid #1c1d1f; }\n.lfd-phone__screen { height: 383px; overflow: hidden; border-radius: 36px; padding-top: 27px;\n  background: var(--lfd-cream); }\n.lfd-phone__hdr { background: var(--lfd-navy); padding: 14px 17px 17px; }\n.lfd-phone__hdr-t { font: 600 15px\/1.3 var(--lfd-serif-display); color: #fff; }\n.lfd-phone__list { padding: 14px; }\n.lfd-phone__row { display: flex; align-items: center; gap: 10px; background: #fff;\n  border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; }\n.lfd-phone__av { width: 27px; height: 27px; border-radius: 50%; flex-shrink: 0;\n  background: var(--lfd-navy); color: #fff; display: flex; align-items: center;\n  justify-content: center; font: 600 12px var(--lfd-sans); }\n.lfd-phone__nm { flex: 1; font: 600 12px var(--lfd-sans); color: var(--lfd-navy); }\n.lfd-phone__ok { background: var(--lfd-forest-bg); color: var(--lfd-forest);\n  border-radius: 14px; padding: 2px 7px; font: 700 10px var(--lfd-sans); }\n.lfd-phone__cap { font: 400 14px\/1.5 var(--lfd-sans); color: var(--lfd-muted);\n  margin-top: 20px; text-align: center; }\n\n.lfd-noresults { padding: 28px 4px; font: 400 15px\/1.6 var(--lfd-sans); color: var(--lfd-muted); text-align: center; }\n\n\/* \"Still need help?\" \u2014 glass card on the same photo band as the hero *\/\n.lfd-support-band { position: relative; overflow: hidden; padding: 80px 0; background: var(--lfd-navy); }\n.lfd .lfd-support-band__img { position: absolute; inset: 0; width: 100%; height: 100%;\n  object-fit: cover; filter: blur(2px); }\n.lfd-support-band__scrim { position: absolute; inset: 0;\n  background: linear-gradient(180deg, rgba(20,32,58,.92) 0%, rgba(20,32,58,.80) 100%); }\n.lfd-support-band__glow { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);\n  width: 420px; height: 420px; pointer-events: none;\n  background: radial-gradient(circle, rgba(169,130,46,.30) 0%, rgba(169,130,46,0) 70%); }\n.lfd-support-wrap { position: relative; max-width: 800px; margin: 0 auto; padding: 0 40px; }\n.lfd-support { background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.35);\n  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);\n  border-radius: 12px; padding: 40px; text-align: center; box-shadow: 0 8px 32px rgba(20,32,58,.30); }\n.lfd-support__avs { display: flex; justify-content: center; margin-bottom: 12px; }\n.lfd-support__av { width: 40px; height: 40px; border-radius: 50%; background: var(--lfd-bronze);\n  color: #fff; display: flex; align-items: center; justify-content: center;\n  font: 600 15px var(--lfd-sans); border: 2px solid rgba(255,255,255,.5); }\n.lfd-support__av + .lfd-support__av { margin-left: -12px; }\n\/* 2026-09-14: the avatars are photos now. The circle keeps its 40px size, bronze fill (shown\n   only while the image loads) and 2px white ring; the photo fills it edge to edge. *\/\n.lfd-support__av { overflow: hidden; }\n.lfd .lfd-support__av-img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 50%; }\n.lfd-support__eyebrow { font: 400 12px\/1.4 var(--lfd-sans); color: rgba(255,255,255,.75); margin-bottom: 16px; }\n.lfd-support__t { font: 600 22px\/1.3 var(--lfd-serif-display); color: #fff; }\n.lfd-support__d { font: 400 14px\/1.6 var(--lfd-sans); color: rgba(255,255,255,.75); margin-top: 8px; }\n.lfd-support__btns { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 20px; }\n\/* design: both CTAs are 12px 24px \/ 500 15px, giving the 44px height its Button hint asks for. *\/\n.lfd-support__btns .lfd-btn { padding: 12px 24px; font-size: 15px; }\n\n.lfd-btn--whatsapp { background: #25D366; color: #fff; display: inline-flex; align-items: center; gap: 8px; }\n.lfd-btn--whatsapp:hover { background: #1eb857; color: #fff; }\n\n\/* ==========================================================================\n   Responsive \u2014 the desktop and mobile .dc.html variants merged into one build\n   ========================================================================== *\/\n@media (max-width: 1024px) {\n  .lfd-grid--4 { grid-template-columns: repeat(2, 1fr); }\n  \/* Three tiles stay three-across on tablets (2+1 would orphan one); tighter padding. *\/\n  .lfd-tile { padding: 22px; }\n  .lfd-stats { gap: 40px; }\n}\n\n@media (max-width: 767px) {\n  .lfd { --lfd-pad: 18px; }\n\n  .lfd-pad-lg { padding-top: 56px; padding-bottom: 56px; }\n  .lfd-pad-md { padding-top: 44px; padding-bottom: 44px; }\n  .lfd-pad-sm { padding-top: 32px; padding-bottom: 32px; }\n\n  .lfd-h1 { font-size: 34px; }\n  .lfd-h2 { font-size: 24px; }\n  .lfd-h3 { font-size: 18px; }\n  .lfd-lede { font-size: 14px; }\n\n  .lfd-hero { min-height: 520px; }\n  .lfd-hero__scrim { background: linear-gradient(180deg, rgba(20,32,58,.55) 0%, rgba(20,32,58,.82) 100%); }\n  .lfd-hero--band { padding: 32px 0 64px; }\n  .lfd-hero--band .lfd-h1 { font-size: 30px; }\n  \/* mirrors `.lfd-hero` above; the 18px gutter mirrors `--lfd-pad` at this breakpoint. *\/\n  .e-con.lfd-hero-con { min-height: 520px; padding: 64px 0; }\n  .lfd-hero-con > .lfd-hero-search-w { padding: 0 18px; }\n\n  .lfd-btn { width: 100%; }\n  .lfd-btn--sm, .lfd-btn--ghost { width: auto; }\n\n  .lfd-grid--2, .lfd-grid--3, .lfd-grid--4 { grid-template-columns: 1fr; gap: 16px; }\n\n  .lfd-stats { gap: 28px; flex-direction: column; align-items: center; }\n  .lfd-hoods-band { border-top: 1px solid var(--lfd-border); padding: 24px 20px; }\n  .lfd-hoods__label { font-size: 11px; margin-bottom: 14px; }\n  .lfd-hoods { gap: 8px; }\n  .lfd-hoods__chip { font-size: 12px; padding: 7px 13px; }\n  .lfd-stat__l { max-width: 260px; }\n\n  .lfd-trust { flex-direction: column; gap: 20px; }\n\n  .lfd-hero__row { flex-direction: column; align-items: stretch; }\n  .lfd-dossier { width: 100%; }\n  .lfd-features { flex-direction: column; gap: 28px; }\n  .lfd-features__item { border-right: 0; padding: 0; }\n\n  .lfd-steps { gap: 24px; }\n  .lfd-step { gap: 16px; }\n  .lfd-steps__rail { left: 15px; }\n  .lfd-step__n { width: 32px; height: 32px; font-size: 14px; }\n\n  .lfd-ctas { flex-direction: column; gap: 16px; }\n  .lfd-cta { min-height: 220px; padding: 24px; }\n\n  .lfd-toggle-rail { --lfd-toggle-lift: 26px; }\n  .lfd-toggle { width: 100%; }\n  .lfd .lfd-toggle__btn { font-size: 13px; padding: 11px 0; }\n\n  .lfd-help-hero { padding: 56px 18px; }\n  .lfd-help-hero__h1 { font-size: 28px; }\n  .lfd-help-search input { height: 52px; padding-left: 46px; font-size: 14px; }\n  .lfd-help-search__icon { left: 15px; }\n  .lfd-tcards, .lfd-tiles { grid-template-columns: 1fr; gap: 16px; }\n  .lfd-hfaq__row { flex-direction: column; gap: 28px; }\n  .lfd-hfaq, .lfd-phone-col { flex: 1 1 auto; width: 100%; }\n  .lfd-phone-col { padding-top: 0; }\n  .lfd-support-band { padding: 56px 0; }\n  .lfd-support-wrap { padding: 0 18px; }\n  .lfd-support { padding: 28px 20px; }\n\n  \/* comparison table -> stacked cards on small screens *\/\n  .lfd-compare, .lfd-compare thead, .lfd-compare tbody,\n  .lfd-compare th, .lfd-compare td, .lfd-compare tr { display: block; }\n  .lfd-compare thead { display: none; }\n  .lfd-compare tr { border-bottom: 1px solid var(--lfd-border); padding: 12px 0; }\n  .lfd-compare tr:last-child { border-bottom: none; }\n  .lfd-compare td { padding: 4px 16px; display: flex; justify-content: space-between; gap: 16px; }\n  .lfd-compare td:first-child { font-weight: 600; padding-top: 12px; }\n  .lfd-compare td[data-label]::before {\n    content: attr(data-label); color: var(--lfd-muted); font-size: 12px;\n    text-transform: uppercase; letter-spacing: .06em; flex-shrink: 0;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .lfd *, .lfd *::before, .lfd *::after { transition: none !important; animation: none !important; }\n}\n\n\/* ==========================================================================\n   CONTACT (Contact-Us.dc.html) \u2014 added 2026-09-04\n   Values measured off the rendered design source at a 1905px viewport, not read\n   off the inline style strings.\n   ========================================================================== *\/\n\n\/* hero: 400px photo band, copy vertically centred, 3-stop horizontal scrim.\n   The scrim is a PSEUDO-ELEMENT, not a background on .lfd-hero__scrim itself.\n   Elementor's lazy-load rule kills `background-image` on\n   `.e-con.e-parent:nth-of-type(n+2) , \u2026 *` under max-height:640px (n+3 <=1024px,\n   n+4 otherwise) with !important. This hero is the 2nd .e-con on the page and is\n   above the fold, so a gradient background there is stripped exactly while it is\n   on screen. `*` does not match pseudo-elements, so ::before survives. *\/\n.lfd-hero--contact,\n.lfd-hero--legal,\n.lfd-hero--privacy { min-height: 400px; }\n\/* This band is 1905x400 (4.8:1) against a 900x600 (1.5:1) photo, so `cover` shows only a\n   ~189px slice of the source (31% of it). Centred, that slice lands on the table rather\n   than the faces, which sit at rows ~100-250 of 600; 20% centres the slice on them.\n   Computed, not eyeballed: top = 175 - 189\/2 = 81, and 81 \/ (600 - 189) = 20%.\n   See the README on why the design's own hero photo could not be used. *\/\n.lfd .lfd-hero--contact .lfd-hero__img { object-position: center 20%; }\n.lfd-hero--contact .lfd-hero__scrim,\n.lfd-hero--legal .lfd-hero__scrim,\n.lfd-hero--privacy .lfd-hero__scrim { background: none; }\n.lfd-hero--contact .lfd-hero__scrim::before,\n.lfd-hero--legal .lfd-hero__scrim::before,\n.lfd-hero--privacy .lfd-hero__scrim::before {\n  content: ''; position: absolute; inset: 0;\n  background-image: linear-gradient(90deg,\n    rgba(20,32,58,.92) 0%, rgba(20,32,58,.62) 55%, rgba(20,32,58,.30) 100%);\n}\n.lfd-hero--contact .lfd-hero__inner,\n.lfd-hero--legal .lfd-hero__inner,\n.lfd-hero--privacy .lfd-hero__inner { padding-top: 80px; padding-bottom: 80px; }\n\/* This design's H1 is 700\/1.2 where the shared `.lfd-h1` is 600\/1.15, and its lede is\n   \/1.7 at .78 alpha over 620px where the shared one is \/1.6 at .68 over 560px. Both are\n   scoped to this hero rather than changed globally \u2014 the other four pages are live. *\/\n.lfd-hero--contact .lfd-h1,\n.lfd-hero--legal .lfd-h1,\n.lfd-hero--privacy .lfd-h1 { font: 700 42px\/1.2 var(--lfd-serif); }\n.lfd-hero--contact .lfd-lede,\n.lfd-hero--legal .lfd-lede,\n.lfd-hero--privacy .lfd-lede { font: 400 15px\/1.7 var(--lfd-sans);\n  max-width: 620px; color: rgba(255,255,255,.78); }\n\/* the only hero value that differs from \/contact\/ and \/legal-notice\/ *\/\n.lfd-hero--privacy .lfd-lede { max-width: 660px; }\n\n\/* ---------- channels strip (3 bordered cards) ---------- *\/\n.lfd-chans { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }\n.lfd-chan { border: 1px solid var(--lfd-border); border-radius: 12px; padding: 28px 26px; }\n.lfd-chan__tag { font: 500 10px var(--lfd-sans); letter-spacing: .12em;\n  text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-chan__t { font: 600 18px var(--lfd-serif-display); color: var(--lfd-navy); margin-top: 10px; }\n.lfd-chan__b { font: 400 13px\/1.65 var(--lfd-sans); color: var(--lfd-muted); margin-top: 8px; }\n.lfd-chan__l { display: inline-flex; align-items: center; gap: 7px;\n  font: 500 14px var(--lfd-sans); color: var(--lfd-bronze); margin-top: 14px; }\n.lfd-chan__l:hover { color: var(--lfd-navy); }\n\n\/* ---------- form + info rail ----------\n   ONE Elementor container holds three sibling widgets: the head, the Elementor Pro\n   form, and the rail. They are placed with CSS GRID rather than flex because the\n   Elementor stack pins `max-width:100%` \/ `margin:0` onto widget wrappers at a\n   specificity even (0-3-0) loses to (see .lfd-hero-con above) \u2014 but it never sets\n   grid-column \/ grid-row, so placement on the wrapper survives.\n   1200\/40 are written literally: --lfd-maxw and --lfd-pad are declared on `.lfd`,\n   which sits INSIDE these widgets, not on the container. *\/\n.e-con.lfd-contact-con {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) 340px;\n  column-gap: 64px;\n  align-items: start;\n  \/* The white band is FULL-BLEED in the design while the content column is 1120 wide.\n     `max-width: 1200px; margin: 0 auto` gave the right column but painted the white only\n     under it, leaving the theme's #ECEDE8 page background showing down both edges. So the\n     container stays full width and the centred column is expressed as PADDING instead \u2014\n     the same trick `.lfd-hero-con` uses above. Content = W - 2*((W-1200)\/2 + 40) = 1120,\n     i.e. 716 + 64 gap + 340. `box-sizing` is restated because this container sits OUTSIDE\n     `.lfd`, so the `.lfd *` border-box reset does not reach it. *\/\n  box-sizing: border-box;\n  padding: 64px calc(max(0px, (100% - 1200px) \/ 2) + 40px) 104px;\n  background: #fff;\n}\n.lfd-contact-con > .lfd-contact-head { grid-column: 1; grid-row: 1; }\n.lfd-contact-con > .lfd-formw       { grid-column: 1; grid-row: 2; }\n.lfd-contact-con > .lfd-side        { grid-column: 2; grid-row: 1 \/ span 2; }\n\n.lfd-contact-head .lfd-contact__h2 { font: 600 28px var(--lfd-serif-display);\n  color: var(--lfd-navy); margin: 0 0 6px; }\n.lfd-contact-head .lfd-contact__lede { font: 400 14px\/1.7 var(--lfd-sans);\n  color: var(--lfd-muted); margin: 0 0 28px; }\n\n\/* info rail *\/\n.lfd-side__stack { display: flex; flex-direction: column; gap: 20px; }\n.lfd-side__navy { background: var(--lfd-navy); border-radius: 12px; padding: 28px 26px; }\n.lfd-side__brand { font: 600 18px var(--lfd-serif-display); color: #fff; }\n.lfd-side__dl { display: flex; flex-direction: column; gap: 14px; margin-top: 18px; }\n.lfd-side__k { font: 500 10px var(--lfd-sans); letter-spacing: .12em;\n  text-transform: uppercase; color: rgba(255,255,255,.40); }\n.lfd-side__v { font: 400 14px\/1.6 var(--lfd-sans); color: #fff; margin-top: 4px; }\n.lfd-side__v a { color: #fff; text-decoration: underline; }\n.lfd-side__card { border: 1px solid var(--lfd-border); border-radius: 12px; padding: 24px 26px; }\n.lfd-side__h { font: 600 16px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-side__p { font: 400 13px\/1.65 var(--lfd-sans); color: var(--lfd-muted); margin-top: 8px; }\n.lfd-side__p a { color: var(--lfd-bronze); }\n.lfd-side__links { display: flex; flex-direction: column; gap: 9px; margin-top: 14px; }\n.lfd-side__link { font: 400 13px var(--lfd-sans); color: var(--lfd-bronze); }\n.lfd-side__link:hover { color: var(--lfd-navy); }\n\n\/* ---------- Elementor Pro form skin ----------\n   The form is a real `form` widget (Elementor Pro), so its markup is Elementor's, not\n   ours. Everything below repaints that markup to the design.\n\n   EVERY rule here is prefixed `.lfd.lfd-formw` (0-2-0 on its own). The widget carries\n   both classes, and the doubled prefix is not cosmetic: Elementor Pro's own form CSS\n   sits at (0-2-0) and (0-2-1) \u2014 e.g. `.elementor-widget-form .elementor-field-group`\n   and `.elementor-widget-form .elementor-field-group > label` \u2014 so a single-class\n   prefix ties or loses. Measured on the rendered page, a (0-2-0) prefix left\n   Elementor's gutter system live underneath: the fields wrapper kept\n   `margin: 0 -5px -10px` and each group kept `padding: 0 5px; margin: 0 0 10px`, which\n   stacked on top of our `gap` and made the inputs 345px\/67px instead of 350px\/43px and\n   the label weight 400 instead of 500. Elementor's gutter is therefore zeroed\n   explicitly below rather than just overridden. *\/\n\/* Layout here is deliberately LEFT TO ELEMENTOR, and that is load-bearing:\n   - the field gutter belongs to the widget's own `column_gap` \/ `row_gap` settings (see\n     build.py). Elementor emits those into the per-post stylesheet at (0-4-0), which\n     outranks this prefix, so a `gap` here would ADD to its gutter, not replace it;\n   - the column widths belong to Elementor's `.elementor-col-50` \/ `-100`. Overriding\n     them with `calc(50% - 8px)` double-counted the gutter and gave 342px fields\n     instead of 350px;\n   - the group must keep Elementor's own `flex-direction: row` + `wrap`, which is what\n     `label_position: above` is built on. Forcing `column` here flipped the main axis, so\n     Elementor's `flex-basis: 100%` on the inputs started resolving against the HEIGHT\n     and made every <input> 66.8px tall instead of 43px (<select> was unaffected, which\n     is what gave the fault away).\n   All three were measured on the rendered page; none of them reproduce in the preview. *\/\n.lfd.lfd-formw .elementor-field-group > label,\n.lfd.lfd-formw .elementor-field-label {\n  font: 500 13px var(--lfd-sans); color: var(--lfd-navy);\n  margin: 0 0 8px; padding: 0; width: auto; }\n.lfd.lfd-formw .elementor-field-textual,\n.lfd.lfd-formw select.elementor-field {\n  width: 100%; height: auto; min-height: 0;\n  border: 1px solid var(--lfd-border); border-radius: 8px;\n  padding: 12px 14px; font: 400 14px\/normal var(--lfd-sans); color: var(--lfd-navy);\n  background-color: #fff; box-shadow: none;\n  transition: border-color 150ms ease-out; }\n.lfd.lfd-formw textarea.elementor-field-textual {\n  font: 400 14px\/1.6 var(--lfd-sans); resize: vertical; }\n.lfd.lfd-formw select.elementor-field { appearance: none; -webkit-appearance: none; }\n.lfd.lfd-formw .elementor-field-textual:focus,\n.lfd.lfd-formw select.elementor-field:focus {\n  outline: none; border-color: var(--lfd-bronze); box-shadow: none; }\n.lfd.lfd-formw .elementor-field-textual::placeholder { color: #9A9A8E; opacity: 1; }\n\n\/* role chooser: a real radio group painted as the design's three pills. The input is\n   visually hidden but still focusable, so the group stays keyboard- and SR-operable. *\/\n.lfd.lfd-formw .elementor-field-type-radio .elementor-field-subgroup {\n  display: flex; gap: 10px; width: 100%; margin: 0; padding: 0; }\n.lfd.lfd-formw .elementor-field-option { flex: 1; position: relative; margin: 0; padding: 0; }\n.lfd.lfd-formw .elementor-field-option input[type=\"radio\"] {\n  position: absolute; opacity: 0; width: 0; height: 0; margin: 0; }\n.lfd.lfd-formw .elementor-field-option input[type=\"radio\"] + label {\n  display: block; text-align: center; background: #fff;\n  border: 1px solid var(--lfd-border); color: var(--lfd-navy);\n  border-radius: 8px; padding: 12px 0; margin: 0;\n  font: 500 14px var(--lfd-sans); cursor: pointer;\n  transition: background-color 150ms ease-out, border-color 150ms ease-out; }\n.lfd.lfd-formw .elementor-field-option input[type=\"radio\"]:checked + label {\n  background: var(--lfd-navy); border-color: var(--lfd-navy); color: #fff; }\n.lfd.lfd-formw .elementor-field-option input[type=\"radio\"]:focus-visible + label {\n  outline: 2px solid var(--lfd-bronze); outline-offset: 2px; }\n\n\/* the privacy line, injected as an Elementor `html` field so it keeps the design's\n   position inside the form flow *\/\n.lfd.lfd-formw .lfd-form__note { font: 400 12px\/1.6 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd.lfd-formw .lfd-form__note a { color: var(--lfd-bronze); text-decoration: underline; }\n\/* help line directly under a field: pulled up against it, against the widget's row gap *\/\n.lfd.lfd-formw .lfd-form__note--field { margin: -12px 0 0; }\n\n\/* photo upload (publish-property, 2026-09-15): Elementor's native file input, painted as a\n   dashed drop area matching the text inputs' border, radius and type *\/\n.lfd.lfd-formw .elementor-field-type-upload input[type=\"file\"] {\n  width: 100%; box-sizing: border-box; padding: 14px; margin: 0;\n  border: 1px dashed var(--lfd-border); border-radius: 8px; background-color: #FBFAF7;\n  font: 400 13px var(--lfd-sans); color: var(--lfd-muted); cursor: pointer;\n  transition: border-color 150ms ease-out; }\n.lfd.lfd-formw .elementor-field-type-upload input[type=\"file\"]:hover,\n.lfd.lfd-formw .elementor-field-type-upload input[type=\"file\"]:focus {\n  outline: none; border-color: var(--lfd-bronze); }\n.lfd.lfd-formw .elementor-field-type-upload input[type=\"file\"]::file-selector-button {\n  margin-right: 12px; padding: 8px 14px; border: 1px solid var(--lfd-navy); border-radius: 8px;\n  background-color: #fff; color: var(--lfd-navy); font: 500 13px var(--lfd-sans); cursor: pointer; }\n\n\/* submit. THREE separate rules paint this button and each needed beating; all three were\n   found on the rendered page, not in the preview:\n     .elementor-kit-7 button                               (0-1-1) \u2014 the theme kit, the\n       same fault that repainted the FAQ rows navy on the other four pages;\n     .elementor-button                                     (0-1-0) \u2014 Elementor core;\n     .elementor-widget-form .elementor-button[type=submit]  (0-3-0) \u2014 Elementor Pro's own\n       form styling, form-specific and NEW here: it beat a (0-2-0) prefix and repainted\n       the CTA #B8873A instead of the design's #A9822E. *\/\n.lfd.lfd-formw .elementor-button,\n.lfd.lfd-formw .elementor-button[type=\"submit\"] {\n  width: auto; flex: 0 0 auto; background-color: var(--lfd-bronze); color: #fff; border: none;\n  border-radius: 8px; padding: 14px 28px; font: 500 15px var(--lfd-sans);\n  cursor: pointer; }\n.lfd.lfd-formw .elementor-button:hover,\n.lfd.lfd-formw .elementor-button:focus,\n.lfd.lfd-formw .elementor-button[type=\"submit\"]:hover,\n.lfd.lfd-formw .elementor-button[type=\"submit\"]:focus {\n  background-color: #96721F; color: #fff; }\n\/* The submit group is a row flex container, so the button is left-aligned with\n   `justify-content` and sized to its text rather than stretched across the column. *\/\n.lfd.lfd-formw .elementor-field-type-submit { justify-content: flex-start; }\n.lfd.lfd-formw .elementor-message { font: 400 14px\/1.7 var(--lfd-sans); margin-top: 4px; }\n.lfd.lfd-formw .elementor-message.elementor-message-success { color: var(--lfd-forest); }\n.lfd.lfd-formw .elementor-message.elementor-message-danger  { color: var(--lfd-danger); }\n\n@media (max-width: 1024px) {\n  .lfd-chans { grid-template-columns: 1fr 1fr; }\n  .e-con.lfd-contact-con { grid-template-columns: minmax(0,1fr) 300px; column-gap: 40px; }\n}\n@media (max-width: 900px) {\n  .e-con.lfd-contact-con {\n    grid-template-columns: minmax(0,1fr);\n    padding: 56px 20px 72px;\n    row-gap: 32px;\n  }\n  .lfd-contact-con > .lfd-contact-head { grid-column: 1; grid-row: 1; }\n  .lfd-contact-con > .lfd-formw       { grid-column: 1; grid-row: 2; }\n  .lfd-contact-con > .lfd-side        { grid-column: 1; grid-row: 3; }\n}\n@media (max-width: 767px) {\n  .lfd-chans { grid-template-columns: 1fr; }\n  .lfd-hero--contact, .lfd-hero--legal, .lfd-hero--privacy { min-height: 320px; }\n  .lfd-hero--contact .lfd-h1, .lfd-hero--legal .lfd-h1,\n  .lfd-hero--privacy .lfd-h1 { font-size: 32px; }\n  .lfd-hero--contact .lfd-hero__inner, .lfd-hero--legal .lfd-hero__inner,\n  .lfd-hero--privacy .lfd-hero__inner { padding-top: 56px; padding-bottom: 56px; }\n  .lfd.lfd-formw .elementor-field-group.elementor-col-50 { width: 100%; }\n  .lfd.lfd-formw .elementor-field-type-radio .elementor-field-subgroup { flex-wrap: wrap; }\n}\n\n\/* channels band: the design puts 56px above the cards and NOTHING below \u2014 the 64px top\n   padding of .lfd-contact-con supplies the gap down to \"Send us a message\". *\/\n.lfd-chans-band { padding: 56px 0 0; }\n\n\/* ==========================================================================\n   ABOUT US (About-Us.dc.html) \u2014 added 2026-09-04\n   Values measured off the rendered design source at a 1920px viewport.\n   ========================================================================== *\/\n\n\/* hero: 600px photo band. Same 3-stop 90deg scrim as \/contact\/, and for the same\n   reason it is a PSEUDO-ELEMENT \u2014 Elementor's lazy-load rule nulls `background-image`\n   on early containers with !important, and its `*` does not match pseudo-elements. *\/\n.lfd-hero--about { min-height: 600px; }\n.lfd-hero--about .lfd-hero__scrim { background: none; }\n.lfd-hero--about .lfd-hero__scrim::before {\n  content: ''; position: absolute; inset: 0;\n  background-image: linear-gradient(90deg,\n    rgba(20,32,58,.92) 0%, rgba(20,32,58,.62) 55%, rgba(20,32,58,.30) 100%);\n}\n.lfd-hero--about .lfd-hero__inner { padding-top: 96px; padding-bottom: 96px; }\n.lfd-hero--about .lfd-hero__copy { max-width: 620px; }\n.lfd-hero--about .lfd-eyebrow { margin-bottom: 14px; }\n.lfd-hero--about .lfd-h1 { font: 700 46px\/1.15 var(--lfd-serif); }\n.lfd-hero--about .lfd-lede { font: 400 16px\/1.7 var(--lfd-sans);\n  color: rgba(255,255,255,.78); max-width: 540px; margin-top: 20px; }\n.lfd-hero__btns { display: flex; gap: 12px; margin-top: 28px; flex-wrap: wrap; }\n\n\/* Outline button. NOT `.lfd-btn--ghost`: that one is the small 13px\/10-18 pill the other\n   pages use inside CTA cards. This design's secondary is full-size (15px, 14\/26) with a\n   translucent border. *\/\n.lfd-btn--outline { background: transparent; color: #fff;\n  border: 1px solid rgba(255,255,255,.40); }\n.lfd-btn--outline:hover { background: rgba(255,255,255,.12); color: #fff; }\n.lfd-btn--hero { padding: 14px 26px; }\n\n\/* ---------- stats strip ----------\n   Reuses `.lfd-stats` \/ `.lfd-stat`, which the other pages set at gap 64 \/ 36px \/ 190px.\n   This design is 80 \/ 40px \/ 170px, so the deltas are scoped rather than changed globally. *\/\n.lfd-stats-band { border-bottom: 1px solid var(--lfd-border); padding: 64px 0; }\n.lfd-stats--about { gap: 80px; }\n.lfd-stats--about .lfd-stat__n { font-size: 40px; }\n.lfd-stats--about .lfd-stat__l { max-width: 170px; margin-top: 6px; }\n\n\/* ---------- why we exist: square photo beside the copy ---------- *\/\n.lfd-why { display: grid; grid-template-columns: 1fr 50%; gap: 64px; align-items: center; }\n.lfd-why__media { border-radius: 12px; overflow: hidden; aspect-ratio: 1 \/ 1; }\n\/* same `.elementor img { height: auto }` trap as .lfd-hero__img \u2014 keep `.lfd`-prefixed. *\/\n.lfd .lfd-why__img { width: 100%; height: 100%; object-fit: cover; }\n.lfd-why__h2 { font: 600 34px\/1.25 var(--lfd-serif-display); color: var(--lfd-navy); margin: 8px 0 0; }\n.lfd-why__p { font: 400 15px\/1.7 var(--lfd-sans); color: var(--lfd-muted); margin-top: 14px; }\n.lfd-why__p--first { margin-top: 16px; }\n.lfd-why__p--lead  { color: var(--lfd-navy); }\n\n\/* ---------- principles: three numbered cards ---------- *\/\n.lfd-prins { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 44px; }\n.lfd-prin { background: #fff; border: 1px solid var(--lfd-border);\n  border-radius: 12px; padding: 32px 28px; }\n.lfd-prin__num { width: 44px; height: 44px; border-radius: 50%; background: var(--lfd-cream);\n  display: flex; align-items: center; justify-content: center; margin-bottom: 18px;\n  font: 700 15px var(--lfd-serif); color: var(--lfd-bronze); }\n.lfd-prin__t { font: 600 19px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-prin__b { font: 400 14px\/1.7 var(--lfd-sans); color: var(--lfd-muted); margin-top: 10px; }\n\n\/* ---------- who we build for: paired cream \/ navy cards ---------- *\/\n.lfd-auds { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }\n.lfd-aud { border-radius: 12px; padding: 40px 36px; }\n.lfd-aud--tenant   { background: var(--lfd-cream); }\n.lfd-aud--landlord { background: var(--lfd-navy); }\n.lfd-aud__t { font: 600 22px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-aud--landlord .lfd-aud__t { color: #fff; }\n.lfd-aud__p { font: 400 14px\/1.7 var(--lfd-sans); color: var(--lfd-muted); margin: 12px 0 20px; }\n.lfd-aud--landlord .lfd-aud__p { color: rgba(255,255,255,.65); }\n.lfd-aud__list { display: flex; flex-direction: column; gap: 10px; }\n.lfd-aud__item { display: flex; gap: 10px; align-items: flex-start; }\n.lfd-aud__item svg { margin-top: 2px; flex-shrink: 0; }\n.lfd-aud__item span { font: 400 14px var(--lfd-sans); color: var(--lfd-navy); }\n.lfd-aud--landlord .lfd-aud__item span { color: #fff; }\n.lfd-aud__link { display: inline-block; margin-top: 22px;\n  font: 500 13px var(--lfd-sans); color: var(--lfd-bronze); }\n.lfd-aud__link:hover { color: var(--lfd-navy); }\n.lfd-aud--landlord .lfd-aud__link:hover { color: #fff; }\n\n\/* ---------- service fees: two white bordered cards on cream ----------\n   Added 2026-09-10 with the About re-sync. Deliberately NOT `.lfd-aud`: those cards are\n   the cream\/navy pair at 40px 36px with 10px list gaps and a trailing link, whereas these\n   are a matched white pair at 36px 32px, 12px gaps, no link, and a centred header block\n   above them. The tick sizes differ too (3px top offset here, 2px there). *\/\n.lfd-fees__head { text-align: center; max-width: 720px; margin: 0 auto; }\n.lfd-fees__h2 { font: 600 34px\/1.25 var(--lfd-serif-display); color: var(--lfd-navy); margin: 8px 0 0; }\n.lfd-fees__lede { font: 400 15px\/1.7 var(--lfd-sans); color: var(--lfd-muted); margin-top: 14px; }\n.lfd-fees { display: grid; grid-template-columns: 1fr 1fr; gap: 24px;\n  margin-top: 44px; align-items: stretch; }\n.lfd-fee { background: #fff; border: 1px solid var(--lfd-border);\n  border-radius: 12px; padding: 36px 32px; }\n.lfd-fee__t { font: 600 22px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-fee__p { font: 400 13px\/1.6 var(--lfd-sans); color: var(--lfd-muted); margin: 8px 0 20px; }\n.lfd-fee__list { display: flex; flex-direction: column; gap: 12px; }\n.lfd-fee__item { display: flex; gap: 10px; align-items: flex-start; }\n.lfd-fee__item svg { margin-top: 3px; flex-shrink: 0; }\n.lfd-fee__item span { font: 400 14px\/1.6 var(--lfd-sans); color: var(--lfd-navy); }\n\n\/* ---------- Luxembourg-only band ----------\n   Reuses `.lfd-hoods` (the for-landlords chip row). Its chips are cream on a white band;\n   here the band is cream, so the chips invert to white with a border. *\/\n.lfd-local { text-align: center; }\n.lfd-local__h2 { font: 600 32px var(--lfd-serif-display); color: var(--lfd-navy); margin: 8px 0 0; }\n.lfd-local__p { font: 400 15px\/1.7 var(--lfd-sans); color: var(--lfd-muted);\n  max-width: 560px; margin: 14px auto 0; }\n.lfd-hoods--about { margin-top: 28px; }\n.lfd-hoods--about .lfd-hoods__chip { background: #fff; border: 1px solid var(--lfd-border); }\n\n\/* ---------- closing CTA band ---------- *\/\n.lfd-endcta { text-align: center; }\n.lfd-endcta__h2 { font: 600 34px var(--lfd-serif-display); color: #fff; margin: 0; }\n.lfd-endcta__p { font: 400 14px var(--lfd-sans); color: rgba(255,255,255,.65); margin-top: 10px; }\n.lfd-endcta__btns { display: flex; gap: 12px; justify-content: center;\n  margin-top: 26px; flex-wrap: wrap; }\n.lfd-endcta .lfd-btn--outline { border-color: rgba(255,255,255,.35); }\n\n@media (max-width: 1024px) {\n  .lfd-prins { grid-template-columns: 1fr; }\n  .lfd-why { grid-template-columns: 1fr; gap: 40px; }\n  .lfd-stats--about { gap: 48px; }\n}\n@media (max-width: 767px) {\n  .lfd-hero--about { min-height: 480px; }\n  .lfd-hero--about .lfd-h1 { font-size: 34px; }\n  .lfd-hero--about .lfd-hero__inner { padding-top: 64px; padding-bottom: 64px; }\n  .lfd-auds { grid-template-columns: 1fr; }\n  .lfd-aud { padding: 32px 24px; }\n  .lfd-fees { grid-template-columns: 1fr; }\n  .lfd-fee { padding: 28px 24px; }\n  .lfd-fees__h2 { font-size: 27px; }\n  .lfd-why__h2 { font-size: 27px; }\n  .lfd-local__h2, .lfd-endcta__h2 { font-size: 26px; }\n  .lfd-stats--about { gap: 32px; }\n  .lfd-stats--about .lfd-stat__n { font-size: 32px; }\n}\n\n\/* ==========================================================================\n   LEGAL NOTICE (Legal-Notice.dc.html) \u2014 added 2026-09-04\n   Values measured off the rendered design source at a 1920px viewport.\n   The hero itself reuses `.lfd-hero--contact`'s rules (identical spec, grouped\n   selectors above); only the extra \"Last updated\" line is new.\n   ========================================================================== *\/\n.lfd-hero__updated { font: 400 13px var(--lfd-sans);\n  color: rgba(255,255,255,.55); margin-top: 20px; }\n\n\/* ---------- document layout: sticky contents rail beside the body ----------\n   Grid rather than flex so the rail keeps its 220px track and the body its own\n   column; the design caps the body at 720 and leaves the remaining ~108px of the\n   1120 content width as slack on the right, which `minmax(0, 720px)` reproduces. *\/\n.lfd-doc { display: grid; grid-template-columns: 220px minmax(0, 720px);\n  column-gap: 72px; align-items: start;\n  \/* The design sticks the rail at top:32px, which assumes no fixed header. The live\n     theme HAS one \u2014 a `position: fixed` container measured at 76px on the rendered page\n     \u2014 so 32px parks the rail underneath it. Offset = header + 20px of breathing room,\n     and +32 again when WordPress adds its admin bar (which is exactly the state the\n     client reviews this draft in). Both the sticky offset and the anchor\n     scroll-margin read the same variable so they cannot drift apart. *\/\n  --lfd-doc-offset: 96px; }\n.admin-bar .lfd-doc { --lfd-doc-offset: 128px; }\n\/* `.lfd-band` uses `overflow-x: clip`, which per spec does NOT create a scroll\n   container, so `position: sticky` still resolves against the viewport here.\n   Verified functionally on the rendered page, not just by reading the property:\n   at scrollY 2000 the rail measured exactly at its offset. *\/\n.lfd-doc__toc { position: sticky; top: var(--lfd-doc-offset); }\n.lfd-doc__toc-label { font: 500 10px var(--lfd-sans); letter-spacing: .12em;\n  text-transform: uppercase; color: var(--lfd-muted); margin-bottom: 14px; }\n.lfd-doc__toc-links { display: flex; flex-direction: column; gap: 10px; }\n.lfd-doc__toc-link { font: 400 13px\/1.4 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-doc__toc-link:hover { color: var(--lfd-bronze); }\n\n.lfd-doc__sec { margin-bottom: 44px; }\n.lfd-doc__sec:last-child { margin-bottom: 0; }\n\/* Same reason: an anchored heading would otherwise land under the fixed header.\n   Build affordance \u2014 adds no text, so the verbatim diff is unaffected. *\/\n.lfd-doc__sec[id] { scroll-margin-top: var(--lfd-doc-offset); }\n.lfd-doc__h2 { font: 600 24px var(--lfd-serif-display); color: var(--lfd-navy); margin: 0 0 14px; }\n.lfd-doc__p { font: 400 15px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin: 0; }\n.lfd-doc__p + .lfd-doc__p { margin-top: 14px; }\n.lfd-doc__p--intro { margin-bottom: 18px; }\n.lfd-doc__p a { color: var(--lfd-bronze); text-decoration: underline; }\n\n\/* ---------- publisher details table ---------- *\/\n.lfd-deftable { border: 1px solid var(--lfd-border); border-radius: 12px; overflow: hidden; }\n.lfd-deftable__row { display: flex; gap: 16px; padding: 14px 20px;\n  border-bottom: 1px solid var(--lfd-border); }\n.lfd-deftable__row:nth-child(odd)  { background: #fff; }\n.lfd-deftable__row:nth-child(even) { background: #FAFAF8; }\n.lfd-deftable__k { flex: 0 0 190px; font: 500 13px var(--lfd-sans); color: var(--lfd-navy); }\n.lfd-deftable__v { flex: 1; font: 400 13px\/1.6 var(--lfd-sans); color: var(--lfd-muted); }\n\n\/* ---------- bullet list with bronze dots ---------- *\/\n.lfd-bullets { display: flex; flex-direction: column; gap: 12px; }\n.lfd-bullets__item { display: flex; gap: 12px; align-items: flex-start; }\n.lfd-bullets__dot { width: 6px; height: 6px; border-radius: 50%;\n  background: var(--lfd-bronze); margin-top: 9px; flex-shrink: 0; }\n.lfd-bullets__t { font: 400 15px\/1.75 var(--lfd-sans); color: var(--lfd-muted); }\n\n\/* ---------- closing note card ---------- *\/\n.lfd-notecard { background: var(--lfd-cream); border-radius: 12px; padding: 28px 32px;\n  display: flex; justify-content: space-between; align-items: center;\n  gap: 24px; flex-wrap: wrap; }\n.lfd-notecard__t { font: 600 18px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-notecard__s { font: 400 14px var(--lfd-sans); color: var(--lfd-muted); margin-top: 6px; }\n\/* The design draws this as a <button>; it is emitted as an <a> so the theme's\n   `.elementor-kit-7 button` rule can never reach it \u2014 the standing lesson. *\/\n.lfd-btn--md { padding: 13px 24px; font-size: 14px; }\n\n@media (max-width: 1024px) {\n  .lfd-doc { grid-template-columns: minmax(0, 1fr); row-gap: 40px; }\n  .lfd-doc__toc { position: static; top: auto; }\n}\n@media (max-width: 767px) {\n  .lfd-doc__h2 { font-size: 21px; }\n  .lfd-deftable__row { flex-direction: column; gap: 4px; }\n  .lfd-deftable__k { flex: 0 0 auto; }\n  .lfd-notecard { padding: 24px 22px; }\n}\n\n\/* ==========================================================================\n   PRIVACY POLICY (Privacy-Policy.dc.html) \u2014 added 2026-09-04\n   Measured off the rendered design source at 1920px. The whole document shell \u2014\n   `.lfd-doc`, the sticky rail, `.lfd-doc__sec\/h2\/p`, `.lfd-deftable`,\n   `.lfd-bullets`, `.lfd-notecard` \u2014 is reused from \/legal-notice\/ unchanged;\n   only the components below are new to this page.\n   ========================================================================== *\/\n\n\/* The design varies the heading gap per section: 14px default, 8px where a lead\n   paragraph follows immediately, 20px above a table. *\/\n.lfd-doc__h2--tight { margin-bottom: 8px; }\n.lfd-doc__h2--loose { margin-bottom: 20px; }\n\/* a closing paragraph the design sets in navy rather than muted *\/\n.lfd-doc__p--strong { color: var(--lfd-navy); margin-top: 14px; }\n\n\/* ---------- \"In short\" summary card ---------- *\/\n.lfd-inshort { background: var(--lfd-cream); border-radius: 12px;\n  padding: 28px 32px; margin-bottom: 44px; }\n.lfd-inshort__t { font: 600 17px var(--lfd-serif-display); color: var(--lfd-navy); margin-bottom: 14px; }\n.lfd-inshort__list { display: flex; flex-direction: column; gap: 10px; }\n.lfd-inshort__item { display: flex; gap: 10px; align-items: flex-start; }\n.lfd-inshort__item svg { margin-top: 3px; flex-shrink: 0; }\n.lfd-inshort__item span { font: 400 14px\/1.7 var(--lfd-sans); color: var(--lfd-navy); }\n\n\/* ---------- bronze-bordered callout (privacy \u00a74, \"Your consent to share\") ----------\n   Added 2026-09-09 with the design revision that introduced that section. It is the\n   only bronze-bordered box on the site; `.lfd-inshort` above is the same cream fill\n   with no border. Fill is a background-COLOR, not a gradient, so Elementor's\n   lazy-load `background-image: none !important` rule cannot strip it (see README). *\/\n.lfd-callout { border: 1px solid var(--lfd-bronze); border-radius: 12px;\n  padding: 24px 28px; background: var(--lfd-cream); }\n\/* Two differences from the page-level `.lfd-eyebrow`, both the design's: .12em rather\n   than .14em, and NO line-height override. `.lfd-eyebrow` pins `\/1`; this one is left at\n   `normal` (14.5px at 11px Inter), which is worth 3px of box height \u2014 measured against\n   the rendered design source, where the box is 232px and `\/1` gave 229px. *\/\n.lfd-callout__tag { font: 500 11px var(--lfd-sans); letter-spacing: .12em;\n  text-transform: uppercase; color: var(--lfd-bronze); margin-bottom: 10px; }\n.lfd-callout__p { font: 400 15px\/1.75 var(--lfd-sans); color: var(--lfd-navy); margin: 0; }\n\/* `.lfd :where(a)` resets links to `color: inherit`, so the mailto inside the callout\n   needs the same explicit rule `.lfd-doc__p a` gives every other link on this page. *\/\n.lfd-callout__p a { color: var(--lfd-bronze); text-decoration: underline; }\n\n\/* ---------- data table: three columns under a navy header row ----------\n   Extends `.lfd-deftable` (border, radius 12, overflow hidden, zebra rows). *\/\n.lfd-deftable__head { display: flex; gap: 16px; padding: 12px 20px;\n  background: var(--lfd-navy); }\n.lfd-deftable__head .lfd-deftable__c1,\n.lfd-deftable__head .lfd-deftable__c2,\n.lfd-deftable__head .lfd-deftable__c3 { font: 500 12px var(--lfd-sans); color: #fff; }\n\/* The zebra on `.lfd-deftable` keys off :nth-child, and the header row occupies\n   child 1 here, so the striping is restated to start from the first DATA row. *\/\n.lfd-deftable--3col .lfd-deftable__row:nth-child(even) { background: #fff; }\n.lfd-deftable--3col .lfd-deftable__row:nth-child(odd)  { background: #FAFAF8; }\n.lfd-deftable__c1 { flex: 0 0 170px; font: 500 13px\/1.5 var(--lfd-sans); color: var(--lfd-navy); }\n.lfd-deftable__c2 { flex: 1; font: 400 13px\/1.6 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-deftable__c3 { flex: 0 0 140px; font: 400 13px\/1.6 var(--lfd-sans); color: var(--lfd-muted); }\n\n\/* ---------- retention table: label grows, period is a fixed 240 column ---------- *\/\n.lfd-deftable--retention .lfd-deftable__k { flex: 1; }\n.lfd-deftable--retention .lfd-deftable__v { flex: 0 0 240px; }\n\n\/* ---------- rights: 2 x 3 bordered cards ---------- *\/\n.lfd-rights { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }\n.lfd-right { border: 1px solid var(--lfd-border); border-radius: 12px; padding: 18px 20px; }\n.lfd-right__t { font: 600 14px var(--lfd-sans); color: var(--lfd-navy); }\n.lfd-right__d { font: 400 13px\/1.6 var(--lfd-sans); color: var(--lfd-muted); margin-top: 6px; }\n\n@media (max-width: 767px) {\n  .lfd-rights { grid-template-columns: 1fr; }\n  .lfd-inshort { padding: 22px 20px; }\n  .lfd-callout { padding: 22px 20px; }\n  \/* the 3-column table cannot hold three columns on a phone *\/\n  .lfd-deftable--3col .lfd-deftable__head { display: none; }\n  .lfd-deftable--3col .lfd-deftable__row { flex-direction: column; gap: 4px; }\n  .lfd-deftable--3col .lfd-deftable__c1,\n  .lfd-deftable--3col .lfd-deftable__c3 { flex: 0 0 auto; }\n  \/* the legal-basis cell loses its header on mobile, so label it inline *\/\n  .lfd-deftable--3col .lfd-deftable__c3::before { content: 'Legal basis: '; color: var(--lfd-navy); }\n  .lfd-deftable--retention .lfd-deftable__v { flex: 0 0 auto; }\n}\n\n\/* ==========================================================================\n   PUBLISH YOUR PROPERTY (Publish-Your-Property.dc.html) \u2014 added 2026-09-10\n   Values measured off the RENDERED design source at a 1905px viewport (the live band\n   width), not read off its inline style strings.\n   The form + rail reuse \/contact\/'s grid and card classes wholesale; only what this\n   design does differently is declared here.\n   ========================================================================== *\/\n\n\/* hero: photo band, min 440px, copy vertically centred. Same 3-stop 90deg scrim as\n   \/contact\/ and \/about\/, and a PSEUDO-ELEMENT for the same documented reason \u2014\n   Elementor's lazy-load rule nulls `background-image` with !important on\n   `.e-con.e-parent:nth-of-type(n+2), \u2026 *`, and `*` does not match pseudo-elements.\n   No `object-position` override: the substitute photo is an interior, so the centre\n   crop is the right one (this is the same photo, and the same crop, as \/landlords\/). *\/\n.lfd-hero--publish { min-height: 440px; }\n.lfd-hero--publish .lfd-hero__scrim { background: none; }\n.lfd-hero--publish .lfd-hero__scrim::before {\n  content: ''; position: absolute; inset: 0;\n  background-image: linear-gradient(90deg,\n    rgba(20,32,58,.92) 0%, rgba(20,32,58,.62) 55%, rgba(20,32,58,.30) 100%);\n}\n.lfd-hero--publish .lfd-hero__inner { padding-top: 88px; padding-bottom: 88px; }\n\/* 44px\/1.15 where the shared `.lfd-h1` is 42px\/1.15 and \/contact\/'s is 42px\/1.2. *\/\n.lfd-hero--publish .lfd-h1 { font: 700 44px\/1.15 var(--lfd-serif); max-width: 760px; }\n.lfd-hero--publish .lfd-lede { font: 400 15px\/1.7 var(--lfd-sans);\n  color: rgba(255,255,255,.78); max-width: 600px; margin-top: 16px; }\n\/* The \"high demand, manual review\" paragraph. It sits BELOW the lede and ABOVE the form\n   by design \u2014 the framing has to be read before the form is filled in. Full white, not\n   the lede's .78, and set off by a bronze rule rather than a card. *\/\n\/* `content-box` is deliberate and measured: the design's 620px cap is on the TEXT, with\n   the 16px indent and the 2px rule outside it. Under the shared `.lfd *` border-box reset\n   the same declaration gives a 602px text column \u2014 18px narrower than the design. *\/\n.lfd-hero__note { font: 400 15px\/1.7 var(--lfd-sans); color: #fff;\n  box-sizing: content-box; max-width: 620px;\n  margin-top: 18px; border-left: 2px solid var(--lfd-bronze); padding-left: 16px; }\n\n\/* ---------- value strip: 3 centred cells, divided by 1px rules ----------\n   The column here is 1100px, NOT the 1200px the rest of the page uses. *\/\n.lfd-vstrip-band { padding: 40px 0; border-bottom: 1px solid var(--lfd-border); }\n.lfd-vstrip { max-width: 1100px; margin: 0 auto; padding: 0 var(--lfd-pad);\n  display: flex; gap: 40px; }\n.lfd-vstrip__item { flex: 1; display: flex; flex-direction: column; align-items: center;\n  text-align: center; padding: 0 20px; border-right: 1px solid var(--lfd-border); }\n.lfd-vstrip__item:last-child { border-right: 0; }\n.lfd-vstrip__item svg { margin-bottom: 14px; }\n.lfd-vstrip__t { font: 500 14px\/1.5 var(--lfd-sans); color: var(--lfd-navy);\n  max-width: 230px; }\n\n\/* ---------- form + rail ----------\n   The grid, the two column widths and every card style are \/contact\/'s\n   (`.lfd-contact-con`, `.lfd-side__*`), reused as-is. This design differs in exactly\n   one container value \u2014 72px of top padding where \/contact\/ has 64 \u2014 so that is all\n   `.lfd-pub-con` carries. NB it is (0-3-0), so it also has to be restated inside the\n   breakpoint below, where `.e-con.lfd-contact-con` (0-2-0) would otherwise lose to it. *\/\n.e-con.lfd-contact-con.lfd-pub-con { padding-top: 72px; }\n\/* This design's submit button is 14px\/32px where \/contact\/'s is 14px\/28px, so the shared\n   form skin's (0-4-0) rule is out-specified here rather than changed \u2014 \/contact\/ is live. *\/\n.lfd-pub-con .lfd.lfd-formw .elementor-button[type=\"submit\"] { padding: 14px 32px; }\n\n\/* navy rail card: this one opens with a bronze eyebrow above its title, where\n   \/contact\/'s opens with the title alone. Both rules are scoped so \/contact\/ is\n   untouched \u2014 `.lfd-side__brand` keeps its zero margin there. *\/\n.lfd-side__tag { font: 500 10px var(--lfd-sans); letter-spacing: .12em;\n  text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-side__tag + .lfd-side__brand { margin-top: 10px; }\n\n.lfd-bens { display: flex; flex-direction: column; gap: 13px; margin-top: 18px; }\n.lfd-ben { display: flex; gap: 10px; align-items: flex-start; }\n.lfd-ben svg { margin-top: 3px; flex-shrink: 0; }\n.lfd-ben__t { font: 400 14px\/1.6 var(--lfd-sans); color: #fff; }\n\n\/* neighbourhood pills. Deliberately NOT `.lfd-hoods__chip` (for-tenants' trust strip):\n   that one is 13px on a cream band, this one is 12px on white with a cream fill. *\/\n.lfd-hoodpills { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }\n.lfd-hoodpill { background: var(--lfd-cream); color: var(--lfd-navy);\n  font: 500 12px var(--lfd-sans); border-radius: 20px; padding: 7px 14px; }\n\n\/* ---------- responsive ----------\n   There is NO `Publish-Your-Property-Mobile.dc.html` in the DesignSync project, where\n   every other page has a mobile variant. These rules are therefore derived from\n   \/contact\/'s \u2014 the layout this page is a near-copy of \u2014 and from the shared hero\n   rules, not from a design source. See the README. *\/\n@media (max-width: 900px) {\n  \/* restated at the same (0-3-0) as the desktop rule above, which would otherwise beat\n     `.e-con.lfd-contact-con`'s single-column padding regardless of source order. *\/\n  .e-con.lfd-contact-con.lfd-pub-con { padding-top: 56px; }\n}\n@media (max-width: 767px) {\n  .lfd-hero--publish { min-height: 360px; }\n  .lfd-hero--publish .lfd-h1 { font-size: 32px; }\n  .lfd-hero--publish .lfd-hero__inner { padding-top: 56px; padding-bottom: 56px; }\n  \/* the shared mobile rule flips `.lfd-hero__scrim` to a vertical gradient for exactly\n     this reason \u2014 the copy goes full-width \u2014 but it targets the element, which this\n     hero paints `none`. Applying the same intent to the pseudo-element instead. *\/\n  .lfd-hero--publish .lfd-hero__scrim::before {\n    background-image: linear-gradient(180deg,\n      rgba(20,32,58,.55) 0%, rgba(20,32,58,.82) 100%);\n  }\n  .lfd-hero--publish .lfd-lede, .lfd-hero--publish .lfd-hero__note { font-size: 14px; }\n  .lfd-vstrip { flex-direction: column; gap: 24px; }\n  .lfd-vstrip__item { border-right: 0; padding: 0; }\n}\n\n\/* ===========================================================================\n   HELP ARTICLE  (\/help\/how-renting-directly-works\/)  \u2014 added 2026-09-11\n   First article template. Geometry measured off the rendered design source at\n   a 1920px viewport, not read off its inline style strings:\n     H1 700 40px\/48px Fraunces navy \u00b7 h2 600 28px Playfair \u00b7 body column 720\n     TOC 260 \u00b7 column gap 64 \u00b7 FAQ card 720x122, #fff, 1px #E8E4DC, radius 12\n   The FAQ deliberately reuses the shared `.lfd-faq` skin rather than a new\n   one: that skin is ALREADY the light variant this page's design asks for\n   (white card, navy question), so the site-wide fix applies here for free.\n   =========================================================================== *\/\n.lfd-art-head { background: var(--lfd-cream); border-bottom: 1px solid var(--lfd-border); padding: 32px 0 56px; }\n.lfd-crumb { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font: 400 12px var(--lfd-sans); color: var(--lfd-muted); }\n.lfd .lfd-crumb a { color: var(--lfd-muted); text-decoration: none; }\n.lfd .lfd-crumb a:hover { color: var(--lfd-navy); }\n.lfd-crumb__sep { color: #C9C3B6; }\n.lfd-crumb__cur { color: var(--lfd-navy); }\n\n.lfd-art-head__row { display: flex; gap: 48px; align-items: center; margin-top: 24px; }\n.lfd-art-head__main { flex: 1; min-width: 0; max-width: 720px; }\n.lfd-art__badge { display: inline-block; background: #fff; border: 1px solid var(--lfd-border); color: var(--lfd-bronze);\n  font: 500 11px var(--lfd-sans); letter-spacing: 0.12em; text-transform: uppercase; border-radius: 20px; padding: 7px 14px; }\n.lfd-art__h1 { font: 700 40px\/1.2 var(--lfd-serif); color: var(--lfd-navy); margin: 18px 0 0; text-wrap: pretty; }\n.lfd-art__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: 18px; font: 400 13px var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-art__meta span { display: flex; align-items: center; gap: 7px; }\n.lfd-art__meta .lfd-art__dot { color: #C9C3B6; }\n.lfd-art-head__media { flex: 0 0 380px; height: 260px; border-radius: 12px; overflow: hidden; position: relative; }\n.lfd-art-head__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n\n.lfd-art-body { background: #fff; padding: 56px 0 96px; }\n.lfd-art-grid { display: flex; gap: 64px; align-items: flex-start; }\n.lfd-art__col { flex: 1; min-width: 0; max-width: 720px; }\n\n.lfd-art__lede { font: 400 17px\/1.8 var(--lfd-sans); color: var(--lfd-navy); margin: 0; }\n.lfd-art__sub { font: 400 16px\/1.8 var(--lfd-sans); color: var(--lfd-muted); margin: 20px 0 0; }\n.lfd-art__col h2 { font: 600 28px var(--lfd-serif-display); color: var(--lfd-navy); margin: 52px 0 0; scroll-margin-top: 24px; }\n.lfd-art__p { font: 400 16px\/1.8 var(--lfd-sans); color: var(--lfd-muted); margin: 16px 0 0; }\n.lfd-art__p--after { margin: 22px 0 0; }\n.lfd .lfd-art__col a { color: var(--lfd-bronze); text-decoration: underline; text-underline-offset: 2px; }\n.lfd .lfd-art__col a:hover { color: var(--lfd-navy); }\n\n.lfd-art__bullets { display: flex; flex-direction: column; gap: 14px; margin-top: 22px; }\n.lfd-art__bullet { display: flex; gap: 12px; align-items: flex-start; }\n.lfd-art__bullet svg { margin-top: 5px; flex-shrink: 0; }\n.lfd-art__bullet div { font: 400 16px\/1.7 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-art__bullet strong { color: var(--lfd-navy); font-weight: 600; }\n\n.lfd-art__steps { display: flex; flex-direction: column; gap: 20px; margin-top: 26px; }\n.lfd-art__step { display: flex; gap: 16px; align-items: flex-start; }\n.lfd-art__n { width: 30px; height: 30px; border-radius: 50%; background: var(--lfd-navy); color: #fff;\n  display: flex; align-items: center; justify-content: center; font: 600 14px var(--lfd-sans); flex-shrink: 0; }\n.lfd-art__n--soft { background: var(--lfd-cream); border: 1px solid var(--lfd-border); color: var(--lfd-navy); }\n.lfd-art__step div:last-child { font: 400 16px\/1.7 var(--lfd-sans); color: var(--lfd-muted); padding-top: 3px; }\n.lfd-art__step strong { color: var(--lfd-navy); font-weight: 600; }\n\n.lfd-art__fig { margin: 36px 0 0; }\n.lfd-art__fig img { width: 100%; aspect-ratio: 16\/10; object-fit: cover; border-radius: 12px; display: block; }\n.lfd-art__cap { font: 400 12px\/1.6 var(--lfd-sans); color: var(--lfd-muted); margin-top: 10px; }\n\n.lfd-art__faqwrap { margin-top: 64px; padding-top: 44px; border-top: 1px solid var(--lfd-border); }\n.lfd-art__faqwrap h2 { margin: 0; }\n.lfd-art__faqwrap .lfd-faq { margin-top: 24px; }\n\n.lfd-helpful { margin-top: 44px; background: var(--lfd-cream); border: 1px solid var(--lfd-border); border-radius: 12px;\n  padding: 24px 26px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; }\n.lfd-helpful__t { font: 600 16px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-helpful__n { font: 400 13px var(--lfd-sans); color: var(--lfd-muted); margin-top: 4px; }\n.lfd-helpful__btns { display: flex; gap: 10px; }\n.lfd .lfd-helpful__b { display: flex; align-items: center; gap: 8px; background: #fff; border: 1px solid var(--lfd-border);\n  color: var(--lfd-navy); border-radius: 8px; padding: 11px 20px; font: 500 14px var(--lfd-sans); cursor: pointer; }\n.lfd .lfd-helpful__b:hover { background: var(--lfd-navy); border-color: var(--lfd-navy); color: #fff; }\n\n.lfd-toc { flex: 0 0 260px; position: sticky; top: 24px; }\n.lfd-toc__in { border-left: 1px solid var(--lfd-border); padding-left: 22px; }\n.lfd-toc__k { font: 500 10px var(--lfd-sans); letter-spacing: 0.12em; text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-toc__list { display: flex; flex-direction: column; gap: 11px; margin-top: 16px; }\n.lfd .lfd-toc__list a { font: 400 13px\/1.5 var(--lfd-sans); color: var(--lfd-navy); text-decoration: none; }\n.lfd .lfd-toc__list a:hover { color: var(--lfd-bronze); }\n.lfd-toc__foot { margin-top: 26px; padding-top: 20px; border-top: 1px solid var(--lfd-border);\n  font: 400 13px\/1.65 var(--lfd-sans); color: var(--lfd-muted); }\n\n.lfd-rel { background: var(--lfd-cream); border-top: 1px solid var(--lfd-border); padding: 80px 0; }\n.lfd-rel__k { font: 500 11px var(--lfd-sans); letter-spacing: 0.14em; text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-rel h2 { font: 600 28px var(--lfd-serif-display); color: var(--lfd-navy); margin: 8px 0 0; }\n.lfd-rel__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; margin-top: 28px; }\n.lfd .lfd-rel__card { text-decoration: none; background: #fff; border: 1px solid var(--lfd-border); border-radius: 12px;\n  overflow: hidden; display: flex; flex-direction: column; }\n.lfd-rel__media { width: 100%; height: 170px; flex: 0 0 170px; position: relative; overflow: hidden; }\n.lfd-rel__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.lfd-rel__txt { padding: 24px; display: flex; flex-direction: column; gap: 10px; }\n.lfd-rel__tag { font: 500 10px var(--lfd-sans); letter-spacing: 0.12em; text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-rel__t { font: 600 18px\/1.35 var(--lfd-serif-display); color: var(--lfd-navy); text-wrap: pretty; }\n.lfd-rel__d { font: 400 13px\/1.6 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-rel__r { font: 400 12px var(--lfd-sans); color: var(--lfd-muted); margin-top: 6px; }\n.lfd-rel__back { margin-top: 36px; }\n\n@media (max-width: 900px) {\n  .lfd-art-head__row { flex-direction: column; align-items: flex-start; gap: 28px; }\n  .lfd-art-head__media { flex: 0 0 auto; width: 100%; height: 220px; }\n  .lfd-art__h1 { font-size: 30px; }\n  .lfd-art-grid { flex-direction: column; gap: 40px; }\n  .lfd-toc { position: static; flex: 0 0 auto; width: 100%; order: -1; }\n  .lfd-art__col { max-width: 100%; }\n  .lfd-rel { padding: 56px 0; }\n  .lfd-helpful { flex-direction: column; align-items: flex-start; }\n}\n\n\/* ===========================================================================\n   HELP CATEGORY  (\/help\/getting-started\/)  \u2014 added 2026-09-11\n   Measured off the rendered design source at 1920px, not read off its inline\n   styles: hero min-height 420 with a 90deg navy gradient over the photo,\n   H1 700 52px\/1.12 Fraunces white, content column 900 (820 inner at 40px pad),\n   FAQ card 820x\u2014, #fff, 1px #E8E4DC, radius 12, padding 22\/24.\n   The FAQ reuses the shared `.lfd-faq` skin, with per-item ids for deep links.\n   =========================================================================== *\/\n.lfd-cat-hero { position: relative; min-height: 420px; display: flex; align-items: center; overflow: hidden; }\n.lfd .lfd-cat-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n\/* Gradient lives on a plain child div, never on an Elementor container \u2014 the\n   lazy-loader strips background-image from containers 3+ with !important. *\/\n.lfd-cat-hero__scrim { position: absolute; inset: 0; pointer-events: none;\n  background: linear-gradient(90deg, rgba(20,32,58,0.92) 0%, rgba(20,32,58,0.62) 55%, rgba(20,32,58,0.30) 100%); }\n.lfd-cat-hero__inner { position: relative; max-width: var(--lfd-maxw); margin: 0 auto;\n  padding: 56px 40px 64px; box-sizing: border-box; width: 100%; }\n.lfd-cat-crumb { display: flex; flex-wrap: wrap; align-items: center; gap: 8px;\n  font: 400 12px var(--lfd-sans); color: rgba(255,255,255,0.65); }\n.lfd .lfd-cat-crumb a { color: rgba(255,255,255,0.65); text-decoration: none; }\n.lfd .lfd-cat-crumb a:hover { color: #fff; }\n.lfd-cat-crumb__sep { color: rgba(255,255,255,0.35); }\n.lfd-cat-crumb__cur { color: #fff; }\n.lfd-cat-hero__back { margin-top: 20px; }\n.lfd .lfd-cat-hero__back a { display: inline-flex; align-items: center; gap: 8px;\n  font: 400 13px var(--lfd-sans); color: rgba(255,255,255,0.70); text-decoration: none; }\n.lfd .lfd-cat-hero__back a:hover { color: #fff; }\n.lfd-cat-hero__txt { max-width: 720px; margin-top: 20px; }\n.lfd-cat-hero__k { font: 500 11px var(--lfd-sans); letter-spacing: 0.14em; text-transform: uppercase;\n  color: var(--lfd-bronze); margin-bottom: 12px; }\n.lfd-cat-hero__h1 { font: 700 52px\/1.12 var(--lfd-serif); color: #fff; margin: 0; }\n.lfd-cat-hero__p { font: 400 17px\/1.7 var(--lfd-sans); color: rgba(255,255,255,0.78); margin: 16px 0 0; max-width: 560px; }\n\n.lfd-cat-body { background: #fff; padding: 56px 0 88px; }\n.lfd-cat-wrap { max-width: 900px; margin: 0 auto; padding: 0 40px; box-sizing: border-box; }\n.lfd-cat__k { font: 500 11px var(--lfd-sans); letter-spacing: 0.14em; text-transform: uppercase; color: var(--lfd-bronze); }\n\n.lfd .lfd-feat { display: flex; gap: 28px; align-items: stretch; text-decoration: none; background: #fff;\n  border: 1px solid var(--lfd-border); border-radius: 12px; overflow: hidden; margin-top: 14px;\n  box-shadow: 0 4px 20px rgba(20,32,58,0.06); }\n.lfd .lfd-feat:hover { box-shadow: 0 8px 28px rgba(20,32,58,0.12); }\n.lfd-feat__media { flex: 0 0 260px; position: relative; }\n.lfd-feat__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.lfd-feat__txt { flex: 1; min-width: 0; padding: 30px 32px 30px 4px; display: flex; flex-direction: column;\n  justify-content: center; gap: 10px; }\n.lfd-feat__t { font: 600 24px\/1.3 var(--lfd-serif-display); color: var(--lfd-navy); text-wrap: pretty; }\n.lfd-feat__d { font: 400 15px\/1.7 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-feat__meta { display: flex; align-items: center; gap: 8px; font: 400 13px var(--lfd-sans);\n  color: var(--lfd-muted); margin-top: 4px; }\n\n.lfd-cat-faq { margin-top: 56px; }\n.lfd-cat-faq h2 { font: 600 26px var(--lfd-serif-display); color: var(--lfd-navy); margin: 0; }\n.lfd-cat-faq .lfd-faq { margin-top: 22px; }\n\/* the hash target is the ITEM, so keep it clear of the sticky admin bar *\/\n.lfd-cat-faq .lfd-faq__item { scroll-margin-top: 24px; }\n\n.lfd-still { margin-top: 56px; background: var(--lfd-navy); border-radius: 12px; padding: 40px;\n  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; }\n.lfd-still__t { font: 600 24px var(--lfd-serif-display); color: #fff; }\n.lfd-still__p { font: 400 15px\/1.7 var(--lfd-sans); color: rgba(255,255,255,0.70); margin-top: 8px; max-width: 440px; }\n.lfd-still__btns { display: flex; flex-wrap: wrap; gap: 12px; }\n.lfd .lfd-still__wa { display: inline-flex; align-items: center; gap: 10px; background: var(--lfd-bronze);\n  color: #fff; border-radius: 8px; padding: 14px 24px; font: 500 15px var(--lfd-sans); text-decoration: none; }\n.lfd .lfd-still__wa:hover { background: #8f6e26; }\n.lfd .lfd-still__alt { display: inline-flex; align-items: center; gap: 10px; background: transparent;\n  border: 1px solid rgba(255,255,255,0.35); color: #fff; border-radius: 8px; padding: 14px 24px;\n  font: 500 15px var(--lfd-sans); text-decoration: none; }\n.lfd .lfd-still__alt:hover { border-color: #fff; }\n.lfd-cat-back { margin-top: 36px; }\n\n\/* Search results injected into \/help\/ from the hidden category index *\/\n.lfd-xres { display: flex; flex-direction: column; gap: 12px; margin-top: 18px; }\n.lfd .lfd-xres__item { display: block; text-decoration: none; background: #fff; border: 1px solid var(--lfd-border);\n  border-radius: 12px; padding: 18px 20px; }\n.lfd .lfd-xres__item:hover { border-color: var(--lfd-bronze); }\n.lfd-xres__cat { font: 500 10px var(--lfd-sans); letter-spacing: 0.12em; text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-xres__q { font: 600 15px var(--lfd-serif-display); color: var(--lfd-navy); margin-top: 6px; }\n.lfd-xres__s { font: 400 13px\/1.6 var(--lfd-sans); color: var(--lfd-muted); margin-top: 6px; }\n\n@media (max-width: 900px) {\n  .lfd-cat-hero { min-height: 320px; }\n  .lfd-cat-hero__inner { padding: 40px 20px 44px; }\n  .lfd-cat-hero__h1 { font-size: 32px; }\n  .lfd-cat-hero__p { font-size: 15px; }\n  .lfd-cat-wrap { padding: 0 20px; }\n  .lfd .lfd-feat { flex-direction: column; gap: 0; }\n  .lfd-feat__media { flex: 0 0 180px; height: 180px; }\n  .lfd-feat__txt { padding: 22px 22px 24px; }\n  .lfd-feat__t { font-size: 20px; }\n  .lfd-still { flex-direction: column; align-items: flex-start; padding: 28px 22px; }\n}\n\n\/* Navy outline button for LIGHT sections \u2014 the \"Back to Help Centre\" control on\n   the help article and the help category page. Added 2026-09-11 to fix a real\n   defect: both were using `.lfd-btn--ghost`, which is white-on-transparent for\n   DARK bands, so on a white\/cream section the border and label were invisible.\n   Matches the design: transparent, 1px navy, navy label, radius 8, 13\/24, 500 14px. *\/\n.lfd .lfd-btn--outline-navy { background: transparent; color: var(--lfd-navy);\n  border: 1px solid var(--lfd-navy); border-radius: 8px; padding: 13px 24px;\n  font: 500 14px var(--lfd-sans); display: inline-flex; align-items: center; gap: 10px;\n  text-decoration: none; }\n.lfd .lfd-btn--outline-navy:hover { background: var(--lfd-navy); color: #fff; }\n\n\/* =============================================================================\n   HELP ARTICLE #2 \u2014 Payments & Pricing (Help-Article-Pricing.dc.html), 2026-09-14.\n   Reuses the whole article #1 skin; only the blocks article #1 has no equivalent for\n   are new. Plain background-COLOR everywhere (no gradients): the chart and the table\n   sit in the 2nd container, which Elementor's lazy-load rule can strip.\n   ============================================================================= *\/\n.lfd-art__lede--m16 { margin: 16px 0 0; }\n.lfd-art__p--m18 { margin: 18px 0 0; }\n.lfd-art__p--m20 { margin: 20px 0 0; }\n.lfd-art__p--m30 { margin: 30px 0 0; }\n.lfd-art__col strong { color: var(--lfd-navy); font-weight: 600; }\n.lfd-art__fig--grid img { aspect-ratio: 1477 \/ 927; object-position: top center; border: 1px solid var(--lfd-border); }\n\n\/* two cost-summary cards *\/\n.lfd-psum { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 18px; margin-top: 32px; }\n.lfd-psum__card { background: var(--lfd-cream); border: 1px solid var(--lfd-border); border-radius: 12px; padding: 22px 24px; }\n.lfd-psum__who { font: 500 10px var(--lfd-sans); letter-spacing: 0.12em; text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-psum__h { font: 600 20px\/1.3 var(--lfd-serif-display); color: var(--lfd-navy); margin-top: 10px; }\n.lfd-psum__d { font: 400 14px\/1.7 var(--lfd-sans); color: var(--lfd-muted); margin-top: 8px; }\n\n\/* cumulative-cost chart (bars drawn to the design's own scale) *\/\n.lfd-chart { border: 1px solid var(--lfd-border); border-radius: 12px; background: #fff; padding: 28px 30px 24px; }\n.lfd-chart__t { font: 600 16px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-chart__s { font: 400 13px\/1.6 var(--lfd-sans); color: var(--lfd-muted); margin-top: 6px; }\n.lfd-chart__legend { display: flex; flex-wrap: wrap; gap: 22px; margin-top: 18px; }\n.lfd-chart__key { display: flex; align-items: center; gap: 8px; font: 400 12px var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-chart__sw { width: 12px; height: 12px; border-radius: 3px; background-color: #C9C3B6; display: inline-block; }\n.lfd-chart__sw--lux { background-color: var(--lfd-bronze); }\n.lfd-chart__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 28px; padding-top: 8px; }\n.lfd-chart__col { display: flex; flex-direction: column; gap: 12px; }\n.lfd-chart__plot { height: 210px; display: flex; align-items: flex-end; justify-content: center; gap: 14px; border-bottom: 1px solid var(--lfd-border); }\n.lfd-chart__bw { width: 44px; display: flex; flex-direction: column; align-items: center; gap: 6px; }\n.lfd-chart__v { font: 600 12px var(--lfd-sans); color: var(--lfd-muted); white-space: nowrap; }\n.lfd-chart__v--lux { color: var(--lfd-bronze); }\n.lfd-chart__bar { width: 44px; background-color: #C9C3B6; border-radius: 4px 4px 0 0; }\n.lfd-chart__bar--lux { background-color: var(--lfd-bronze); }\n.lfd-chart__x { font: 500 12px var(--lfd-sans); color: var(--lfd-navy); text-align: center; }\n.lfd-chart__foot { margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--lfd-border); font: 400 13px\/1.7 var(--lfd-sans); color: var(--lfd-muted); }\n\n\/* traditional rental vs LuxFlat Direct *\/\n.lfd-cmp { margin-top: 26px; border: 1px solid var(--lfd-border); border-radius: 12px; overflow: hidden; }\n.lfd-cmp__row { display: grid; grid-template-columns: 1.1fr 1.3fr 1.3fr; border-top: 1px solid var(--lfd-border); }\n.lfd-cmp__row--head { background-color: var(--lfd-navy); border-top: 0; }\n.lfd-cmp__h { font: 500 11px var(--lfd-sans); letter-spacing: 0.1em; text-transform: uppercase; color: rgba(255,255,255,0.55); padding: 14px 18px; }\n.lfd-cmp__h--lux { color: #fff; }\n.lfd-cmp__c { font: 500 14px\/1.6 var(--lfd-sans); color: var(--lfd-navy); padding: 15px 18px; }\n.lfd-cmp__c--trad { font-weight: 400; color: var(--lfd-muted); border-left: 1px solid var(--lfd-border); }\n.lfd-cmp__c--lux { color: var(--lfd-forest); border-left: 1px solid var(--lfd-border); background-color: #FBFAF7; }\n\n@media (max-width: 767px) {\n  .lfd-chart { padding: 22px 18px 18px; }\n  .lfd-chart__grid { gap: 10px; }\n  .lfd-chart__plot { gap: 6px; }\n  .lfd-chart__bw, .lfd-chart__bar { width: 34px; }\n  .lfd-cmp__row { grid-template-columns: 1fr 1.2fr 1.2fr; }\n  .lfd-cmp__h, .lfd-cmp__c { padding: 12px 10px; font-size: 13px; }\n  .lfd-cmp__h { font-size: 10px; letter-spacing: 0.06em; }\n}\n\n\/* =============================================================================\n   HELP ARTICLE #3 \u2014 Documents & Verification (Help-Article-Verification.dc.html),\n   2026-09-14. Reuses the article skin and the pricing article's `lfd-psum` cards.\n   ============================================================================= *\/\n.lfd-art__p--m24 { margin: 24px 0 0; }\n.lfd-psum--docs { margin-top: 26px; }\n.lfd-psum--docs .lfd-psum__h { font-size: 19px; }\n.lfd-art__steps-wrap .lfd-art__steps { gap: 18px; margin-top: 24px; }\n.lfd-art__fig--portal-docs img { aspect-ratio: 1284 \/ 929; object-fit: contain; background-color: #fff; border: 1px solid var(--lfd-border); }\n.lfd-art__fig--portal-qual img { aspect-ratio: 1282 \/ 837; object-fit: contain; background-color: #fff; border: 1px solid var(--lfd-border); }\n\n\/* =============================================================================\n   BLOG LISTING (\/blog\/) \u2014 Blog.dc.html, 2026-09-14.\n   Header band and crumb reuse the article skin (`lfd-crumb`). Plain background-COLOR\n   only (no gradients): see the Elementor lazy-load note.\n   ============================================================================= *\/\n.lfd-blog-head { background: var(--lfd-cream); border-bottom: 1px solid var(--lfd-border); padding: 32px 0 52px; }\n.lfd-blog-head__txt { max-width: 660px; margin-top: 26px; }\n.lfd-blog-head__k, .lfd-blog__k { font: 500 11px var(--lfd-sans); letter-spacing: 0.14em; text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-blog-head__h1 { font: 700 48px\/1.14 var(--lfd-serif); color: var(--lfd-navy); margin: 12px 0 0; }\n.lfd-blog-head__p { font: 400 17px\/1.7 var(--lfd-sans); color: var(--lfd-muted); margin: 16px 0 0; }\n\n.lfd-blog-body { background: #fff; padding: 56px 0 96px; }\n\n\/* featured post \u2014 46% image \/ text, the design's large card *\/\n.lfd .lfd-bfeat { display: flex; align-items: stretch; text-decoration: none; background: #fff; border: 1px solid var(--lfd-border);\n  border-radius: 12px; overflow: hidden; margin-top: 14px; box-shadow: 0 4px 20px rgba(20,32,58,0.06); transition: box-shadow 150ms ease-out; }\n.lfd .lfd-bfeat:hover { box-shadow: 0 8px 28px rgba(20,32,58,0.12); }\n.lfd-bfeat__media { flex: 0 0 46%; position: relative; min-height: 340px; }\n.lfd-bfeat__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.lfd-bfeat__txt { flex: 1; min-width: 0; padding: 40px 44px; display: flex; flex-direction: column; justify-content: center; gap: 14px; }\n.lfd-bfeat__tag, .lfd-bcard__tag { font: 500 10px var(--lfd-sans); letter-spacing: 0.12em; text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-bfeat__t { font: 600 32px\/1.24 var(--lfd-serif-display); color: var(--lfd-navy); text-wrap: pretty; }\n.lfd-bfeat__d { font: 400 16px\/1.7 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-bfeat__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; font: 400 13px var(--lfd-sans); color: var(--lfd-muted); margin-top: 6px; }\n.lfd-bfeat__read { display: flex; align-items: center; gap: 7px; }\n.lfd-bfeat__dot, .lfd-bcard__dot { color: #C9C3B6; }\n\n\/* category tabs + grid + cards \u2014 rendered only once there is more than one post *\/\n.lfd-btabs { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 56px; padding-bottom: 24px; border-bottom: 1px solid var(--lfd-border); }\n.lfd .lfd-btab { background: #fff; border: 1px solid var(--lfd-border); color: var(--lfd-navy); border-radius: 20px; padding: 9px 18px;\n  font: 500 13px var(--lfd-sans); cursor: pointer; white-space: nowrap; }\n.lfd .lfd-btab.is-active { background: var(--lfd-navy); border-color: var(--lfd-navy); color: #fff; }\n.lfd-bgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 32px; }\n.lfd-btabs + .lfd-bgrid { margin-top: 32px; }\n.lfd-bfeat + .lfd-bgrid { margin-top: 56px; }\n.lfd .lfd-bcard { text-decoration: none; background: #fff; border: 1px solid var(--lfd-border); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; }\n.lfd-bcard[hidden] { display: none; }\n.lfd-bcard__media { width: 100%; height: 190px; flex: 0 0 190px; position: relative; overflow: hidden; }\n.lfd-bcard__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.lfd-bcard__txt { padding: 24px; display: flex; flex-direction: column; gap: 10px; flex: 1; }\n.lfd-bcard__t { font: 600 19px\/1.35 var(--lfd-serif-display); color: var(--lfd-navy); text-wrap: pretty; }\n.lfd-bcard__d { font: 400 14px\/1.65 var(--lfd-sans); color: var(--lfd-muted); }\n.lfd-bcard__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font: 400 12px var(--lfd-sans); color: var(--lfd-muted); margin-top: auto; padding-top: 12px; }\n.lfd-bmore { display: flex; justify-content: center; margin-top: 44px; }\n.lfd-bcount { margin-top: 44px; font: 400 13px var(--lfd-sans); color: var(--lfd-muted); text-align: center; }\n\n@media (max-width: 1024px) {\n  .lfd-bgrid { grid-template-columns: repeat(2, 1fr); }\n  .lfd-bfeat__txt { padding: 32px; }\n  .lfd-bfeat__t { font-size: 26px; }\n}\n@media (max-width: 767px) {\n  .lfd-blog-head__h1 { font-size: 34px; }\n  .lfd .lfd-bfeat { flex-direction: column; }\n  .lfd-bfeat__media { flex: 0 0 auto; min-height: 220px; }\n  .lfd-bfeat__txt { padding: 24px; }\n  .lfd-bfeat__t { font-size: 22px; }\n  .lfd-bgrid { grid-template-columns: 1fr; gap: 16px; }\n}\n\n\/* =============================================================================\n   BLOG ARTICLE \u2014 neighbourhoods guide (Blog-Article.dc.html), 2026-09-14.\n   Reuses the article skin; only the callout, the numbered decision questions and the\n   price table are new. background-COLOR only (lazy-load rule).\n   ============================================================================= *\/\n.lfd-art__p--m26 { margin: 26px 0 0; }\n.lfd-art__p--m28 { margin: 28px 0 0; }\n.lfd-art__p--navy { color: var(--lfd-navy); }\n.lfd-art__fig--nb img { aspect-ratio: 16 \/ 9; }\n\n.lfd-nb-callout { margin-top: 26px; border: 1px solid var(--lfd-border); border-left: 3px solid var(--lfd-bronze); border-radius: 12px;\n  padding: 22px 24px; background-color: var(--lfd-cream); }\n.lfd-nb-callout__t { font: 600 16px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-nb-callout__d { font: 400 15px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin-top: 8px; }\n\n.lfd-nb-qs { display: flex; flex-direction: column; gap: 26px; margin-top: 26px; }\n.lfd-nb-q { display: flex; gap: 16px; align-items: flex-start; }\n.lfd-nb-q__n { flex: 0 0 30px; height: 30px; border-radius: 20px; background-color: var(--lfd-navy); color: #fff;\n  font: 600 13px var(--lfd-sans); display: flex; align-items: center; justify-content: center; margin-top: 2px; }\n.lfd-nb-q__b { min-width: 0; }\n.lfd-nb-q__t { font: 600 18px\/1.4 var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-nb-q__a { font: 400 16px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin-top: 8px; }\n.lfd-nb-q__c { font: 400 16px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin-top: 12px; }\n\n\/* price table \u2014 a real <table>; scrolls horizontally inside its own box on small screens *\/\n.lfd-nb-table-wrap { margin-top: 26px; border: 1px solid var(--lfd-border); border-radius: 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; }\n.lfd .lfd-nb-table { width: 100%; min-width: 560px; border-collapse: collapse; margin: 0; }\n.lfd .lfd-nb-table th, .lfd .lfd-nb-table td { text-align: left; vertical-align: top; padding: 15px 16px; border: 0; }\n.lfd .lfd-nb-table thead th { background-color: var(--lfd-navy); font: 500 11px var(--lfd-sans); letter-spacing: 0.1em; text-transform: uppercase;\n  color: rgba(255,255,255,0.55); padding: 14px 16px; }\n.lfd .lfd-nb-table thead th.is-price { color: #fff; }\n.lfd .lfd-nb-table tbody tr { border-top: 1px solid var(--lfd-border); }\n.lfd .lfd-nb-table tbody th { font: 500 14px\/1.6 var(--lfd-sans); color: var(--lfd-navy); background-color: #fff; }\n.lfd .lfd-nb-table tbody td { font: 400 14px\/1.6 var(--lfd-sans); color: var(--lfd-muted); border-left: 1px solid var(--lfd-border); background-color: #fff; }\n.lfd .lfd-nb-table tbody td.is-price { font-weight: 500; color: var(--lfd-forest); background-color: #FBFAF7; white-space: nowrap; }\n\n.lfd-rel--back-only { padding: 56px 0; }\n.lfd-rel--back-only .lfd-rel__back { margin-top: 0; }\n\n\/* =============================================================================\n   BLOG ARTICLE \u2014 furnished vs unfurnished (Blog-Article-Furnished.dc.html), 2026-09-15.\n   Reuses the article skin, `lfd-psum` (short answer), `lfd-cmp` (side by side) and\n   `lfd-nb-callout` (edge case). New: the break-even box and the paired \"Choose \u2026 if\" cards.\n   Values are the design's inline styles. background-COLOR only (lazy-load rule).\n   ============================================================================= *\/\n.lfd-art__lede--m20 { margin: 20px 0 0; }\n.lfd-psum--fv { margin-top: 22px; }\n.lfd-cmp--fv .lfd-cmp__row { grid-template-columns: 1fr 1.3fr 1.3fr; }\n.lfd-art__note { font: 400 13px\/1.7 var(--lfd-sans); color: var(--lfd-muted); margin: 14px 0 0; }\n.lfd-nb-callout--m22 { margin-top: 22px; }\n\n.lfd-fv-calc { margin-top: 26px; background-color: var(--lfd-navy); border-radius: 12px; padding: 30px 32px; }\n.lfd-fv-calc__t { font: 600 18px var(--lfd-serif-display); color: #fff; }\n.lfd-fv-calc__rows { margin-top: 18px; display: flex; flex-direction: column; gap: 14px; }\n.lfd-fv-calc__r { font: 400 15px\/1.6 var(--lfd-sans); color: rgba(255,255,255,0.80); }\n\/* (0-2-1) so it beats `.lfd-art__col strong` (0-1-1), which paints every strong navy *\/\n.lfd-art__col .lfd-fv-calc strong { color: var(--lfd-bronze); font-weight: 600; }\n.lfd-fv-calc__hr { height: 1px; background-color: rgba(255,255,255,0.14); }\n.lfd-fv-calc__n { font: 400 14px\/1.7 var(--lfd-sans); color: rgba(255,255,255,0.65); margin-top: 18px; }\n\n.lfd-fv-who { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin-top: 24px; }\n.lfd-fv-who__card { border: 1px solid var(--lfd-border); border-radius: 12px; padding: 26px 28px; background-color: #fff; }\n.lfd-fv-who__card--f { background-color: #FBFAF7; }\n.lfd-fv-who__t { font: 600 20px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-fv-who__list { display: flex; flex-direction: column; gap: 12px; margin-top: 16px; }\n.lfd-fv-who__i { display: flex; gap: 10px; align-items: flex-start; }\n.lfd-fv-who__i svg { margin-top: 4px; flex-shrink: 0; }\n.lfd-fv-who__i div { font: 400 15px\/1.65 var(--lfd-sans); color: var(--lfd-muted); }\n\n@media (max-width: 767px) {\n  .lfd-fv-calc { padding: 24px 20px; }\n  .lfd-fv-who__card { padding: 22px 20px; }\n}\n\n\/* =============================================================================\n   BLOG ARTICLE \u2014 cost to rent (Blog-Article-Cost.dc.html), 2026-09-15.\n   Reuses the furnished article's pieces; new: the h3, two `lfd-cmp` table variants (4 and 3\n   columns, 16px cell padding) and the numbered \"levers\" variant of `lfd-nb-q`.\n   Values are the design's inline styles. background-COLOR only (lazy-load rule).\n   ============================================================================= *\/\n\/* (0-2-0) so it beats the theme kit's `.elementor-kit-7 h3` (0-1-1) *\/\n.lfd-art__col .lfd-art__h3 { font: 600 20px var(--lfd-serif-display); color: var(--lfd-navy); margin: 36px 0 0; }\n.lfd-art__p--m14 { margin: 14px 0 0; }\n\n.lfd-cmp--cost4 { margin-top: 22px; }\n.lfd-cmp--cost4 .lfd-cmp__row { grid-template-columns: 0.9fr 1fr 1fr 1.6fr; }\n.lfd-cmp--cost3 .lfd-cmp__row { grid-template-columns: 1fr 1.1fr 1.8fr; }\n.lfd-cmp--cost4 .lfd-cmp__h, .lfd-cmp--cost3 .lfd-cmp__h { padding: 14px 16px; }\n.lfd-cmp--cost4 .lfd-cmp__c, .lfd-cmp--cost3 .lfd-cmp__c { padding: 15px 16px; }\n.lfd-cmp__c--sm { font-size: 13px; }\n.lfd-cmp__c--nowrap { white-space: nowrap; }\n\n.lfd-nb-qs--levers { gap: 20px; margin-top: 24px; }\n.lfd-nb-qs--levers .lfd-nb-q__t { font-size: 17px; }\n.lfd-nb-qs--levers .lfd-nb-q__a { margin-top: 6px; }\n\n@media (max-width: 767px) {\n  .lfd-cmp--cost4 .lfd-cmp__row { grid-template-columns: 0.9fr 1fr 1fr 1.4fr; }\n  .lfd-cmp--cost4 .lfd-cmp__h, .lfd-cmp--cost4 .lfd-cmp__c,\n  .lfd-cmp--cost3 .lfd-cmp__h, .lfd-cmp--cost3 .lfd-cmp__c { padding: 12px 8px; }\n  .lfd-cmp__c--nowrap { white-space: normal; }\n}\n\n@media (max-width: 767px) {\n  .lfd .lfd-nb-table th, .lfd .lfd-nb-table td { padding: 12px 12px; }\n  .lfd-nb-q__t { font-size: 17px; }\n}\n\n\/* =============================================================================\n   BLOG ARTICLE \u2014 digital nomad \/ freelancer (Blog-Article-Nomad.dc.html), 2026-09-15.\n   Reuses the cost article's pieces (levers variant for the three conditions). New: the\n   disclaimer and closing notes, visa-path cards, pull quote, \"Where LuxFlat Direct fits\" box,\n   permit sequence, budget cards and pinned area list.\n   Values are the design's inline styles. background-COLOR only (lazy-load rule).\n   ============================================================================= *\/\n.lfd-nm-m24 { margin: 24px 0 0; }\n.lfd-nm-m32 { margin: 32px 0 0; }\n\n.lfd-nm-note { display: flex; gap: 12px; align-items: flex-start; border: 1px solid #E0CFA8; border-left: 3px solid var(--lfd-bronze);\n  border-radius: 12px; padding: 22px 24px; background-color: #FBF6EC; }\n.lfd-nm-note svg { margin-top: 3px; flex-shrink: 0; }\n.lfd-nm-note__t { font: 600 16px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-nm-note__d { font: 400 15px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin-top: 8px; }\n\n.lfd-nm-paths { display: flex; flex-direction: column; gap: 16px; margin-top: 24px; }\n.lfd-nm-path { border: 1px solid var(--lfd-border); border-radius: 12px; padding: 22px 24px; background-color: #FBFAF7; }\n.lfd-nm-path__k { font: 500 10px var(--lfd-sans); letter-spacing: 0.12em; text-transform: uppercase; color: var(--lfd-bronze); }\n.lfd-nm-path__t { font: 600 18px var(--lfd-serif-display); color: var(--lfd-navy); margin-top: 6px; }\n.lfd-nm-path__d { font: 400 15px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin-top: 10px; }\n\n.lfd-nm-quote { margin-top: 28px; border-left: 3px solid var(--lfd-navy); padding: 6px 0 6px 24px; }\n.lfd-nm-quote__t { font: 600 24px\/1.45 var(--lfd-serif-display); color: var(--lfd-navy); text-wrap: pretty; }\n.lfd-nm-quote__d { font: 400 15px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin-top: 12px; }\n\n.lfd-nm-fit { margin-top: 32px; border: 1px solid var(--lfd-border); border-radius: 12px; padding: 26px 28px; background-color: var(--lfd-cream); }\n.lfd-nm-fit__t { font: 600 19px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-nm-fit__d { font: 400 16px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin-top: 10px; }\n.lfd-nm-fit__d--m14 { margin-top: 14px; }\n.lfd-nm-fit__cta { margin-top: 18px; }\n\/* (0-3-1), later in the file, so it beats `.lfd .lfd-art__col a` and its :hover *\/\n.lfd .lfd-art__col a.lfd-nm-fit__btn { display: inline-flex; align-items: center; gap: 8px; background-color: var(--lfd-bronze); color: #fff;\n  border-radius: 8px; padding: 12px 22px; font: 500 14px var(--lfd-sans); text-decoration: none; }\n.lfd .lfd-art__col a.lfd-nm-fit__btn:hover { background-color: var(--lfd-navy); color: #fff; }\n\n.lfd-nm-seq { margin-top: 26px; border: 1px solid var(--lfd-border); border-radius: 12px; overflow: hidden; }\n.lfd-nm-seq__h { background-color: var(--lfd-navy); padding: 14px 18px; font: 500 11px var(--lfd-sans); letter-spacing: 0.1em;\n  text-transform: uppercase; color: #fff; }\n.lfd-nm-seq__r { display: flex; gap: 14px; align-items: flex-start; padding: 15px 18px; border-top: 1px solid var(--lfd-border); }\n.lfd-nm-seq__n { flex: 0 0 24px; height: 24px; border-radius: 20px; background-color: var(--lfd-cream); border: 1px solid var(--lfd-border);\n  color: var(--lfd-navy); font: 600 12px var(--lfd-sans); display: flex; align-items: center; justify-content: center; box-sizing: border-box; }\n.lfd-nm-seq__d { font: 400 15px\/1.65 var(--lfd-sans); color: var(--lfd-muted); min-width: 0; }\n\n.lfd-nm-costs { display: flex; flex-direction: column; gap: 18px; margin-top: 24px; }\n.lfd-nm-cost { border: 1px solid var(--lfd-border); border-radius: 12px; padding: 20px 22px; }\n.lfd-nm-cost__top { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; flex-wrap: wrap; }\n.lfd-nm-cost__t { font: 600 17px var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-nm-cost__fig { font: 600 15px var(--lfd-sans); color: var(--lfd-forest); white-space: nowrap; }\n.lfd-nm-cost__d { font: 400 15px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin-top: 8px; }\n\n.lfd-nm-areas { display: flex; flex-direction: column; gap: 18px; margin-top: 24px; }\n.lfd-nm-area { display: flex; gap: 16px; align-items: flex-start; }\n.lfd-nm-area svg { margin-top: 5px; flex-shrink: 0; }\n.lfd-nm-area__b { min-width: 0; }\n.lfd-nm-area__t { font: 600 17px\/1.4 var(--lfd-serif-display); color: var(--lfd-navy); }\n.lfd-nm-area__d { font: 400 16px\/1.75 var(--lfd-sans); color: var(--lfd-muted); margin-top: 6px; }\n\n.lfd-nm-foot { margin-top: 36px; border: 1px solid #E0CFA8; border-radius: 12px; padding: 20px 24px; background-color: #FBF6EC;\n  font: 400 14px\/1.7 var(--lfd-sans); color: var(--lfd-muted); }\n\n@media (max-width: 767px) {\n  .lfd-nm-note, .lfd-nm-path { padding: 20px; }\n  .lfd-nm-quote__t { font-size: 21px; }\n  .lfd-nm-fit { padding: 22px 20px; }\n  .lfd .lfd-art__col a.lfd-nm-fit__btn { display: flex; justify-content: center; text-align: center; }\n}\n\n<\/style>\n<script>\n\/* ==========================================================================\n   LuxFlat Direct \u2014 shared page behaviour\n   Replaces the Claude Design DC runtime (support.js \/ image-slot.js \/ DCLogic)\n   with plain vanilla JS. Loaded ONCE per page.\n\n   Provides:\n     - FAQ accordions            [data-lfd-faq]        (all four pages; the attribute\n                                                        value names the block class)\n     - Tenant\/landlord toggle    [data-lfd-toggle]     (how-it-works)  \u2014 replaces state.tab\n     - Help article filtering    [data-lfd-help-search] (help-centre)\n   Idempotent: safe to run twice (guards against double-binding).\n   ========================================================================== *\/\n(function () {\n  'use strict';\n\n  var BOUND = 'lfdBound';\n\n  function ready(fn) {\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', fn);\n    } else {\n      fn();\n    }\n  }\n\n  \/* ---------------------------------------------------------------- FAQ --\n     Markup contract:\n       <div data-lfd-faq>                        <- block class defaults to \"lfd-faq\"\n         <div class=\"lfd-faq__item is-open\">\n           <button class=\"lfd-faq__q\" aria-expanded=\"true\" aria-controls=\"ID\">\u2026<\/button>\n           <div class=\"lfd-faq__a\" id=\"ID\" role=\"region\">\u2026<\/div>\n         <\/div>\n       <\/div>\n     The attribute VALUE overrides the block class, so a page can carry a second,\n     visually different accordion without forking this function:\n       <div class=\"lfd-hfaq\" data-lfd-faq=\"lfd-hfaq\">  <- help-centre's design has a\n     leading doc icon and a chevron that rotates 90deg rather than 180deg, so it is a\n     separate component from the `.lfd-faq` the other three pages use.\n     Mirrors the DC behaviour: openIndex starts at 0, clicking an open item\n     closes it (openIndex -> -1). Single-open, like the original.\n  ---------------------------------------------------------------------- *\/\n  function initFaq(root) {\n    if (root[BOUND]) { return; }\n    root[BOUND] = true;\n\n    var block = root.getAttribute('data-lfd-faq') || 'lfd-faq';\n    var items = Array.prototype.slice.call(root.querySelectorAll('.' + block + '__item'));\n\n    function setOpen(item, open) {\n      item.classList.toggle('is-open', open);\n      var btn = item.querySelector('.' + block + '__q');\n      if (btn) { btn.setAttribute('aria-expanded', open ? 'true' : 'false'); }\n    }\n\n    items.forEach(function (item) {\n      var btn = item.querySelector('.' + block + '__q');\n      if (!btn) { return; }\n      btn.addEventListener('click', function () {\n        var isOpen = item.classList.contains('is-open');\n        items.forEach(function (other) { setOpen(other, false); });\n        setOpen(item, !isOpen);\n      });\n    });\n  }\n\n  \/* ------------------------------------------------- tenant\/landlord tabs --\n     Markup contract:\n       <div data-lfd-toggle>\n         <button role=\"tab\" aria-selected=\"true\"  aria-controls=\"panel-tenant\">\u2026<\/button>\n         <button role=\"tab\" aria-selected=\"false\" aria-controls=\"panel-landlord\">\u2026<\/button>\n       <\/div>\n       <div id=\"panel-tenant\">\u2026<\/div>\n       <div id=\"panel-landlord\" hidden>\u2026<\/div>\n     Replaces how-it-works' DCLogic `state.tab`. Also supports ?tab=landlord\n     in the URL and full keyboard arrow-key navigation.\n  ---------------------------------------------------------------------- *\/\n  function initToggle(root) {\n    if (root[BOUND]) { return; }\n    root[BOUND] = true;\n\n    var tabs = Array.prototype.slice.call(root.querySelectorAll('[role=\"tab\"]'));\n    if (!tabs.length) { return; }\n\n    function panelFor(tab) {\n      var id = tab.getAttribute('aria-controls');\n      return id ? document.getElementById(id) : null;\n    }\n\n    function select(tab, focus) {\n      tabs.forEach(function (t) {\n        var on = t === tab;\n        t.setAttribute('aria-selected', on ? 'true' : 'false');\n        t.setAttribute('tabindex', on ? '0' : '-1');\n        var p = panelFor(t);\n        if (p) { p.hidden = !on; }\n      });\n      if (focus) { tab.focus(); }\n    }\n\n    tabs.forEach(function (tab, i) {\n      tab.addEventListener('click', function () { select(tab, false); });\n      tab.addEventListener('keydown', function (e) {\n        var next = null;\n        if (e.key === 'ArrowRight' || e.key === 'ArrowDown') { next = tabs[(i + 1) % tabs.length]; }\n        if (e.key === 'ArrowLeft'  || e.key === 'ArrowUp')   { next = tabs[(i - 1 + tabs.length) % tabs.length]; }\n        if (e.key === 'Home') { next = tabs[0]; }\n        if (e.key === 'End')  { next = tabs[tabs.length - 1]; }\n        if (next) { e.preventDefault(); select(next, true); }\n      });\n    });\n\n    \/\/ Deep-link support: \/how-it-works\/?tab=landlord\n    var want = null;\n    try { want = new URLSearchParams(window.location.search).get('tab'); } catch (err) { want = null; }\n    var initial = null;\n    if (want) {\n      initial = tabs.filter(function (t) { return t.getAttribute('data-lfd-tab') === want; })[0] || null;\n    }\n    select(initial || tabs.filter(function (t) { return t.getAttribute('aria-selected') === 'true'; })[0] || tabs[0], false);\n  }\n\n  \/* ------------------------------------------------- help article search --\n     Markup contract:\n       <input data-lfd-help-search data-lfd-target=\"help-results\">\n       <section data-lfd-filter-group>\n         <div class=\"lfd-tcard\" data-lfd-filter-item data-lfd-terms=\"extra keywords\">\u2026<\/div>\n         \u2026\n       <\/section>\n       <p class=\"lfd-noresults\" hidden>\u2026<span data-lfd-query><\/span>\u2026<\/p>\n     Client-side filtering over the topic cards AND the FAQ rows already in the page \u2014\n     each row's question and answer text is in the DOM, so it is part of the haystack.\n     No backend, and deliberately NOT the property-listings search: this searches the\n     help content on this page only. The no-results note must sit OUTSIDE every\n     [data-lfd-filter-group], or it gets hidden along with the group it lives in.\n  ---------------------------------------------------------------------- *\/\n  \/\/ ---------------------------------------------------------------------------\n  \/\/ Cross-page help index. \/help\/ only has the 8 sample FAQs in its own DOM, so\n  \/\/ questions that live on a CATEGORY page cannot be found by a pure DOM filter.\n  \/\/ A small hidden JSON array on \/help\/ carries {q, cat, snippet, url} for those,\n  \/\/ and matches are rendered as links into `[data-lfd-xres]`. Deliberately NOT the\n  \/\/ full answer text \u2014 matching + a preview only, so \/help\/'s DOM stays small.\n  function readHelpIndex() {\n    var node = document.querySelector('script[type=\"application\/json\"][data-lfd-help-index]');\n    if (!node) { return []; }\n    try { return JSON.parse(node.textContent) || []; } catch (e) { return []; }\n  }\n\n  function renderIndexResults(box, entries) {\n    if (!box) { return; }\n    if (!entries.length) { box.innerHTML = ''; box.hidden = true; return; }\n    var html = '';\n    for (var i = 0; i < entries.length; i++) {\n      var e = entries[i];\n      html += '<a class=\"lfd-xres__item\" href=\"' + e.url + '\">'\n            +   '<span class=\"lfd-xres__cat\">' + (e.category || 'Help') + '<\/span>'\n            +   '<span class=\"lfd-xres__q\">' + e.question + '<\/span>'\n            +   '<span class=\"lfd-xres__s\">' + (e.snippet || '') + '<\/span>'\n            + '<\/a>';\n    }\n    box.innerHTML = html;\n    box.hidden = false;\n  }\n\n  function initHelpSearch(input) {\n    if (input[BOUND]) { return; }\n    input[BOUND] = true;\n\n    \/\/ Scope document-wide so each filterable block can live in its own\n    \/\/ Elementor section and still be reordered independently.\n    var targetId = input.getAttribute('data-lfd-target');\n    var scope = (targetId && document.getElementById(targetId)) || document;\n\n    var groups = Array.prototype.slice.call(scope.querySelectorAll('[data-lfd-filter-group]'));\n    if (!groups.length) { groups = Array.prototype.slice.call(document.querySelectorAll('[data-lfd-filter-group]')); }\n    var empty = scope.querySelector('.lfd-noresults') || document.querySelector('.lfd-noresults');\n    var queryOut = empty ? empty.querySelector('[data-lfd-query]') : null;\n    var index = readHelpIndex();\n    var xbox = document.querySelector('[data-lfd-xres]');\n\n    function haystack(el) {\n      return (el.textContent + ' ' + (el.getAttribute('data-lfd-terms') || '')).toLowerCase();\n    }\n\n    function apply() {\n      var q = input.value.trim().toLowerCase();\n      var total = 0;\n\n      groups.forEach(function (group) {\n        var items = Array.prototype.slice.call(group.querySelectorAll('[data-lfd-filter-item]'));\n        var shown = 0;\n        items.forEach(function (item) {\n          var hit = !q || haystack(item).indexOf(q) !== -1;\n          item.hidden = !hit;\n          if (hit) { shown++; }\n        });\n        total += shown;\n        \/\/ hide a whole section (heading included) when nothing in it matches\n        group.hidden = q !== '' && shown === 0;\n      });\n\n      \/\/ Cross-page results, shown only once the visitor has typed something \u2014\n      \/\/ with an empty box \/help\/ must look exactly as it always has.\n      var hits = [];\n      if (q && index.length) {\n        for (var i = 0; i < index.length; i++) {\n          var e = index[i];\n          var hay = ((e.question || '') + ' ' + (e.category || '') + ' '\n                     + (e.snippet || '') + ' ' + (e.terms || '')).toLowerCase();\n          if (hay.indexOf(q) !== -1) { hits.push(e); }\n        }\n      }\n      renderIndexResults(xbox, hits);\n      total += hits.length;\n\n      if (empty) {\n        empty.hidden = !(q !== '' && total === 0);\n        if (queryOut) { queryOut.textContent = input.value.trim(); }\n      }\n    }\n\n    input.addEventListener('input', apply);\n    input.addEventListener('search', apply);\n    \/\/ Enter must not reload the page \u2014 this is a client-side filter\n    input.addEventListener('keydown', function (e) {\n      if (e.key === 'Enter') { e.preventDefault(); apply(); }\n    });\n    var form = input.closest('form');\n    if (form) { form.addEventListener('submit', function (e) { e.preventDefault(); apply(); }); }\n\n    apply();\n  }\n\n  \/\/ ---------------------------------------------------------------------------\n  \/\/ Elementor's `tel` field rejects the space character. This is SERVER-side, not\n  \/\/ merely the HTML `pattern` attribute: proved 2026-09-11 by removing `pattern`\n  \/\/ and submitting anyway \u2014 the admin-ajax POST returns 200 carrying the same\n  \/\/ \"accepts only numbers and phone characters\" error, and no Submissions row is\n  \/\/ written. Luxembourg numbers are conventionally written in spaced groups and\n  \/\/ the field's own placeholder is `+352 \u2026`, so a landlord typing their number\n  \/\/ the normal way is blocked on a REQUIRED field of a lead-capture form.\n  \/\/\n  \/\/ Fix: strip whitespace from Elementor tel inputs before Elementor ever reads\n  \/\/ them. `type=\"tel\"` is kept, so mobile still gets the numeric keypad, and the\n  \/\/ user may still type spaces \u2014 they are tidied away on blur and guaranteed gone\n  \/\/ by submit. Only whitespace is touched; +, (), - and the rest are left alone.\n  \/\/\n  \/\/ The submit\/click listeners are on `document` and in the CAPTURE phase on\n  \/\/ purpose. A listener bound to the form itself would be at-target and would run\n  \/\/ AFTER Elementor's own handler, which is registered first \u2014 too late.\n  function stripTelSpaces(scope) {\n    (scope || document).querySelectorAll('input[type=\"tel\"]').forEach(function (el) {\n      var cleaned = el.value.replace(\/[\\s\\u00a0]+\/g, '');\n      if (cleaned !== el.value) { el.value = cleaned; }\n    });\n  }\n\n  function initTelNormalise() {\n    document.querySelectorAll('.elementor-form input[type=\"tel\"]').forEach(function (el) {\n      el.addEventListener('blur', function () { stripTelSpaces(el.form); });\n    });\n    document.addEventListener('submit', function (e) {\n      var form = e.target;\n      if (form && form.classList && form.classList.contains('elementor-form')) {\n        stripTelSpaces(form);\n      }\n    }, true);\n    document.addEventListener('click', function (e) {\n      var btn = e.target && e.target.closest\n        ? e.target.closest('.elementor-form button[type=\"submit\"]') : null;\n      if (btn) { stripTelSpaces(btn.form); }\n    }, true);\n  }\n\n  \/\/ ---------------------------------------------------------------------------\n  \/\/ Deep link into one FAQ row: \/help\/getting-started\/#create-tenant-profile\n  \/\/ opens that row and scrolls to it. The id is on the ITEM (see faq_block), so\n  \/\/ the browser's own anchor jump lands in the right place too; we re-scroll\n  \/\/ after opening because expanding the answer changes the offset.\n  function openFaqFromHash() {\n    var id = (window.location.hash || '').replace('#', '');\n    if (!id) { return; }\n    var item = document.getElementById(id);\n    if (!item || item.className.indexOf('lfd-faq__item') === -1) { return; }\n    if (item.className.indexOf('is-open') === -1) {\n      var btn = item.querySelector('.lfd-faq__q');\n      if (btn) { btn.click(); } else { item.className += ' is-open'; }\n    }\n    \/\/ Positioning is deliberately INSTANT and repeated, not one smooth animation.\n    \/\/ A smooth scroll here gets interrupted: the hero image and webfonts settle\n    \/\/ after the row expands, and the browser abandons the animation mid-flight\n    \/\/ (observed live \u2014 it travelled 16px and stopped). scrollIntoView honours the\n    \/\/ item's own `scroll-margin-top`, so the offset stays in CSS.\n    function place() {\n      try { item.scrollIntoView({ block: 'start' }); }\n      catch (e) { item.scrollIntoView(true); }\n    }\n    function placeSoon() { setTimeout(place, 60); setTimeout(place, 400); }\n    if (document.readyState === 'complete') { placeSoon(); }\n    else { window.addEventListener('load', placeSoon, { once: true }); }\n  }\n\n  ready(function () {\n    document.querySelectorAll('[data-lfd-faq]').forEach(initFaq);\n    document.querySelectorAll('[data-lfd-toggle]').forEach(initToggle);\n    document.querySelectorAll('[data-lfd-help-search]').forEach(initHelpSearch);\n    initTelNormalise();\n    openFaqFromHash();\n    window.addEventListener('hashchange', openFaqFromHash);\n  });\n}());\n\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b16911e e-con-full e-flex e-con e-parent\" data-id=\"b16911e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-89a139a elementor-widget elementor-widget-html\" data-id=\"89a139a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"lfd\">\n  <div class=\"lfd-band lfd-help-hero\">\n    <img fetchpriority=\"high\" src=\"https:\/\/www.luxflat-direct.com\/wp-content\/uploads\/2026\/08\/luxflat-property-exterior-dusk.webp\" alt=\"Maison contemporaine \u00e9clair\u00e9e de l\u2019int\u00e9rieur au cr\u00e9puscule, propos\u00e9e en location directe\" width=\"1600\" height=\"1067\" fetchpriority=\"high\" decoding=\"async\" class=\"lfd-help-hero__img\">\n    <div class=\"lfd-help-hero__scrim\"><\/div>\n    <div class=\"lfd-help-hero__glow\" aria-hidden=\"true\"><\/div>\n    <div class=\"lfd-help-hero__inner\">\n      <p class=\"lfd-eyebrow\">CENTRE D\u2019AIDE<\/p>\n      <h1 class=\"lfd-help-hero__h1\">Comment pouvons-nous vous aider ?<\/h1>\n      <p class=\"lfd-help-hero__p\">Recherchez dans notre centre d\u2019aide ou parcourez les th\u00e8mes ci-dessous.<\/p>\n      <div class=\"lfd-help-search\">\n        <span class=\"lfd-help-search__icon\" aria-hidden=\"true\">\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"rgba(255,255,255,.75)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg>\n        <\/span>\n        <label for=\"lfd-help-q\"\n               style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap\">Rechercher dans les articles d\u2019aide<\/label>\n        <input id=\"lfd-help-q\" type=\"search\" autocomplete=\"off\"\n               placeholder=\"Recherchez un sujet, par ex. \u00ab comment envoyer une demande \u00bb\"\n               data-lfd-help-search>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3b4d3cd e-con-full e-flex e-con e-parent\" data-id=\"3b4d3cd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2166859 elementor-widget elementor-widget-html\" data-id=\"2166859\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"lfd\">\n  <div class=\"lfd-band lfd-band--white\" style=\"padding:96px 0\">\n    <div class=\"lfd-wrap\">\n      <section data-lfd-filter-group>\n        <p class=\"lfd-eyebrow\">PARCOURIR PAR TH\u00c8ME<\/p>\n        <h2 class=\"lfd-h2\" style=\"font-size:32px\">Th\u00e8mes populaires<\/h2>\n        <div class=\"lfd-tcards\"><div class=\"lfd-tcard\" data-lfd-filter-item data-lfd-terms=\"locataire dossier demande emm\u00e9nagement r\u00e9servation candidater candidature contrat signer profil\">\n        <img loading=\"lazy\" src=\"https:\/\/www.luxflat-direct.com\/wp-content\/uploads\/2026\/08\/luxflat-property-exterior-dusk.webp\" alt=\"Maison contemporaine \u00e9clair\u00e9e de l\u2019int\u00e9rieur au cr\u00e9puscule, le type de bien meubl\u00e9 que les locataires louent en direct\" width=\"1600\" height=\"1067\" loading=\"lazy\" decoding=\"async\" class=\"lfd-tcard__img\">\n        <span class=\"lfd-tcard__scrim\"><\/span>\n        <span class=\"lfd-tcard__body\">\n          <h3 class=\"lfd-tcard__t\">Pour les locataires<\/h3>\n          <p class=\"lfd-tcard__d\">Cr\u00e9er votre dossier, envoyer des demandes et signer votre contrat.<\/p>\n        <\/span>\n      <\/div><div class=\"lfd-tcard\" data-lfd-filter-item data-lfd-terms=\"propri\u00e9taire annonce publier bien versement contrat tableau de bord frais dossier r\u00e9servation g\u00e9rer\">\n        <img loading=\"lazy\" src=\"https:\/\/www.luxflat-direct.com\/wp-content\/uploads\/2026\/08\/luxflat-furnished-living-room-kirchberg.webp\" alt=\"S\u00e9jour ouvert et meubl\u00e9 dans un appartement luxembourgeois propos\u00e9 directement par son propri\u00e9taire\" width=\"900\" height=\"600\" loading=\"lazy\" decoding=\"async\" class=\"lfd-tcard__img\">\n        <span class=\"lfd-tcard__scrim\"><\/span>\n        <span class=\"lfd-tcard__body\">\n          <h3 class=\"lfd-tcard__t\">Pour les propri\u00e9taires<\/h3>\n          <p class=\"lfd-tcard__d\">Publier des annonces, examiner les dossiers et g\u00e9rer les r\u00e9servations.<\/p>\n        <\/span>\n      <\/div><\/div>\n        <div class=\"lfd-tiles\"><a class=\"lfd-tile\" href=\"\/fr\/aide\/premiers-pas\/\" style=\"background:#FBF3E0\" data-lfd-filter-item data-lfd-terms=\"compte inscription s\u2019inscrire premiers pas d\u00e9buter nouveau bases\">\n        <span class=\"lfd-tile__ico\"><svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-bronze)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polygon points=\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"\/><\/svg><\/span>\n        <h3 class=\"lfd-tile__t\">Premiers pas<\/h3>\n        <p class=\"lfd-tile__d\">Vous d\u00e9couvrez LuxFlat Direct ? D\u00e9couvrez les bases de la location directe.<\/p>\n      <\/a><a class=\"lfd-tile\" href=\"\/fr\/aide\/paiements-et-tarifs\/\" style=\"background:var(--lfd-cream)\" data-lfd-filter-item data-lfd-terms=\"paiement tarif frais caution loyer facture remboursement co\u00fbt prix facturation inclus charges\">\n        <span class=\"lfd-tile__ico\"><svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-bronze)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\"\/><line x1=\"2\" y1=\"10\" x2=\"22\" y2=\"10\"\/><\/svg><\/span>\n        <h3 class=\"lfd-tile__t\">Paiements &amp; tarifs<\/h3>\n        <p class=\"lfd-tile__d\">Comment fonctionne la tarification, ce qui est inclus, et les questions de facturation.<\/p>\n      <\/a><a class=\"lfd-tile\" href=\"\/fr\/aide\/documents-et-verification\/\" style=\"background:#EDEDDF\" data-lfd-filter-item data-lfd-terms=\"document v\u00e9rification pi\u00e8ce d\u2019identit\u00e9 passeport justificatif de revenus relev\u00e9 bancaire t\u00e9l\u00e9verser v\u00e9rifier dossier\">\n        <span class=\"lfd-tile__ico\"><svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-bronze)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><path d=\"m9 15 2 2 4-4\"\/><\/svg><\/span>\n        <h3 class=\"lfd-tile__t\">Documents &amp; v\u00e9rification<\/h3>\n        <p class=\"lfd-tile__d\">Quels documents fournir et comment fonctionne la v\u00e9rification du dossier.<\/p>\n      <\/a><\/div>\n      <\/section>\n    <\/div>\n  <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e5f3b2b e-con-full e-flex e-con e-parent\" data-id=\"e5f3b2b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-845fcd4 elementor-widget elementor-widget-html\" data-id=\"845fcd4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"lfd\">\n  <div class=\"lfd-band lfd-band--cream\" style=\"padding:96px 0\">\n    <div class=\"lfd-wrap\">\n      <section data-lfd-filter-group>\n        <div style=\"text-align:center\">\n          <p class=\"lfd-eyebrow\">LES PLUS CONSULT\u00c9ES<\/p>\n          <h2 class=\"lfd-h2\" style=\"font-size:32px\">Questions fr\u00e9quentes les plus pos\u00e9es<\/h2>\n        <\/div>\n        <div class=\"lfd-hfaq__row\">\n          <div class=\"lfd-hfaq\" data-lfd-faq=\"lfd-hfaq\"><div class=\"lfd-hfaq__item is-open\" data-lfd-filter-item data-lfd-terms=\"demande r\u00e9servation envoyer candidater message propri\u00e9taire\">\n        <button class=\"lfd-hfaq__q\" type=\"button\" aria-expanded=\"true\" aria-controls=\"lfd-hfaq-0\">\n          <span class=\"lfd-hfaq__ico\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-navy)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><line x1=\"8\" y1=\"13\" x2=\"16\" y2=\"13\"\/><line x1=\"8\" y1=\"17\" x2=\"16\" y2=\"17\"\/><\/svg><\/span>\n          <span class=\"lfd-hfaq__t\">Comment envoyer une demande de r\u00e9servation ?<\/span>\n          <span class=\"lfd-hfaq__chev\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-muted)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\n        <\/button>\n        <div class=\"lfd-hfaq__a\" id=\"lfd-hfaq-0\" role=\"region\">Ouvrez une annonce qui vous pla\u00eet et appuyez sur \u00ab Demander \u00e0 r\u00e9server \u00bb. Ajoutez un court message au propri\u00e9taire, puis envoyez \u2014 aucun paiement n\u2019est pr\u00e9lev\u00e9 tant qu\u2019il n\u2019a pas accept\u00e9.<\/div>\n      <\/div><div class=\"lfd-hfaq__item\" data-lfd-filter-item data-lfd-terms=\"documents locataire candidater pi\u00e8ce d\u2019identit\u00e9 passeport revenus fiche de paie contrat v\u00e9rification\">\n        <button class=\"lfd-hfaq__q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"lfd-hfaq-1\">\n          <span class=\"lfd-hfaq__ico\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-navy)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><line x1=\"8\" y1=\"13\" x2=\"16\" y2=\"13\"\/><line x1=\"8\" y1=\"17\" x2=\"16\" y2=\"17\"\/><\/svg><\/span>\n          <span class=\"lfd-hfaq__t\">Quels documents dois-je fournir pour candidater en tant que locataire ?<\/span>\n          <span class=\"lfd-hfaq__chev\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-muted)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\n        <\/button>\n        <div class=\"lfd-hfaq__a\" id=\"lfd-hfaq-1\" role=\"region\">Une pi\u00e8ce d\u2019identit\u00e9 ou un passeport en cours de validit\u00e9, un justificatif de revenus (fiche de paie ou contrat) et un bref message de pr\u00e9sentation. Les propri\u00e9taires peuvent demander des documents compl\u00e9mentaires selon le bien.<\/div>\n      <\/div><div class=\"lfd-hfaq__item\" data-lfd-filter-item data-lfd-terms=\"co\u00fbt prix annonce propri\u00e9taire frais forfait de service gratuit\">\n        <button class=\"lfd-hfaq__q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"lfd-hfaq-2\">\n          <span class=\"lfd-hfaq__ico\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-navy)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><line x1=\"8\" y1=\"13\" x2=\"16\" y2=\"13\"\/><line x1=\"8\" y1=\"17\" x2=\"16\" y2=\"17\"\/><\/svg><\/span>\n          <span class=\"lfd-hfaq__t\">Combien co\u00fbte la publication d\u2019un bien ?<\/span>\n          <span class=\"lfd-hfaq__chev\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-muted)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\n        <\/button>\n        <div class=\"lfd-hfaq__a\" id=\"lfd-hfaq-2\" role=\"region\">Publier un bien est gratuit. Lorsqu\u2019une r\u00e9servation aboutit, locataires et propri\u00e9taires r\u00e8glent tous deux un forfait de service r\u00e9duit pour la plateforme \u2014 jamais un pourcentage du loyer. Pour les propri\u00e9taires, ce forfait s\u2019\u00e9l\u00e8ve \u00e0 20 % du premier mois de loyer, factur\u00e9 une seule fois.<\/div>\n      <\/div><div class=\"lfd-hfaq__item\" data-lfd-filter-item data-lfd-terms=\"annuler r\u00e9servation demande retirer en attente conditions d\u2019annulation\">\n        <button class=\"lfd-hfaq__q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"lfd-hfaq-3\">\n          <span class=\"lfd-hfaq__ico\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-navy)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><line x1=\"8\" y1=\"13\" x2=\"16\" y2=\"13\"\/><line x1=\"8\" y1=\"17\" x2=\"16\" y2=\"17\"\/><\/svg><\/span>\n          <span class=\"lfd-hfaq__t\">Puis-je annuler une demande de r\u00e9servation ?<\/span>\n          <span class=\"lfd-hfaq__chev\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-muted)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\n        <\/button>\n        <div class=\"lfd-hfaq__a\" id=\"lfd-hfaq-3\" role=\"region\">Oui, vous pouvez annuler \u00e0 tout moment une demande en attente depuis \u00ab Mes demandes \u00bb, tant que le propri\u00e9taire ne l\u2019a pas accept\u00e9e. Une fois accept\u00e9e, consultez les conditions d\u2019annulation de l\u2019annonce.<\/div>\n      <\/div><div class=\"lfd-hfaq__item\" data-lfd-filter-item data-lfd-terms=\"pr\u00e9-validation valid\u00e9 v\u00e9rification dossier profil badge confiance\">\n        <button class=\"lfd-hfaq__q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"lfd-hfaq-4\">\n          <span class=\"lfd-hfaq__ico\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-navy)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><line x1=\"8\" y1=\"13\" x2=\"16\" y2=\"13\"\/><line x1=\"8\" y1=\"17\" x2=\"16\" y2=\"17\"\/><\/svg><\/span>\n          <span class=\"lfd-hfaq__t\">Comment fonctionne la pr\u00e9-validation ?<\/span>\n          <span class=\"lfd-hfaq__chev\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-muted)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\n        <\/button>\n        <div class=\"lfd-hfaq__a\" id=\"lfd-hfaq-4\" role=\"region\">Nous v\u00e9rifions une seule fois votre pi\u00e8ce d\u2019identit\u00e9 et vos justificatifs de revenus, puis ajoutons un badge \u2713 pr\u00e9-valid\u00e9 \u00e0 votre dossier, afin que les propri\u00e9taires puissent accorder leur confiance imm\u00e9diatement.<\/div>\n      <\/div><div class=\"lfd-hfaq__item\" data-lfd-filter-item data-lfd-terms=\"accept\u00e9 propri\u00e9taire contrat signer emm\u00e9nagement \u00e9tapes suivantes caution bail\">\n        <button class=\"lfd-hfaq__q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"lfd-hfaq-5\">\n          <span class=\"lfd-hfaq__ico\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-navy)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><line x1=\"8\" y1=\"13\" x2=\"16\" y2=\"13\"\/><line x1=\"8\" y1=\"17\" x2=\"16\" y2=\"17\"\/><\/svg><\/span>\n          <span class=\"lfd-hfaq__t\">Que se passe-t-il apr\u00e8s l\u2019acceptation de ma demande par un propri\u00e9taire ?<\/span>\n          <span class=\"lfd-hfaq__chev\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-muted)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\n        <\/button>\n        <div class=\"lfd-hfaq__a\" id=\"lfd-hfaq-5\" role=\"region\">Vous recevez une notification et pouvez \u00e9crire directement au propri\u00e9taire pour organiser l\u2019emm\u00e9nagement, la caution et la signature du bail.<\/div>\n      <\/div><div class=\"lfd-hfaq__item\" data-lfd-filter-item data-lfd-terms=\"modifier suspendre annonce propri\u00e9taire g\u00e9rer d\u00e9publier recherche\">\n        <button class=\"lfd-hfaq__q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"lfd-hfaq-6\">\n          <span class=\"lfd-hfaq__ico\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-navy)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><line x1=\"8\" y1=\"13\" x2=\"16\" y2=\"13\"\/><line x1=\"8\" y1=\"17\" x2=\"16\" y2=\"17\"\/><\/svg><\/span>\n          <span class=\"lfd-hfaq__t\">Comment modifier ou suspendre mon annonce ?<\/span>\n          <span class=\"lfd-hfaq__chev\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-muted)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\n        <\/button>\n        <div class=\"lfd-hfaq__a\" id=\"lfd-hfaq-6\" role=\"region\">Rendez-vous dans \u00ab Mes annonces \u00bb, s\u00e9lectionnez le bien, puis utilisez Modifier ou Suspendre. Une annonce suspendue reste enregistr\u00e9e mais n\u2019appara\u00eet plus dans les r\u00e9sultats de recherche.<\/div>\n      <\/div><div class=\"lfd-hfaq__item\" data-lfd-filter-item data-lfd-terms=\"caution prot\u00e9g\u00e9e remboursement garantie argent droit locatif re\u00e7u\">\n        <button class=\"lfd-hfaq__q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"lfd-hfaq-7\">\n          <span class=\"lfd-hfaq__ico\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-navy)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><line x1=\"8\" y1=\"13\" x2=\"16\" y2=\"13\"\/><line x1=\"8\" y1=\"17\" x2=\"16\" y2=\"17\"\/><\/svg><\/span>\n          <span class=\"lfd-hfaq__t\">Ma caution est-elle prot\u00e9g\u00e9e ?<\/span>\n          <span class=\"lfd-hfaq__chev\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--lfd-muted)\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\n        <\/button>\n        <div class=\"lfd-hfaq__a\" id=\"lfd-hfaq-7\" role=\"region\">Les cautions sont vers\u00e9es directement au propri\u00e9taire conform\u00e9ment au droit locatif luxembourgeois et doivent figurer dans votre contrat de location \u2014 nous recommandons de toujours obtenir un re\u00e7u sign\u00e9.<\/div>\n      <\/div><\/div>\n          <div class=\"lfd-phone-col\">\n            <div class=\"lfd-phone\">\n              <div class=\"lfd-phone__bez\">\n                <div class=\"lfd-phone__notch\" aria-hidden=\"true\"><\/div>\n                <div class=\"lfd-phone__screen\">\n                  <div class=\"lfd-phone__hdr\"><div class=\"lfd-phone__hdr-t\">Dossier du candidat<\/div><\/div>\n                  <div class=\"lfd-phone__list\">\n                    <div class=\"lfd-phone__row\">\n                      <span class=\"lfd-phone__av\">S<\/span>\n                      <span class=\"lfd-phone__nm\">Sophie L.<\/span>\n                      <span class=\"lfd-phone__ok\">&#10003;<\/span>\n                    <\/div>\n                    <div class=\"lfd-phone__row\">\n                      <span class=\"lfd-phone__av\">T<\/span>\n                      <span class=\"lfd-phone__nm\">Tom B.<\/span>\n                      <span class=\"lfd-phone__ok\">&#10003;<\/span>\n                    <\/div>\n                  <\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n            <p class=\"lfd-phone__cap\">Obtenez de l\u2019aide directement depuis l\u2019application<\/p>\n          <\/div>\n        <\/div>\n      <\/section>\n      <!-- Cross-page help index: questions that live on a CATEGORY page, which a\n           pure DOM filter over this page could never find. Matching data only \u2014\n           never the full answers \u2014 so \/help\/'s DOM does not grow with every new\n           category. Rendered by initHelpSearch() into .lfd-xres below. -->\n      <script type=\"application\/json\" data-lfd-help-index>[{\"question\": \"How to create a tenant profile on LuxFlat Direct\", \"category\": \"Getting Started\", \"snippet\": \"Sign up, add your details and upload your dossier once to become pre-approved.\", \"terms\": \"profile tenant dossier signup sign up register pre-approved id income documents\", \"url\": \"\/help\/getting-started\/#create-tenant-profile\"}, {\"question\": \"How to list your property as a landlord on LuxFlat Direct\", \"category\": \"Getting Started\", \"snippet\": \"Submit your property, our team confirms the details and prepares the listing.\", \"terms\": \"landlord list listing publish property rent out owner\", \"url\": \"\/help\/getting-started\/#list-your-property\"}, {\"question\": \"Is LuxFlat Direct available outside Luxembourg City?\", \"category\": \"Getting Started\", \"snippet\": \"Yes \u2014 most listings are around Luxembourg City, but the whole country can be listed.\", \"terms\": \"outside city esch differdange region country area location commuter\", \"url\": \"\/help\/getting-started\/#outside-luxembourg-city\"}, {\"question\": \"LuxFlat Direct for interns and expats: what you need to know\", \"category\": \"Getting Started\", \"snippet\": \"Stays from 1 to no limit, furnished, with an internship or work contract as proof.\", \"terms\": \"intern expat internship relocation student furnished short term\", \"url\": \"\/help\/getting-started\/#interns-and-expats\"}, {\"question\": \"What happens if my rental request gets declined?\", \"category\": \"Getting Started\", \"snippet\": \"Your profile stays pre-approved \u2014 send a request to the next property right away.\", \"terms\": \"declined rejected refused request denied\", \"url\": \"\/help\/getting-started\/#request-declined\"}, {\"question\": \"Are utilities included in the rent?\", \"category\": \"Payments & Pricing\", \"snippet\": \"What the monthly rent covers \u2014 electricity, water, heating and service charges.\", \"terms\": \"utilities bills electricity water heating charges included all-inclusive rent\", \"url\": \"\/help\/payments-pricing\/#utilities-included\"}, {\"question\": \"How and when do I pay my rent?\", \"category\": \"Payments & Pricing\", \"snippet\": \"How rent payments work on the platform and when they are due.\", \"terms\": \"pay payment rent monthly method when due how billing invoice\", \"url\": \"\/help\/payments-pricing\/#how-when-pay-rent\"}, {\"question\": \"What fees do landlords pay?\", \"category\": \"Payments & Pricing\", \"snippet\": \"The one-time service fee landlords pay when a tenancy is confirmed.\", \"terms\": \"landlord fees landlord fee commission service charge cost owner percentage\", \"url\": \"\/help\/payments-pricing\/#landlord-fees\"}, {\"question\": \"Is there a deposit, and how is it handled?\", \"category\": \"Payments & Pricing\", \"snippet\": \"Who sets the deposit, when you see it, and how it is returned.\", \"terms\": \"deposit caution guarantee security refund return held amount\", \"url\": \"\/help\/payments-pricing\/#deposit-handling\"}, {\"question\": \"What happens if a payment is late or fails?\", \"category\": \"Payments & Pricing\", \"snippet\": \"What happens and who gets in touch if a rent payment does not go through.\", \"terms\": \"late failed payment missed bounced overdue unpaid problem\", \"url\": \"\/help\/payments-pricing\/#late-failed-payment\"}, {\"question\": \"What documents do I need to create a tenant profile?\", \"category\": \"Documents & Verification\", \"snippet\": \"The two documents a tenant uploads once to build a profile.\", \"terms\": \"tenant documents id identity passport card profile dossier upload required\", \"url\": \"\/help\/documents-verification\/#tenant-documents\"}, {\"question\": \"How does landlord verification work?\", \"category\": \"Documents & Verification\", \"snippet\": \"How our team checks a landlord and the property before a listing goes live.\", \"terms\": \"landlord verification verify owner check entitled let review listing\", \"url\": \"\/help\/documents-verification\/#landlord-verification\"}, {\"question\": \"How long does verification take?\", \"category\": \"Documents & Verification\", \"snippet\": \"How quickly a submitted profile is verified.\", \"terms\": \"verification time how long hours quick fast wait review\", \"url\": \"\/help\/documents-verification\/#verification-time\"}, {\"question\": \"What counts as proof of income for tenants?\", \"category\": \"Documents & Verification\", \"snippet\": \"Which documents are accepted as proof of income.\", \"terms\": \"proof of income payslip payslips salary employment contract work solvency\", \"url\": \"\/help\/documents-verification\/#proof-of-income\"}, {\"question\": \"Do I need a Luxembourg bank account to rent?\", \"category\": \"Documents & Verification\", \"snippet\": \"Whether a Luxembourg bank account is needed to rent.\", \"terms\": \"bank account luxembourg iban bank required banking\", \"url\": \"\/help\/documents-verification\/#bank-account-required\"}, {\"question\": \"What documents does a landlord need to list a property?\", \"category\": \"Documents & Verification\", \"snippet\": \"What a landlord submits to list a property, and who confirms the documents.\", \"terms\": \"landlord documents list property publish form owner paperwork listing\", \"url\": \"\/help\/documents-verification\/#landlord-documents\"}, {\"question\": \"Is my personal data safe when I upload documents?\", \"category\": \"Documents & Verification\", \"snippet\": \"How uploaded documents are stored and who can access them.\", \"terms\": \"data security safe privacy encrypted encryption personal information gdpr upload\", \"url\": \"\/help\/documents-verification\/#data-security\"}]<\/script>\n      <div class=\"lfd-xres\" data-lfd-xres hidden><\/div>\n      <p class=\"lfd-noresults\" hidden>\n        Aucun article d\u2019aide ne correspond \u00e0 &ldquo;<span data-lfd-query><\/span>&rdquo;.\n        Essayez &ldquo;caution&rdquo;, &ldquo;documents&rdquo; ou &ldquo;demande&rdquo; &mdash; ou\n        <a href=\"https:\/\/wa.me\/35227636398\" style=\"color:var(--lfd-bronze)\">\u00e9crivez-nous sur WhatsApp<\/a>.\n      <\/p>\n    <\/div>\n  <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3db130a e-con-full e-flex e-con e-parent\" data-id=\"3db130a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-730b572 elementor-widget elementor-widget-html\" data-id=\"730b572\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"lfd\">\n  <div class=\"lfd-band lfd-support-band\">\n    <img loading=\"lazy\" src=\"https:\/\/www.luxflat-direct.com\/wp-content\/uploads\/2026\/08\/luxflat-property-exterior-dusk.webp\" alt=\"Maison contemporaine \u00e9clair\u00e9e de l\u2019int\u00e9rieur au cr\u00e9puscule, propos\u00e9e en location directe\" width=\"1600\" height=\"1067\" loading=\"lazy\" decoding=\"async\" class=\"lfd-support-band__img\">\n    <div class=\"lfd-support-band__scrim\"><\/div>\n    <div class=\"lfd-support-band__glow\" aria-hidden=\"true\"><\/div>\n    <div class=\"lfd-support-wrap\">\n      <div class=\"lfd-support\">\n        <!-- 2026-09-14, client: real stock portraits instead of the design's S\/M\/J letters.\n             Free Unsplash licence (see manifest). Decorative, so alt=\"\" inside an\n             aria-hidden group \u2014 they are not presented as named staff. -->\n        <div class=\"lfd-support__avs\" aria-hidden=\"true\">\n          <span class=\"lfd-support__av\"><img loading=\"lazy\" src=\"https:\/\/www.luxflat-direct.com\/wp-content\/uploads\/2026\/09\/luxflat-support-avatar-1.webp\" alt=\"\" width=\"240\" height=\"240\" loading=\"lazy\" decoding=\"async\" class=\"lfd-support__av-img\"><\/span>\n          <span class=\"lfd-support__av\"><img loading=\"lazy\" src=\"https:\/\/www.luxflat-direct.com\/wp-content\/uploads\/2026\/09\/luxflat-support-avatar-2.webp\" alt=\"\" width=\"240\" height=\"240\" loading=\"lazy\" decoding=\"async\" class=\"lfd-support__av-img\"><\/span>\n          <span class=\"lfd-support__av\"><img loading=\"lazy\" src=\"https:\/\/www.luxflat-direct.com\/wp-content\/uploads\/2026\/09\/luxflat-support-avatar-3.webp\" alt=\"\" width=\"240\" height=\"240\" loading=\"lazy\" decoding=\"async\" class=\"lfd-support__av-img\"><\/span>\n        <\/div>\n        <p class=\"lfd-support__eyebrow\">Notre \u00e9quipe d\u2019assistance est l\u00e0 pour vous<\/p>\n        <h3 class=\"lfd-support__t\">Besoin d\u2019aide suppl\u00e9mentaire ?<\/h3>\n        <p class=\"lfd-support__d\">Notre \u00e9quipe r\u00e9pond g\u00e9n\u00e9ralement sous 24 heures.<\/p>\n        <p class=\"lfd-support__btns\">\n          <!-- Repointed 2026-09-09 when \/contact\/ went live. It pointed at WHATSAPP only\n               as a placeholder: the design gives this button no href, and until the\n               contact page existed the WhatsApp link was the only real destination. The\n               two buttons then had the SAME href, which made the primary one pointless.\n               They are now genuinely different routes, as the design intends. -->\n          <a class=\"lfd-btn lfd-btn--primary\" href=\"\/fr\/contact\/\">Nous contacter &rarr;<\/a>\n          <a class=\"lfd-btn lfd-btn--whatsapp\" href=\"https:\/\/wa.me\/35227636398\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\" stroke=\"none\" aria-hidden=\"true\"><path d=\"M17.5 14.4c-.3-.15-1.7-.85-2-.95-.25-.1-.45-.15-.65.15-.2.3-.75.95-.9 1.15-.2.2-.35.25-.65.1-1.75-.9-2.9-1.6-4.05-3.65-.3-.55.3-.5.85-1.7.1-.2.05-.35-.05-.5-.1-.15-.65-1.55-.9-2.1-.2-.55-.45-.45-.65-.45-.2 0-.45 0-.65.05-.2.05-.55.2-.85.5-.3.35-1.15 1.1-1.15 2.7 0 1.6 1.15 3.15 1.35 3.4.2.25 2.35 3.6 5.75 4.9 3.4 1.3 3.4.85 4-.2.6-1.05.6-1.95.4-2.15-.15-.15-.35-.25-.65-.35zM12 2a10 10 0 0 0-8.6 15.1L2 22l4.95-1.3A10 10 0 1 0 12 2z\"\/><\/svg>Discuter sur WhatsApp<\/a>\n        <\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1180","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Centre d\u2019aide LuxFlat Direct \u2014 louer en direct<\/title>\n<meta name=\"description\" content=\"Les r\u00e9ponses pour locataires et propri\u00e9taires qui louent en direct au Luxembourg : documents, v\u00e9rification, demandes, contrats et paiements.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.luxflat-direct.com\/fr\/aide\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Centre d\u2019aide LuxFlat Direct \u2014 louer en direct\" \/>\n<meta property=\"og:description\" content=\"Les r\u00e9ponses pour locataires et propri\u00e9taires qui louent en direct au Luxembourg : documents, v\u00e9rification, demandes, contrats et paiements.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.luxflat-direct.com\/fr\/aide\/\" \/>\n<meta property=\"og:site_name\" content=\"LuxFlat Direct\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-24T18:53:53+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/aide\\\/\",\"url\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/aide\\\/\",\"name\":\"Centre d\u2019aide LuxFlat Direct \u2014 louer en direct\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/#website\"},\"datePublished\":\"2026-08-07T09:42:57+00:00\",\"dateModified\":\"2026-09-24T18:53:53+00:00\",\"description\":\"Les r\u00e9ponses pour locataires et propri\u00e9taires qui louent en direct au Luxembourg : documents, v\u00e9rification, demandes, contrats et paiements.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/aide\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/aide\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/aide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/accueil\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/\",\"name\":\"LuxFlat Direct\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/#organization\",\"name\":\"LuxFlat Direct\",\"url\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.luxflat-direct.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/tmp-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.luxflat-direct.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/tmp-logo.jpg\",\"width\":204,\"height\":57,\"caption\":\"LuxFlat Direct\"},\"image\":{\"@id\":\"https:\\\/\\\/www.luxflat-direct.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Centre d\u2019aide LuxFlat Direct \u2014 louer en direct","description":"Les r\u00e9ponses pour locataires et propri\u00e9taires qui louent en direct au Luxembourg : documents, v\u00e9rification, demandes, contrats et paiements.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.luxflat-direct.com\/fr\/aide\/","og_locale":"fr_FR","og_type":"article","og_title":"Centre d\u2019aide LuxFlat Direct \u2014 louer en direct","og_description":"Les r\u00e9ponses pour locataires et propri\u00e9taires qui louent en direct au Luxembourg : documents, v\u00e9rification, demandes, contrats et paiements.","og_url":"https:\/\/www.luxflat-direct.com\/fr\/aide\/","og_site_name":"LuxFlat Direct","article_modified_time":"2026-09-24T18:53:53+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.luxflat-direct.com\/fr\/aide\/","url":"https:\/\/www.luxflat-direct.com\/fr\/aide\/","name":"Centre d\u2019aide LuxFlat Direct \u2014 louer en direct","isPartOf":{"@id":"https:\/\/www.luxflat-direct.com\/fr\/#website"},"datePublished":"2026-08-07T09:42:57+00:00","dateModified":"2026-09-24T18:53:53+00:00","description":"Les r\u00e9ponses pour locataires et propri\u00e9taires qui louent en direct au Luxembourg : documents, v\u00e9rification, demandes, contrats et paiements.","breadcrumb":{"@id":"https:\/\/www.luxflat-direct.com\/fr\/aide\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.luxflat-direct.com\/fr\/aide\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.luxflat-direct.com\/fr\/aide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.luxflat-direct.com\/fr\/accueil\/"},{"@type":"ListItem","position":2,"name":"Aide"}]},{"@type":"WebSite","@id":"https:\/\/www.luxflat-direct.com\/fr\/#website","url":"https:\/\/www.luxflat-direct.com\/fr\/","name":"LuxFlat Direct","description":"","publisher":{"@id":"https:\/\/www.luxflat-direct.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.luxflat-direct.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.luxflat-direct.com\/fr\/#organization","name":"LuxFlat Direct","url":"https:\/\/www.luxflat-direct.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.luxflat-direct.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.luxflat-direct.com\/wp-content\/uploads\/2026\/06\/tmp-logo.jpg","contentUrl":"https:\/\/www.luxflat-direct.com\/wp-content\/uploads\/2026\/06\/tmp-logo.jpg","width":204,"height":57,"caption":"LuxFlat Direct"},"image":{"@id":"https:\/\/www.luxflat-direct.com\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.luxflat-direct.com\/fr\/wp-json\/wp\/v2\/pages\/1180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.luxflat-direct.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.luxflat-direct.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.luxflat-direct.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.luxflat-direct.com\/fr\/wp-json\/wp\/v2\/comments?post=1180"}],"version-history":[{"count":1,"href":"https:\/\/www.luxflat-direct.com\/fr\/wp-json\/wp\/v2\/pages\/1180\/revisions"}],"predecessor-version":[{"id":1425,"href":"https:\/\/www.luxflat-direct.com\/fr\/wp-json\/wp\/v2\/pages\/1180\/revisions\/1425"}],"wp:attachment":[{"href":"https:\/\/www.luxflat-direct.com\/fr\/wp-json\/wp\/v2\/media?parent=1180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}