/* Native Elementor wrapper defaults. Load after Elementor base CSS and before
   the approved site styles. Source classes supply composition presets; native
   content/media/typography remain editable. See the guide for layout changes. */
.jl-site :where(.jl-document){--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;--widgets-spacing:0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px}
.jl-site :where(.jl-document,.jl-document .e-con){--display:block;--gap:0px;--row-gap:0px;--column-gap:0px;min-width:0}
/* Imported post CSS defines --display:flex and --flex-direction:column on
   every Container. Direct defaults, rather than lower-specificity variables,
   restore ordinary source HTML flow. The approved scoped rules load later at
   matching/higher specificity and set each real flex/grid/column composition. */
.jl-site .jl-document:where([data-jl-native="1"]),.jl-site .jl-document .e-con:where([data-jl-native="1"]){display:block;flex-direction:row;padding:0;margin:0;gap:0;transition:none}
/* Elementor's generic background-overlay ::before is absolute and full-size.
   Clear that baseline so numbered cards and drawn borders retain their own
   source geometry. This does not affect newly added non-project Containers. */
.jl-site .jl-document .e-con:where([data-jl-native="1"])::before{content:none;display:inline;position:static;inset:auto;width:auto;height:auto;opacity:1;mix-blend-mode:normal;border:0;border-radius:0;transform:none;transition:none;pointer-events:none}
.jl-site .e-con{--container-widget-width:auto;--container-widget-flex-grow:0;--container-widget-align-self:initial;--content-width:100%;--width:auto;--position:static}
.jl-site .jl-document{width:100%;max-width:none}
.jl-site .elementor-widget{min-width:0;--kit-widget-spacing:0px}
.jl-site .elementor-widget-text-editor{color:inherit;font-family:inherit;font-weight:inherit}
.jl-site .elementor-heading-title{color:inherit;font-family:Manrope,Inter,Arial,sans-serif;font-weight:600}
.jl-site .elementor-button{color:inherit;font:inherit;letter-spacing:inherit}
.jl-site .elementor-widget-button .elementor-button{background:transparent;padding:0;border:0;border-radius:0;box-shadow:none}
.jl-site .project-tabs .elementor-button{padding:6px 0}
.jl-site :where(.elementor-widget-container,.elementor-button-wrapper){min-width:0}
.jl-site :where(.elementor-widget-text-editor)>.elementor-widget-container>:first-child{margin-top:0}
.jl-site :where(.elementor-widget-text-editor)>.elementor-widget-container>:last-child{margin-bottom:0}

/* Native text wrappers own the source class once. Inline ornaments and their
   source text stay on one line, without duplicating pseudo-elements or spacing. */
.jl-site :where(.eyebrow,.hero-eyebrow,.team-serial,.build-phase,.step-num,.project-arrow).elementor-widget-text-editor>.elementor-widget-container{display:contents}
.jl-site :where(.eyebrow,.hero-eyebrow,.team-serial,.build-phase,.step-num,.project-arrow).elementor-widget-text-editor>.elementor-widget-container>:is(p,span){display:inline;margin:0;font:inherit;letter-spacing:inherit;color:inherit}
.jl-site .brand>.elementor-widget-text-editor{font-family:Manrope,Arial,sans-serif;font-size:16px;letter-spacing:.015em;font-weight:700;white-space:nowrap;line-height:1.1;width:auto}
.jl-site .brand>.elementor-widget-image{flex:none;width:auto}
.jl-site .brand>.elementor-widget-text-editor>.elementor-widget-container{display:contents}
.jl-site .image-caption>.elementor-widget-text-editor{width:auto}
.jl-site .image-caption>.elementor-widget-text-editor:last-child{color:var(--red)}
.jl-site .image-caption .elementor-widget-container>span{font:inherit;letter-spacing:inherit;color:inherit}
.jl-site .nav-desktop>.elementor-widget-button:not(.nav-cta) .elementor-button{padding-block:31px}
.jl-site :is(.nav-desktop,.lang-switch,.mobile-actions,.hero-actions,.build-footer,.footer-bottom)>.elementor-widget{width:auto}
.jl-site :where(.elementor-widget-button) .elementor-button-content-wrapper{align-items:center}
.jl-site :where(.lang-switch) .elementor-button{padding:0;border:0;border-radius:0;background:transparent;font:inherit;line-height:inherit}

/* Images remain real Media Library widgets, including their editable captions. */
.jl-site .hero-img>.elementor-widget-image img{aspect-ratio:4/3;object-fit:cover;position:relative;z-index:1;min-height:360px}
.jl-site .founder-image>.elementor-widget-image img,.jl-site .portrait-square.elementor-widget-image img{aspect-ratio:1/1;object-fit:contain;min-height:0}
.jl-site .steps-img .step>.elementor-widget-image img{aspect-ratio:3/4;object-fit:cover}
.jl-site .pair-imgs>.e-con{min-width:0;position:relative}
.jl-site :is(.pair-imgs,.gallery) .elementor-widget-text-editor:has(>.elementor-widget-container>figcaption){position:absolute;top:12px;left:12px;z-index:2;pointer-events:none;width:auto}
.jl-site :is(.pair-imgs,.gallery) .elementor-widget-text-editor>.elementor-widget-container>figcaption{position:static}
.jl-site .grid+.elementor-widget-text-editor{margin-top:35px}
.jl-site #faq>.container>.elementor-widget-text-editor,.jl-site.page-case #scope>.container>.elementor-widget-text-editor{grid-column:2}
.jl-site.page-case #story .section-head>.elementor-widget-heading{grid-column:1;grid-row:2}

/* These semantic children carry the visual list/table layout. The outer native
   widget keeps the source class for spacing, animation and editor selection. */
.jl-site .bullets.elementor-widget-text-editor{display:block}
.jl-site .bullets.elementor-widget-text-editor>.elementor-widget-container{display:contents}
.jl-site .bullets.elementor-widget-text-editor>.elementor-widget-container>ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 45px;counter-reset:items}
.jl-site.page-case #scope .bullets.elementor-widget-text-editor>.elementor-widget-container>ul,.jl-site.page-contact #wa .bullets.elementor-widget-text-editor>.elementor-widget-container>ul{display:block}
.jl-site .terms.elementor-widget-text-editor> .elementor-widget-container>table{width:100%;border-collapse:collapse;font:inherit;line-height:inherit;margin:0}
.jl-site .pull.elementor-widget-text-editor>.elementor-widget-container>blockquote{padding:0;border:0;margin:0;font:inherit;line-height:inherit;letter-spacing:inherit;color:inherit}
.jl-site .jl-document .project-arrow.elementor-widget-text-editor.elementor-widget{position:absolute;bottom:16px;right:16px;width:44px;height:44px;display:grid;place-items:center;background:var(--paper);color:var(--ink);font-size:24px;z-index:2;transition:background .25s,color .25s}
.jl-site .project-arrow.elementor-widget-text-editor>.elementor-widget-container{display:contents}
.jl-site .project-image-link:focus-visible .project-arrow.elementor-widget-text-editor{color:#fff;background:var(--red)}
@media(hover:hover) and (pointer:fine){.jl-site .project-image-link:hover .project-arrow.elementor-widget-text-editor{color:#fff;background:var(--red)}}

/* Actual native Button controls contain the hamburger; their editable text is
   accessible, and the source's span rules never style Elementor's text wrapper. */
.jl-site .menu-toggle .elementor-button{position:relative;min-height:var(--jl-menu-size,42px)}
.jl-site .menu-toggle .elementor-button-content-wrapper,.jl-site .menu-toggle .elementor-button-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;background:none;transform:none}
.jl-site .menu-toggle .elementor-button::before,.jl-site .menu-toggle .elementor-button::after{content:'';position:absolute;left:calc(50% - 10px);width:20px;height:2px;background:currentColor;transition:transform .2s;pointer-events:none}
.jl-site .menu-toggle .elementor-button::before{top:calc(50% - 5px)}
.jl-site .menu-toggle .elementor-button::after{top:calc(50% + 3px)}
.jl-site.menu-open .menu-toggle .elementor-button::before{transform:translateY(4px) rotate(45deg)}
.jl-site.menu-open .menu-toggle .elementor-button::after{transform:translateY(-4px) rotate(-45deg)}

/* The brief is a native Pro Form. The selected local floor plan never has a
   field name and cannot enter Elementor's upload or form-submission payload. */
.jl-site .jl-brief-shell{display:block}
.jl-site .brief.elementor-widget-form{display:block}
.jl-site .brief .elementor-form-fields-wrapper{display:flex;flex-wrap:wrap;gap:27px 24px;margin:0}
.jl-site .brief .elementor-field-group{padding:0;margin:0;flex:0 0 calc(50% - 12px);max-width:calc(50% - 12px);display:flex;flex-direction:column;align-items:stretch;gap:10px;min-width:0}
.jl-site .brief .elementor-field-group.elementor-col-100{flex-basis:100%;max-width:100%}
.jl-site .brief .elementor-field-label{font-size:11px;font-weight:500;line-height:1.5;padding:0}
.jl-site .brief .elementor-field{border-radius:0;min-height:0}
.jl-site .brief .elementor-field-type-submit{align-items:flex-start}
.jl-site .brief .elementor-button[type=submit]{border:0;border-radius:0;background:var(--red);color:#fff;min-height:52px;font-size:12px;font-weight:500;padding:14px 25px;min-width:180px}
.jl-site .brief .elementor-button[type=submit]::after{content:'↗';margin-left:30px;font-size:20px;line-height:1}
.jl-site .jl-brief-shell>.form-note{margin-top:24px}
.jl-site .jl-brief-shell>.form-status{margin-top:12px}
.jl-site .wa-sticky.elementor-widget-button .elementor-button{padding:0;background:none;color:inherit;border:0;border-radius:0;font:inherit}

@media(min-width:1600px){.jl-site .hero-img>.elementor-widget-image img{min-height:500px}}
@media(max-width:1250px){.jl-site .brand>.elementor-widget-text-editor{font-size:13px}}
@media(max-width:1100px){.jl-site .brand>.elementor-widget-text-editor{font-size:16px}.jl-site .hero-img>.elementor-widget-image img{min-height:350px}.jl-site .steps-img .step>.elementor-widget-image img{aspect-ratio:4/3}}
@media(max-width:760px){.jl-site .brand>.elementor-widget-text-editor{font-size:13px}.jl-site .hero-img>.elementor-widget-image img{min-height:0;aspect-ratio:4/3}.jl-site .steps-img .step>.elementor-widget-image img{aspect-ratio:3/4}.jl-site #faq>.container>.elementor-widget-text-editor{grid-column:1}.jl-site .bullets.elementor-widget-text-editor>.elementor-widget-container>ul{grid-template-columns:1fr;gap:0}.jl-site :is(.pair-imgs,.gallery) .elementor-widget-text-editor:has(>.elementor-widget-container>figcaption){top:8px;left:8px}.jl-site .brief .elementor-form-fields-wrapper{gap:23px 18px}.jl-site .brief .elementor-field-group{flex-basis:calc(50% - 9px);max-width:calc(50% - 9px)}.jl-site .brief .elementor-field-label{font-size:10px}.jl-site .brief .elementor-button[type=submit]{min-width:190px}.jl-site .jl-brief-shell>.form-note{font-size:10px}}
@media(max-width:360px){.jl-site .brand>.elementor-widget-text-editor{font-size:11px}.jl-site .brief .elementor-field-group{flex-basis:100%;max-width:100%}}
/* Editing shows the complete document and never hides content behind motion. */
.jl-site.elementor-editor-active :where(.reveal-target,.studio-tool-entry,.studio-line-image){opacity:1;transform:none;animation:none;transition:none}
.jl-site.elementor-editor-active details.faq:not([open])> :not(summary){display:block}
