/* Nightfall residential kit roles: composition-typography.css + template-layout.css.
   Hero composition remains approved 02. Only hub selectors are scoped here. */
:root{--hub-type-section:48px;--hub-type-subheading:24px;--hub-type-statement:32px;--hub-type-card:20px;--hub-type-body:16px;--hub-type-compact:14px;--hub-type-ui:12px;--hub-type-eyebrow:10px;--hub-font-display:'Tenor Sans',sans-serif;--hub-font-text:Manrope,sans-serif}
body{font-family:var(--hub-font-text);font-synthesis:none;-webkit-font-smoothing:antialiased}
html{scroll-padding-top:calc(var(--hub-header-height,110px) + 24px)}
.hb-intro h2,.parameters-heading h2{font:400 var(--hub-type-section)/1.12 var(--hub-font-display);letter-spacing:-.025em}
.hub-section h3,.hb-tab-list button,.hb-map-point h3,.hb-lifestyle-scene h3,.hb-related-locations.hb-v03 .hb-related h3{font:400 var(--hub-type-card)/1.25 var(--hub-font-display)}
.hub-section .hb-lead,.parameters-body,.hub-section p:not(.hb-eyebrow):not(.hb-lead){font-family:var(--hub-font-text);font-size:var(--hub-type-body);font-weight:400;line-height:1.75}
.hb-eyebrow,.parameters-eyebrow{font:600 var(--hub-type-eyebrow)/1.5 var(--hub-font-text);letter-spacing:.14em}
.hb-button,.hb-text-button,.hb-header-cta,.hb-header-nav button{font-family:var(--hub-font-text);font-size:var(--hub-type-ui);font-weight:500;line-height:1.5}
.hb-tag,.hb-step-number,.hub-section .hb-map-point .hb-item-copy p{font-family:var(--hub-font-text);font-size:var(--hub-type-compact);line-height:1.6}
.hb-detail summary{font:400 var(--hub-type-card)/1.4 var(--hub-font-display);text-align:start}
.hb-intro{max-width:1100px}.hub-section{padding-block:clamp(64px,7vw,160px)}
/* Fixed hero-relative header: same trigger and filled state as residential preview.js. */
.site-header.hb-header{position:fixed;inset:0 0 auto;z-index:30;transition:background .25s,color .25s,border-color .25s,box-shadow .25s;border-bottom:1px solid #ffffff33}
.site-header.hb-header.is-filled{background:var(--paper);color:var(--ink);border-bottom-color:var(--line);box-shadow:0 3px 20px #00000005}
.site-header.hb-header.is-filled .contacts img{filter:brightness(0)}
.hb-header-01:not(.is-filled) .hb-header-cta{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.hb-header.is-filled .hb-header-cta{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.hb-header .brand{min-height:44px}.hb-header .contacts a{min-width:44px;min-height:44px}
.hb-header .hb-language{margin-inline-start:auto}.hb-header-nav{min-width:0;gap:clamp(14px,1.5vw,30px)}
.hb-language{position:relative;flex:none}.hb-language summary{width:44px;min-height:44px;display:grid;place-items:center;cursor:pointer;list-style:none;border:0;background:none}.hb-language summary::-webkit-details-marker{display:none}
.hb-language :is(summary,a)>svg,.hb-language-links>a>svg{width:24px;height:16px;display:block;flex:none;filter:none!important;border:0;stroke:none;fill:none;box-shadow:0 0 0 1px #0000001a}
.hb-language .hb-language-links{position:absolute;inset-block-start:calc(100% + 10px);inset-inline-end:0;display:grid;grid-template-columns:repeat(2,44px);gap:6px;padding:8px;background:var(--paper);color:var(--ink);border:1px solid var(--line);box-shadow:0 14px 35px #0002;z-index:40;animation:hb-reveal .2s ease-out}
.hb-language-links{display:flex;flex-wrap:wrap;gap:6px}.hb-language-links a{width:44px;min-height:44px;display:grid;place-items:center;border:0;background:transparent}.hb-language-links a[aria-current=page]{outline:1px solid currentColor;outline-offset:-5px}.hb-language-links a:hover{background:#65584d12}
.hb-language a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}
.hb-mobile-menu{flex:none}.hb-menu-dialog .hb-language-links{margin-top:8px}
.hb-close{inset-inline-end:12px;inset-inline-start:auto}
.hb-tab-list button,.hb-map-point{text-align:start}
/* Local fonts already used in the four-language residential factory. */
@font-face{font-family:'Nightfall Arabic';src:url('assets/platform/fonts/nightfall-arabic.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:'Nightfall Chinese';src:url('assets/platform/fonts/nightfall-chinese.woff2') format('woff2');font-weight:100 900;font-display:swap}
html:lang(ar){--hub-font-display:'Nightfall Arabic',sans-serif;--hub-font-text:'Nightfall Arabic',sans-serif}
html:lang(zh){--hub-font-display:'Nightfall Chinese',sans-serif;--hub-font-text:'Nightfall Chinese',sans-serif}
html:is(:lang(ar),:lang(zh)) :is(h1,.hero .description,.hero .eyebrow,.hero .actions button,.hb-dialog h2,.hb-form input,.hb-form select,.hb-form label,.hb-quote,.hb-choice,.hb-expert-mini span){font-family:var(--hub-font-text)}
html:is(:lang(ar),:lang(zh)) :is(.district-fact dt,.district-fact dd,.nf-footer .nf-link,.nf-footer .v3-description p){font-family:var(--hub-font-text)!important}
html:lang(ar) :is(.eyebrow,.hb-eyebrow,.parameters-eyebrow){letter-spacing:normal}
html:lang(ar) :is(.hb-button,.hb-text-button,.actions button)>svg{transform:scaleX(-1)}
html:lang(ar) .hb-header-03 .brand{margin-right:0;margin-inline-end:auto}
html:lang(ar) .hb-phone{direction:ltr}html:lang(ar) .hb-phone input{text-align:right}
html:lang(ar) .brand,html:lang(ar) .hb-purchase-brand,html:lang(ar) .hb-footer-brand,html:lang(ar) .v3-mark{direction:ltr}
@media(max-width:1100px){:root{--hub-type-section:40px}.hb-header .hb-header-nav{display:none!important}.hb-header .hb-mobile-menu{display:grid;place-items:center;width:44px;height:44px;min-width:44px;padding:0}.hb-header .hb-mobile-menu svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.4}}
@media(max-width:760px){.site-header.hb-header{display:grid;grid-template-columns:minmax(0,1fr) 44px 44px;gap:0 8px;padding-block:12px}.hb-header .brand{justify-self:start;grid-column:1;grid-row:1}.hb-header .hb-language{grid-column:2;grid-row:1;margin:0}.hb-header .hb-mobile-menu{grid-column:3;grid-row:1}.hb-header .contacts{grid-column:1/-1;grid-row:2;justify-content:flex-end;margin-top:4px;gap:4px}.hb-header .brand>span{font-size:20px}.hb-header .brand small{font-size:7px}.hb-header .hb-header-cta{display:none}.hb-header-03 .hb-header-nav{display:none!important}.hb-header .contacts img{width:21px;height:21px}.hb-header .contacts a{height:44px;width:44px}.hb-header-03 .brand{margin:0}.hero-inner{padding-top:180px}.hb-dialog-copy{padding-top:76px}.hb-tab-list button{font-size:17px}.hb-language-links{max-width:100%}}
@media(max-width:700px){:root{--hub-type-section:32px;--hub-type-subheading:22px;--hub-type-statement:28px;--hub-type-card:20px;--hub-type-body:14px;--hub-type-compact:14px}}
@media(min-width:1920px){:root{--hub-type-section:56px;--hub-type-subheading:28px;--hub-type-statement:38px;--hub-type-card:24px;--hub-type-body:18px;--hub-type-compact:16px;--hub-type-ui:13px;--hub-type-eyebrow:11px}}
@media(min-width:2560px){:root{--hub-type-section:64px;--hub-type-subheading:32px;--hub-type-statement:44px;--hub-type-card:28px;--hub-type-body:20px;--hub-type-compact:18px;--hub-type-ui:14px;--hub-type-eyebrow:12px}}
@media(min-width:3440px){:root{--hub-type-section:72px;--hub-type-subheading:36px;--hub-type-statement:48px;--hub-type-card:30px;--hub-type-body:22px;--hub-type-compact:20px;--hub-type-ui:15px;--hub-type-eyebrow:13px}}
@media(min-width:3840px){:root{--hub-type-section:80px;--hub-type-subheading:40px;--hub-type-statement:52px;--hub-type-card:32px;--hub-type-body:24px;--hub-type-compact:22px;--hub-type-ui:16px;--hub-type-eyebrow:14px}}
@media(prefers-reduced-motion:reduce){.site-header.hb-header{transition:none}.hb-language[open] .hb-language-links{animation:none}}
@media(min-width:1920px){.site-header.hb-header{padding-inline:max(var(--gutter),calc((100vw - 2240px)/2))}}
.hb-footer:is(.hb-v01,.hb-v02) .hb-intro h2{font:400 var(--hub-type-section)/1.12 var(--hub-font-display)}
/* All hub header layouts share the residential transparent → paper colour transition. */
.site-header.hb-header:not(.is-filled){background:transparent;color:var(--paper);box-shadow:none;border-bottom-color:#ffffff33}
.site-header.hb-header:not(.is-filled) .contacts img{filter:brightness(0) invert(1)}
.site-header.hb-header:not(.is-filled) .hb-header-nav{border-top-color:#ffffff33}
.site-header.hb-header:not(.is-filled) .hb-header-cta{background:var(--paper);color:var(--ink);border-color:var(--paper)}
