/* ==========================================================================
   Ellis theme — tokens, base, header/menu, footer, page templates, motion.
   Elementor Site Settings (kit) carries the same values for widgets; theme
   rules use low specificity so per-widget settings in Elementor always win.
   ========================================================================== */
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 400; font-display: swap; src: url(../fonts/cormorant-garamond-latin-400-normal.woff2) format("woff2"); }
@font-face { font-family: "Cormorant Garamond"; font-style: italic; font-weight: 400; font-display: swap; src: url(../fonts/cormorant-garamond-latin-400-italic.woff2) format("woff2"); }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 500; font-display: swap; src: url(../fonts/cormorant-garamond-latin-500-normal.woff2) format("woff2"); }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 600; font-display: swap; src: url(../fonts/cormorant-garamond-latin-600-normal.woff2) format("woff2"); }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 400; font-display: swap; src: url(../fonts/manrope-latin-400-normal.woff2) format("woff2"); }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 500; font-display: swap; src: url(../fonts/manrope-latin-500-normal.woff2) format("woff2"); }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 600; font-display: swap; src: url(../fonts/manrope-latin-600-normal.woff2) format("woff2"); }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 700; font-display: swap; src: url(../fonts/manrope-latin-700-normal.woff2) format("woff2"); }

:root {
	--ellis-bg: #f7f4ef;
	--ellis-surface: #eee8df;
	--ellis-white: #fff;
	--ellis-ink: #1d1c1a;
	--ellis-text: #45413b;
	--ellis-muted: #5e5a54;
	--ellis-line: rgba(29, 28, 26, .14);
	--ellis-accent: #8a6a43;
	--ellis-accent-text: #6f5433;
	--ellis-deep: #1f2321;
	--ellis-tag-new: #2f5b57;
	--ellis-tag-open: #9a4b32;
	--ellis-serif: "Cormorant Garamond", "Iowan Old Style", Georgia, serif;
	--ellis-sans: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
	--ellis-radius: 4px;
	--ellis-ease: cubic-bezier(.22, .61, .36, 1);
	--ellis-ease-out: cubic-bezier(.16, 1, .3, 1);
	--ellis-gutter: 32px;
	--ellis-section: 100px;
	--ellis-header-h: 88px;
}
@media (max-width: 1024px) { :root { --ellis-gutter: 28px; --ellis-section: 72px; --ellis-header-h: 76px; } }
@media (max-width: 767px) { :root { --ellis-gutter: 16px; --ellis-section: 56px; --ellis-header-h: 68px; } }

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--ellis-header-h) + 16px); }
body { margin: 0; background: var(--ellis-bg); color: var(--ellis-text); font: 400 16px/1.7 var(--ellis-sans); -webkit-font-smoothing: antialiased; overflow-x: clip; }
img, svg, video { max-width: 100%; height: auto; }
a { color: var(--ellis-ink); text-underline-offset: .2em; text-decoration-thickness: 1px; }
a:hover { color: var(--ellis-accent-text); }
h1, h2, h3, h4 { font-family: var(--ellis-serif); color: var(--ellis-ink); font-weight: 500; line-height: 1.08; margin: 0 0 .5em; letter-spacing: -.005em; }
h1 { font-size: clamp(44px, 6vw, 76px); font-weight: 400; line-height: 1.02; }
h2 { font-size: clamp(38px, 4.2vw, 58px); line-height: 1.05; }
h3 { font-size: clamp(26px, 2.2vw, 30px); line-height: 1.15; }
p { margin: 0 0 1em; }
:focus-visible { outline: 2px solid var(--ellis-accent); outline-offset: 3px; }
html body .screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
html body .skip-link:focus { position: fixed !important; top: 12px; left: 12px; z-index: 1000; width: auto; height: auto; clip: auto; padding: 12px 18px; background: var(--ellis-ink); color: #fff; border-radius: 999px; }
html body .site-main { display: block; outline: none; }
html body .ellis-wrap { width: 100%; max-width: calc(1320px + var(--ellis-gutter) * 2); margin: 0 auto; padding: 0 var(--ellis-gutter); }
html body .ellis-notice { padding: 16px; background: var(--ellis-surface); border-radius: var(--ellis-radius); }

/* ---------- Header ---------- */
html body .site-header { position: fixed; top: 0; left: 0; right: 0; z-index: 100; color: var(--ellis-ink); transition: background .5s var(--ellis-ease), color .5s var(--ellis-ease), box-shadow .5s var(--ellis-ease), transform .5s var(--ellis-ease); }
html body.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { html body.admin-bar .site-header { top: 46px; } }
html body .site-header__bar { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; height: var(--ellis-header-h); max-width: calc(1320px + var(--ellis-gutter) * 2); margin: 0 auto; padding: 0 var(--ellis-gutter); transition: height .5s var(--ellis-ease); }
html body.has-solid-header .site-header, html body .site-header.is-scrolled { background: rgba(247, 244, 239, .94); -webkit-backdrop-filter: saturate(1.2) blur(12px); backdrop-filter: saturate(1.2) blur(12px); box-shadow: 0 1px 0 var(--ellis-line); }
html body .site-header.is-scrolled .site-header__bar { height: calc(var(--ellis-header-h) - 16px); }
html body.has-overlay-header .site-header:not(.is-scrolled) { color: #fff; }
html body.has-solid-header .site-main { padding-top: var(--ellis-header-h); }
html body .menu-toggle, html body .menu-close { justify-self: start; display: inline-flex; align-items: center; gap: 14px; min-height: 44px; padding: 0 4px 0 0; color: inherit; text-decoration: none; font: 600 14px/1 var(--ellis-sans); letter-spacing: .04em; }
html body .menu-toggle__lines { position: relative; display: inline-block; width: 26px; height: 10px; }
html body .menu-toggle__lines span { position: absolute; left: 0; height: 1.5px; background: currentColor; border-radius: 2px; transition: width .45s var(--ellis-ease), transform .45s var(--ellis-ease); }
html body .menu-toggle__lines span:first-child { top: 0; width: 26px; }
html body .menu-toggle__lines span:last-child { bottom: 0; width: 17px; }
html body .menu-toggle:hover .menu-toggle__lines span:last-child { width: 26px; }
html body .menu-toggle:hover { color: inherit; }
html body .ellis-logo { justify-self: center; color: inherit; text-decoration: none; font: 500 34px/1 var(--ellis-serif); letter-spacing: .06em; padding: 4px 6px; }
html body .ellis-logo:hover { color: inherit; }
html body .ellis-logo--image img { display: block; max-height: 44px; width: auto; }
html body .header-cta { justify-self: end; display: inline-flex; align-items: center; min-height: 44px; padding: 0 22px; border: 1px solid currentColor; border-radius: 999px; color: inherit; text-decoration: none; font: 600 14px/1 var(--ellis-sans); letter-spacing: .02em; transition: background .35s var(--ellis-ease), color .35s var(--ellis-ease), border-color .35s; }
html body .header-cta:hover { background: var(--ellis-ink); border-color: var(--ellis-ink); color: #fff; }
html body.has-overlay-header .site-header:not(.is-scrolled) .header-cta { border-color: rgba(255, 255, 255, .6); }
html body.has-overlay-header .site-header:not(.is-scrolled) .header-cta:hover { background: #fff; color: var(--ellis-ink); border-color: #fff; }
@media (max-width: 560px) {
	html body .menu-toggle__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
	html body .ellis-logo { font-size: 30px; }
	html body .header-cta { padding: 0 16px; font-size: 13px; }
}

/* ---------- Overlay menu ---------- */
html body .site-menu { display: none; }
html body .site-menu:target, html body .site-menu.is-open { display: block; }
html body .site-menu { position: fixed; inset: 0; z-index: 200; background: var(--ellis-deep); color: #f7f4ef; overflow-y: auto; overscroll-behavior: contain; }
html.js body .site-menu { display: block; visibility: hidden; clip-path: inset(0 0 100% 0); transition: clip-path .75s var(--ellis-ease-out), visibility 0s linear .75s; }
html.js body .site-menu.is-open { visibility: visible; clip-path: inset(0 0 0 0); transition: clip-path .75s var(--ellis-ease-out), visibility 0s; }
html body.admin-bar .site-menu { top: 32px; }
@media (max-width: 782px) { html body.admin-bar .site-menu { top: 46px; } }
html body .site-menu__panel { min-height: 100%; display: flex; flex-direction: column; }
html body .site-menu__top { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; height: var(--ellis-header-h); max-width: calc(1320px + var(--ellis-gutter) * 2); width: 100%; margin: 0 auto; padding: 0 var(--ellis-gutter); }
html body .site-menu__top .ellis-logo, html body .site-menu__top .header-cta, html body .menu-close { color: #f7f4ef; }
html body .site-menu__top .header-cta { border-color: rgba(247, 244, 239, .5); }
html body .site-menu__top .header-cta:hover { background: #f7f4ef; color: var(--ellis-deep); }
html body .menu-close__icon { position: relative; width: 26px; height: 26px; }
html body .menu-close__icon::before, html body .menu-close__icon::after { content: ""; position: absolute; left: 0; top: 12px; width: 26px; height: 1.5px; background: currentColor; transform: rotate(45deg); }
html body .menu-close__icon::after { transform: rotate(-45deg); }
html body .site-menu__body { flex: 1; display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); align-items: end; gap: 48px; max-width: calc(1320px + var(--ellis-gutter) * 2); width: 100%; margin: 0 auto; padding: 48px var(--ellis-gutter) 64px; }
html body .site-menu__list { list-style: none; margin: 0; padding: 0; }
html body .site-menu__list li { overflow: hidden; }
html body .site-menu__list a { display: inline-block; padding: 4px 0; color: #f7f4ef; text-decoration: none; font: 400 clamp(46px, 7vw, 92px)/1.04 var(--ellis-serif); letter-spacing: -.01em; transition: color .3s, transform .8s var(--ellis-ease-out); }
html body .site-menu__list a:hover, html body .site-menu__list .current-menu-item > a { color: #d8c3a3; }
html body .site-menu__list .current-menu-item > a::after { content: ""; display: inline-block; width: .16em; height: .16em; margin-left: .25em; border-radius: 50%; background: currentColor; vertical-align: middle; }
html.js body .site-menu .site-menu__list a { transform: translateY(105%); }
html.js body .site-menu.is-open .site-menu__list a { transform: none; transition-delay: calc(.18s + var(--i, 0) * .06s); }
html body .site-menu__aside { padding-bottom: 12px; font-size: 15px; color: rgba(247, 244, 239, .78); opacity: 1; }
html.js body .site-menu .site-menu__aside { opacity: 0; transform: translateY(16px); transition: opacity .6s, transform .8s var(--ellis-ease-out); }
html.js body .site-menu.is-open .site-menu__aside { opacity: 1; transform: none; transition-delay: .5s; }
html body .site-menu__aside a { color: #f7f4ef; text-decoration: none; }
html body .site-menu__aside a:hover { color: #d8c3a3; }
html body .site-menu__more a { font: 400 30px/1.2 var(--ellis-serif); }
html body .site-menu__label { margin: 32px 0 8px; font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #d8c3a3; }
html body .site-menu__contact { line-height: 1.9; }
html body .site-menu .ellis-social a { color: #f7f4ef; }
@media (max-width: 767px) { html body .site-menu__body { grid-template-columns: 1fr; align-items: start; padding-top: 24px; gap: 32px; } }
html.ellis-menu-open, html.ellis-menu-open body { overflow: hidden; }

/* ---------- Elementor sections ---------- */
html body .elementor .ellis-section, html body .ellis-section { position: relative; z-index: 1; background-color: var(--ellis-bg); }
html body .ellis-head { width: 100%; }
html body .ellis-head .elementor-heading-title, html body .ellis-head h2 { margin: 0; }
html body .ellis-lead, html body .ellis-lead p { font-size: 18px; line-height: 1.65; color: var(--ellis-muted); max-width: 60ch; }
html body .ellis-lead p:last-child { margin-bottom: 0; }
html body .ellis-lead--serif, html body .ellis-lead--serif p { font: 400 clamp(24px, 2.2vw, 30px)/1.35 var(--ellis-serif); color: var(--ellis-ink); max-width: 34ch; }
html body .elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* Buttons (Elementor button widget variants; colours come from widget/kit settings) */
html body .ellis-btn .elementor-button { transition: background-color .35s var(--ellis-ease), color .35s var(--ellis-ease), transform .35s var(--ellis-ease); }
html body .ellis-btn--quiet .elementor-button, html body .ellis-btn--quiet-light .elementor-button { position: relative; background-image: linear-gradient(currentColor, currentColor); background-size: 100% 1px; background-position: 0 100%; background-repeat: no-repeat; transition: background-size .5s var(--ellis-ease); }
html body .ellis-btn--quiet .elementor-button:hover, html body .ellis-btn--quiet-light .elementor-button:hover { background-size: 35% 1px; }

/* Hero: full-bleed, sticky so the next section slides over it (works on iOS/Android without background-attachment) */
html body .ellis-hero { position: relative; z-index: 0; overflow: hidden; }
@supports (position: sticky) {
	html body .ellis-hero { position: sticky; top: 0; }
	html body.elementor-editor-active .ellis-hero, html body.elementor-editor-preview .ellis-hero { position: relative; }
}
html body .ellis-hero { min-height: 100vh; min-height: 100svh; }
html body .ellis-hero__content { position: relative; z-index: 2; will-change: transform, opacity; }
html body .ellis-hero__content .elementor-heading-title { text-wrap: balance; text-shadow: 0 2px 40px rgba(0, 0, 0, .18); }
html body .ellis-hero__lead p { color: rgba(255, 255, 255, .92); max-width: 44ch; margin-left: auto; margin-right: auto; font-size: 18px; }
/* Soft scrim behind the hero copy so text stays readable on bright photos (sunsets, sky); the photo stays untouched. */
html body .ellis-hero__content::before { content: ""; position: absolute; z-index: -1; left: 50%; top: 50%; width: min(1100px, 120vw); height: 150%; transform: translate(-50%, -50%); background: radial-gradient(closest-side, rgba(16, 15, 13, .52), rgba(16, 15, 13, .28) 60%, rgba(16, 15, 13, 0)); pointer-events: none; }
html body .ellis-hero__lead p { text-shadow: 0 1px 14px rgba(0, 0, 0, .45); }
html body .ellis-hero__content .elementor-heading-title { text-shadow: 0 2px 30px rgba(0, 0, 0, .35); }
html.js body .ellis-hero { animation: ellisHeroIn 1.8s var(--ellis-ease-out) both; }
html.js body .ellis-hero__content > .elementor-element { animation: ellisRise 1.2s var(--ellis-ease-out) both; }
html.js body .ellis-hero__content > .elementor-element:nth-child(1) { animation-delay: .35s; }
html.js body .ellis-hero__content > .elementor-element:nth-child(2) { animation-delay: .55s; }
html.js body .ellis-hero__content > .elementor-element:nth-child(3) { animation-delay: .72s; }
@keyframes ellisHeroIn { from { clip-path: inset(3% 3% 3% 3% round 8px); } to { clip-path: inset(0 0 0 0 round 0); } }
@keyframes ellisRise { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }

/* Search band overlapping the hero edge */
html body .ellis-search-section { position: relative; z-index: 2; margin-top: -84px; background: linear-gradient(to bottom, transparent 84px, var(--ellis-bg) 84px) !important; }
html body .ellis-search-section > .e-con-inner { position: relative; }
@media (max-width: 767px) { html body .ellis-search-section { margin-top: -56px; background: linear-gradient(to bottom, transparent 56px, var(--ellis-bg) 56px) !important; } }
html body .ellis-search-section + .ellis-section { padding-top: calc(var(--ellis-section) * .75) !important; }

/* Philosophy */
html body .ellis-portrait img, html body .ellis-portrait .elementor-widget-container img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--ellis-radius); display: block; }
html body .ellis-philosophy__media { position: relative; }
@media (min-width: 641px) and (max-width: 1024px) { html body .ellis-portrait img, html body .ellis-portrait .elementor-widget-container img { aspect-ratio: 3 / 2; object-position: 50% 22%; } }
html body .ellis-reveal-img { overflow: hidden; border-radius: var(--ellis-radius); }
html body .ellis-points { border-top: 1px solid var(--ellis-line); padding-top: 24px; }
html body .ellis-points > .elementor-element { flex: 1 1 0; }
html body .ellis-point p { margin: 0; font-size: 14.5px; line-height: 1.55; color: var(--ellis-muted); }
html body .ellis-point strong { display: block; margin-bottom: 4px; font: 500 22px/1.2 var(--ellis-serif); color: var(--ellis-ink); }
html body .ellis-sign p { margin: 0; }
html body .ellis-signature { display: block; font: italic 400 32px/1.1 var(--ellis-serif); color: var(--ellis-ink); }
html body .ellis-signature__role { display: block; margin-top: 6px; font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--ellis-accent-text); }

/* Contact section + cards */
html body .elementor .ellis-contact-section { background-color: var(--ellis-surface); }
html body .ellis-form-card { background: var(--ellis-white); border-radius: var(--ellis-radius); padding: 44px !important; box-shadow: 0 30px 60px -40px rgba(29, 28, 26, .35); }
@media (max-width: 767px) { html body .ellis-form-card { padding: 24px 18px !important; } }
html body .ellis-band, html body .elementor .ellis-band { background-color: var(--ellis-surface); }
html body .ellis-steps__row > .elementor-element { flex: 1 1 0; }
html body .ellis-step { border-top: 1px solid var(--ellis-ink); padding-top: 24px; }
html body .ellis-step h3 { margin-bottom: 10px; }
html body .ellis-step p { color: var(--ellis-muted); }
html body .ellis-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ellis-line); }
html body .ellis-list li { display: flex; justify-content: space-between; gap: 24px; padding: 14px 0; border-bottom: 1px solid var(--ellis-line); color: var(--ellis-ink); }
html body .ellis-list li span { color: var(--ellis-muted); font-size: 14px; }

/* ---------- Page headers ---------- */
html body .ellis-pagehead { position: relative; z-index: 1; }
html body .ellis-pagehead--compact { background: var(--ellis-bg); }
html body .ellis-pagehead--compact .elementor-heading-title { margin: 0; }
html body .ellis-pagehead--image { color: #fff; overflow: hidden; }
html body .ellis-pagehead--image .ellis-lead p, html body .ellis-pagehead--image .ellis-pagehead__intro { color: rgba(255, 255, 255, .9); }
html.js body .ellis-pagehead--image { animation: ellisHeroIn 1.6s var(--ellis-ease-out) both; }
html.js body .ellis-pagehead > .elementor-element, html.js body .ellis-pagehead > .e-con-inner > .elementor-element, html.js body .ellis-pagehead__inner > * { animation: ellisRise 1.1s var(--ellis-ease-out) both; animation-delay: .25s; }
html.js body .ellis-pagehead > .e-con-inner > .elementor-element + .elementor-element, html.js body .ellis-pagehead__inner > * + * { animation-delay: .42s; }
/* Theme-rendered page header (journal, plain pages, neighborhoods) */
html body .ellis-pagehead--theme.ellis-pagehead--compact .ellis-pagehead__inner { padding-top: 64px; padding-bottom: 40px; }
html body .ellis-pagehead--theme.ellis-pagehead--image { display: flex; align-items: flex-end; min-height: 62vh; min-height: 62svh; }
html body .ellis-pagehead--theme.ellis-pagehead--image .ellis-pagehead__inner { position: relative; z-index: 2; padding-top: calc(var(--ellis-header-h) + 80px); padding-bottom: 72px; }
html body .ellis-pagehead__media { position: absolute; inset: 0; }
html body .ellis-pagehead__media img { width: 100%; height: 100%; object-fit: cover; }
html body .ellis-pagehead__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20, 20, 18, .35), rgba(20, 20, 18, .5)); }
html body .ellis-pagehead--theme.ellis-pagehead--image .ellis-pagehead__title { color: #fff; }
html body .ellis-pagehead__title { margin: 0 0 12px; max-width: 18ch; }
html body .ellis-pagehead__intro { margin: 0; font-size: 18px; color: var(--ellis-muted); max-width: 56ch; }
@media (max-width: 767px) { html body .ellis-pagehead--theme.ellis-pagehead--image .ellis-pagehead__inner { padding-bottom: 40px; } html body .ellis-pagehead--theme.ellis-pagehead--compact .ellis-pagehead__inner { padding-top: 40px; } }

/* Results page */
html body .ellis-results-search .ellis-search { margin-top: 8px; }

/* ---------- Journal ---------- */
html body .ellis-journal { padding-top: 40px; padding-bottom: var(--ellis-section); }
html body .ellis-journal-nav { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px 24px; padding-bottom: 24px; margin-bottom: 48px; border-bottom: 1px solid var(--ellis-line); }
html body .ellis-journal-nav__cats { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
html body .ellis-journal-nav__cats a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 16px; border-radius: 999px; border: 1px solid var(--ellis-line); text-decoration: none; font-size: 14px; font-weight: 600; color: var(--ellis-ink); transition: border-color .25s, background .25s; }
html body .ellis-journal-nav__cats a:hover { border-color: var(--ellis-ink); color: var(--ellis-ink); }
html body .ellis-journal-nav__cats a[aria-current] { background: var(--ellis-ink); border-color: var(--ellis-ink); color: #fff; }
html body .ellis-searchform { position: relative; display: flex; align-items: center; width: min(100%, 320px); }
html body .ellis-searchform input[type="search"] { width: 100%; min-height: 44px; padding: 0 48px 0 18px; border: 1px solid var(--ellis-line); border-radius: 999px; background: var(--ellis-white); font: 500 15px var(--ellis-sans); color: var(--ellis-ink); }
html body .ellis-searchform input[type="search"]:focus { outline: none; border-color: var(--ellis-ink); box-shadow: 0 0 0 3px rgba(138, 106, 67, .25); }
html body .ellis-searchform button { padding: 0; position: absolute; right: 4px; top: 50%; transform: translateY(-50%); display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border: 0; border-radius: 999px; background: transparent; color: var(--ellis-ink); cursor: pointer; }
html body .ellis-searchform button:focus-visible { outline-offset: 0; }
html body .ellis-searchform .ellis-icon { width: 20px; height: 20px; }
html body .ellis-post-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 56px 40px; }
@media (max-width: 767px) { html body .ellis-post-grid { grid-template-columns: 1fr; gap: 40px; } }
html body .ellis-post-card { position: relative; }
html body .ellis-post-card--text { border-top: 1px solid var(--ellis-line); padding-top: 28px; }
html body .ellis-post-card--text .ellis-post-card__title { font-size: clamp(28px, 2.6vw, 36px); }
html body .ellis-post-card--text:focus-within { outline: 2px solid var(--ellis-accent); outline-offset: 6px; }
html body .ellis-post-card__media { position: relative; overflow: hidden; border-radius: var(--ellis-radius); aspect-ratio: 3 / 2; background: var(--ellis-surface); }
html body .ellis-post-card__media img, html body .ellis-post-card__media .ellis-ph { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ellis-ease); }
html body .ellis-post-card:hover .ellis-post-card__media img { transform: scale(1.04); }
html body .ellis-post-card__body { padding-top: 20px; }
html body .ellis-post-card__meta { display: flex; gap: 14px; margin: 0 0 8px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ellis-accent-text); }
html body .ellis-post-card__meta time { color: var(--ellis-muted); }
html body .ellis-post-card__title { margin: 0 0 8px; font-size: clamp(26px, 2.3vw, 32px); }
html body .ellis-post-card__title a { text-decoration: none; color: inherit; }
html body .ellis-post-card__title a::after { content: ""; position: absolute; inset: 0; }
html body .ellis-post-card:focus-within .ellis-post-card__media { outline: 2px solid var(--ellis-accent); outline-offset: 4px; }
html body .ellis-post-card__title a:focus-visible { outline: none; }
html body .ellis-post-card__excerpt { margin: 0; color: var(--ellis-muted); }
html body .ellis-pagination ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 64px 0 0; padding: 0; list-style: none; }
html body .ellis-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; height: 44px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--ellis-line); color: var(--ellis-ink); text-decoration: none; font-weight: 600; font-size: 14px; }
html body .ellis-pagination .page-numbers.current { background: var(--ellis-ink); border-color: var(--ellis-ink); color: #fff; }
html body .ellis-pagination a.page-numbers:hover { border-color: var(--ellis-ink); }

/* Article */
html body .ellis-article__inner { max-width: 920px; text-align: center; padding-top: 72px !important; }
html body .ellis-article__inner .ellis-pagehead__title { margin-left: auto; margin-right: auto; max-width: 22ch; }
html body .ellis-article__meta { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; margin: 0 0 18px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ellis-muted); }
html body .ellis-article__meta a { color: var(--ellis-accent-text); text-decoration: none; }
html body .ellis-article__media { margin: 8px auto 0; }
html body .ellis-article__media img { width: 100%; aspect-ratio: 16 / 8; object-fit: cover; border-radius: var(--ellis-radius); display: block; }
html body .ellis-prose-wrap { padding-top: 56px; padding-bottom: var(--ellis-section); }
html body .ellis-prose { max-width: 720px; margin: 0 auto; font-size: 17.5px; line-height: 1.8; }
html body .ellis-prose h2 { font-size: clamp(30px, 3vw, 38px); margin: 1.6em 0 .5em; }
html body .ellis-prose h3 { margin: 1.4em 0 .4em; }
html body .ellis-prose ul, html body .ellis-prose ol { padding-left: 1.3em; }
html body .ellis-prose li { margin-bottom: .4em; }
html body .ellis-prose a { color: var(--ellis-accent-text); }
html body .ellis-prose blockquote { margin: 1.5em 0; padding-left: 24px; border-left: 2px solid var(--ellis-accent); font: italic 400 26px/1.4 var(--ellis-serif); color: var(--ellis-ink); }
html body .post-navigation { max-width: 720px; margin: 64px auto 0; border-top: 1px solid var(--ellis-line); padding-top: 24px; }
html body .post-navigation .nav-links { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
html body .post-navigation .nav-next { text-align: right; }
html body .post-navigation a { text-decoration: none; }
html body .ellis-postnav__label { display: block; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ellis-muted); }
html body .ellis-postnav__title { display: block; margin-top: 6px; font: 500 22px/1.25 var(--ellis-serif); color: var(--ellis-ink); }
html body .ellis-comments { max-width: 720px; margin: 64px auto 0; }
html body .ellis-comments textarea, html body .ellis-comments input[type="text"], html body .ellis-comments input[type="email"], html body .ellis-comments input[type="url"] { width: 100%; padding: 12px 14px; border: 1px solid rgba(29, 28, 26, .28); border-radius: var(--ellis-radius); font: inherit; background: #fff; }
html body .ellis-comments .submit { min-height: 50px; padding: 0 28px; border: 0; border-radius: 999px; background: var(--ellis-ink); color: #fff; font: 600 15px var(--ellis-sans); cursor: pointer; }

/* ---------- Property ---------- */
html body .ellis-property__top { padding-top: 28px; padding-bottom: 20px; }
html body .ellis-backlink { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; text-decoration: none; font-size: 14px; font-weight: 600; color: var(--ellis-ink); }
html body .ellis-backlink .ellis-icon { width: 18px; height: 18px; transition: transform .35s var(--ellis-ease); }
html body .ellis-backlink:hover .ellis-icon { transform: translateX(-4px); }
html body .ellis-gallery { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); grid-template-rows: 1fr 1fr; gap: 12px; height: clamp(360px, 58vw, 680px); }
html body .ellis-gallery--1 { grid-template-columns: 1fr; grid-template-rows: 1fr; }
html body .ellis-gallery--2 { grid-template-rows: 1fr; }
html body .ellis-gallery__item { position: relative; overflow: hidden; border-radius: var(--ellis-radius); background: var(--ellis-surface); display: block; }
html body .ellis-gallery__item--main { grid-row: 1 / -1; }
html body .ellis-gallery__item--more { display: none; }
html body .ellis-gallery__item img, html body .ellis-gallery__item .ellis-ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ellis-ease); }
html body .ellis-gallery__item:hover img { transform: scale(1.035); }
html body .ellis-gallery__count { position: absolute; right: 16px; bottom: 16px; display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px; border-radius: 999px; background: rgba(247, 244, 239, .94); color: var(--ellis-ink); font-size: 13px; font-weight: 600; }
html body .ellis-gallery__count .ellis-icon { width: 16px; height: 16px; }
@media (max-width: 767px) {
	html body .ellis-gallery { grid-template-columns: 1fr 1fr; grid-template-rows: auto auto; height: auto; gap: 8px; }
	html body .ellis-gallery__item--main { grid-column: 1 / -1; grid-row: auto; aspect-ratio: 4 / 3; }
	html body .ellis-gallery__item:not(.ellis-gallery__item--main) { aspect-ratio: 4 / 3; }
	html body .ellis-gallery--1 .ellis-gallery__item--main { aspect-ratio: 4 / 3; }
}
html body .ellis-property__layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, 400px); gap: 72px; padding-top: 48px; padding-bottom: var(--ellis-section); align-items: start; }
@media (max-width: 1024px) { html body .ellis-property__layout { grid-template-columns: minmax(0, 1fr); gap: 48px; padding-top: 32px; } }
html body .ellis-property__head { padding-bottom: 32px; border-bottom: 1px solid var(--ellis-line); }
html body .ellis-property__head .ellis-tags { position: static; margin-bottom: 16px; }
html body .ellis-property__head .ellis-tag--sale, html body .ellis-property__head .ellis-tag--rent { background: var(--ellis-surface); }
html body .ellis-property__title { margin: 0 0 12px; font-size: clamp(40px, 5vw, 64px); font-weight: 400; }
html body .ellis-property__loc { display: flex; align-items: center; gap: 8px; margin: 0 0 18px; color: var(--ellis-muted); }
html body .ellis-property__loc .ellis-icon { width: 18px; height: 18px; color: var(--ellis-accent); }
html body .ellis-property__price { margin: 0 0 24px; font: 500 clamp(28px, 3vw, 36px)/1 var(--ellis-serif); color: var(--ellis-ink); }
html body .ellis-property__head .ellis-facts { font-size: 15px; max-width: 640px; flex-wrap: wrap; row-gap: 12px; }
html body .ellis-property__head .ellis-facts .ellis-icon { width: 22px; height: 22px; }
html body .ellis-property__open { display: flex; gap: 12px; align-items: center; margin: 24px 0 0; padding: 16px 18px; border-radius: var(--ellis-radius); background: rgba(154, 75, 50, .09); color: #6f2f1c; }
html body .ellis-property__open .ellis-icon { color: var(--ellis-tag-open); width: 22px; height: 22px; }
html body .ellis-property__section { padding-top: 40px; }
html body .ellis-property__section h2 { font-size: clamp(30px, 3vw, 38px); }
html body .ellis-property__section .ellis-prose { margin: 0; max-width: 68ch; font-size: 17px; }
html body .ellis-features { columns: 2; column-gap: 40px; list-style: none; margin: 0; padding: 0; }
html body .ellis-features li { break-inside: avoid; position: relative; padding: 10px 0 10px 22px; border-bottom: 1px solid var(--ellis-line); color: var(--ellis-ink); }
html body .ellis-features li::before { content: ""; position: absolute; left: 0; top: 21px; width: 10px; height: 1px; background: var(--ellis-accent); }
@media (max-width: 560px) { html body .ellis-features { columns: 1; } }
html body .ellis-details { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; margin: 0 0 24px; }
html body .ellis-details > div { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--ellis-line); }
html body .ellis-details dt { color: var(--ellis-muted); font-size: 14px; }
html body .ellis-details dd { margin: 0; color: var(--ellis-ink); font-weight: 600; text-align: right; font-size: 14.5px; }
html body .ellis-details--stack { grid-template-columns: 1fr; }
html body .ellis-details--stack > div { flex-direction: column; gap: 2px; }
html body .ellis-details--stack dd { text-align: left; font-weight: 500; }
@media (max-width: 560px) { html body .ellis-details { grid-template-columns: 1fr; } }
html body .ellis-property__disclaimer { margin-top: 40px; font-size: 13px; color: var(--ellis-muted); }
html body .ellis-property__aside { position: sticky; top: calc(var(--ellis-header-h) + 8px); background: var(--ellis-white); border-radius: var(--ellis-radius); padding: 32px; box-shadow: 0 30px 60px -40px rgba(29, 28, 26, .35); }
@media (max-width: 1024px) { html body .ellis-property__aside { position: static; } }
@media (max-width: 767px) { html body .ellis-property__aside { padding: 24px 18px; } }
html body .ellis-aside__title { font-size: 30px; margin: 24px 0 20px; }
html body .ellis-agent-card { display: flex; gap: 16px; align-items: center; padding-bottom: 20px; border-bottom: 1px solid var(--ellis-line); }
html body .ellis-agent-card__photo { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; }
html body .ellis-agent-card p { margin: 0; }
html body .ellis-agent-card__name { font: 500 22px/1.2 var(--ellis-serif); color: var(--ellis-ink); }
html body .ellis-agent-card__role { font-size: 13px; color: var(--ellis-muted); }
html body .ellis-agent-card__phone a { font-size: 14px; font-weight: 600; text-decoration: none; }
html body .ellis-property__aside .ellis-form__grid { grid-template-columns: 1fr; }
html body .ellis-property__aside .ellis-button { width: 100%; }
html body .ellis-related { padding-bottom: var(--ellis-section); }
html body .ellis-related .ellis-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 40px; padding-top: var(--ellis-section); border-top: 1px solid var(--ellis-line); }
html body .ellis-related .ellis-head h2 { margin: 0; }

/* Lightbox */
html body .ellis-lightbox { width: 100vw; height: 100vh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: rgba(18, 18, 16, .96); color: #fff; }
html body .ellis-lightbox::backdrop { background: rgba(18, 18, 16, .9); }
html body .ellis-lightbox[open] { display: grid; grid-template-rows: auto 1fr; }
html body .ellis-lightbox__bar { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; }
html body .ellis-lightbox__count { margin: 0; font-size: 14px; letter-spacing: .06em; }
html body .ellis-lightbox__close, html body .ellis-lightbox__nav { padding: 0; display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border: 1px solid rgba(255, 255, 255, .35); border-radius: 999px; background: rgba(18, 18, 16, .4); color: #fff; cursor: pointer; transition: background .3s; }
html body .ellis-lightbox__close:hover, html body .ellis-lightbox__nav:hover { background: rgba(255, 255, 255, .15); }
html body .ellis-lightbox__stage { margin: 0; display: flex; align-items: center; justify-content: center; padding: 0 84px 32px; min-height: 0; }
html body .ellis-lightbox__stage img { max-width: 100%; max-height: calc(100vh - 120px); object-fit: contain; border-radius: 2px; }
html body .ellis-lightbox__nav { position: absolute; top: 50%; transform: translateY(-50%); }
html body .ellis-lightbox__prev { left: 16px; }
html body .ellis-lightbox__next { right: 16px; }
@media (max-width: 767px) { html body .ellis-lightbox__stage { padding: 0 8px 88px; } html body .ellis-lightbox__nav { top: auto; bottom: 20px; transform: none; } html body .ellis-lightbox__prev { left: calc(50% - 64px); } html body .ellis-lightbox__next { right: calc(50% - 64px); } }

/* Neighborhood single */
html body .ellis-hood-story { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(260px, 1fr); gap: 72px; padding-top: var(--ellis-section); padding-bottom: var(--ellis-section); }
html body .ellis-hood-story .ellis-prose { margin: 0; }
html body .ellis-hood-story__facts h2 { font-size: 30px; }
@media (max-width: 1024px) { html body .ellis-hood-story { grid-template-columns: 1fr; gap: 40px; } }
html body .ellis-band--theme { padding: var(--ellis-section) 0; }
html body .ellis-band__inner { text-align: center; }
html body .ellis-band__inner .ellis-lead { margin: 0 auto 28px; }

/* 404 */
html body .ellis-404 { padding-bottom: var(--ellis-section); }
html body .ellis-404__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 28px; margin-bottom: 40px; }

/* ---------- Footer ---------- */
html body .site-footer { position: relative; z-index: 1; background: var(--ellis-deep); color: rgba(247, 244, 239, .78); padding: 88px 0 40px; font-size: 15px; }
html body .site-footer a { color: #f7f4ef; text-decoration: none; }
html body .site-footer a:hover { color: #d8c3a3; }
html body .site-footer__top { display: grid; grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr)); gap: 48px; padding-bottom: 64px; border-bottom: 1px solid rgba(247, 244, 239, .16); }
html body .site-footer .ellis-logo { display: inline-block; padding: 0; color: #f7f4ef; font-size: 56px; }
html body .site-footer__note { max-width: 34ch; margin-top: 20px; }
html body .site-footer__title { margin: 0 0 18px; font: 600 12px/1.4 var(--ellis-sans); letter-spacing: .12em; text-transform: uppercase; color: #d8c3a3; }
html body .site-footer__list, html body .site-footer .site-menu__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
html body .site-footer .site-menu__list a { font: inherit; }
html body .site-footer__muted { color: rgba(247, 244, 239, .6); font-size: 14px; }
html body .site-footer .ellis-social a { color: #f7f4ef; }
html body .site-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 32px; padding-top: 28px; font-size: 13px; color: rgba(247, 244, 239, .68); }
html body .site-footer__bottom p { margin: 0; }
html body .site-footer__legal-list { display: flex; flex-wrap: wrap; gap: 8px 24px; list-style: none; margin: 0; padding: 0; }
html body .site-footer__eho { flex-basis: 100%; }
@media (max-width: 1024px) { html body .site-footer__top { grid-template-columns: 1fr 1fr; } html body .site-footer__brand { grid-column: 1 / -1; } }
@media (max-width: 560px) { html body .site-footer { padding-top: 64px; } html body .site-footer__top { grid-template-columns: 1fr; gap: 36px; } html body .site-footer .ellis-logo { font-size: 48px; } }

/* ---------- Scroll motion (only when theme.js runs and motion is allowed) ---------- */
html.js-motion body .ellis-reveal, html.js-motion body .ellis-stagger > .elementor-element, html.js-motion body .ellis-stagger > .e-con-inner > .elementor-element { opacity: 0; transform: translateY(32px); transition: opacity 1s var(--ellis-ease-out), transform 1.2s var(--ellis-ease-out); transition-delay: calc(var(--i, 0) * 90ms); }
html.js-motion body .ellis-reveal.is-inview, html.js-motion body .ellis-stagger.is-inview > .elementor-element, html.js-motion body .ellis-stagger.is-inview > .e-con-inner > .elementor-element { opacity: 1; transform: none; }
html.js-motion body .ellis-reveal-img img { clip-path: inset(0 0 100% 0); transform: scale(1.12); transition: clip-path 1.4s var(--ellis-ease-out), transform 1.8s var(--ellis-ease-out); }
html.js-motion body .ellis-reveal-img.is-inview img { clip-path: inset(0 0 0 0); transform: none; }
html.js-motion body .ellis-card, html.js-motion body .ellis-hood, html.js-motion body .ellis-post-card { opacity: 0; transform: translateY(40px); transition: opacity 1s var(--ellis-ease-out), transform 1.2s var(--ellis-ease-out); transition-delay: calc(var(--i, 0) * 110ms); }
html.js-motion body .ellis-card.is-inview, html.js-motion body .ellis-hood.is-inview, html.js-motion body .ellis-post-card.is-inview { opacity: 1; transform: none; }
html.js-motion body .ellis-card .ellis-card__media img, html.js-motion body .ellis-hood .ellis-hood__media img { transform: scale(1.08); transition: transform 1.6s var(--ellis-ease-out); }
html.js-motion body .ellis-card.is-inview .ellis-card__media img, html.js-motion body .ellis-hood.is-inview .ellis-hood__media img { transform: none; }
html.js-motion body .ellis-card.is-inview:hover .ellis-card__media img { transform: scale(1.045); transition-duration: 1.2s; }
html.js-motion body .ellis-hood.is-inview:hover .ellis-hood__media img { transform: scale(1.06); }
html body.elementor-editor-active .ellis-reveal, html body.elementor-editor-active .ellis-card, html body.elementor-editor-active .ellis-hood, html body.elementor-editor-active .ellis-stagger > .elementor-element, html body.elementor-editor-active .ellis-reveal-img img { opacity: 1 !important; transform: none !important; clip-path: none !important; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
	html body .ellis-hero { position: relative !important; }
}
