/* ==========================================================================
claude_modern_001 — deferred (non-critical) styles
Loads async after first paint. Do not put above-fold CSS here.
========================================================================== */

.cm-container {
width: 100%;
max-width: 1320px;
margin: 0 auto;
padding: 0 32px;
}

/* Button variants not needed above fold */
.cm-btn--outline {
background: transparent;
color: var(--cm-black);
border-color: var(--cm-black);
}
.cm-btn--outline:hover { background: var(--cm-black); color: var(--cm-white); }

.cm-btn--light {
color: var(--cm-white);
border-color: rgba(255, 255, 255, 0.6);
}
.cm-btn--light:hover { background: var(--cm-white); color: var(--cm-black); border-color: var(--cm-white); }

.cm-btn--block { width: 100%; }

/* Nav dropdown */
.cm-nav__sub {
position: absolute;
top: calc(100% + 4px);
left: 50%;
transform: translate(-50%, 8px);
min-width: 220px;
background: var(--cm-white);
border: 1px solid var(--cm-grey-200);
box-shadow: var(--cm-shadow-soft);
list-style: none;
margin: 0;
padding: 8px 0;
opacity: 0;
visibility: hidden;
transition: opacity .25s var(--cm-ease), transform .35s var(--cm-ease), visibility .25s;
}

.cm-nav__item--has-children:hover .cm-nav__sub,
.cm-nav__item--has-children:focus-within .cm-nav__sub {
opacity: 1;
visibility: visible;
transform: translate(-50%, 0);
}

.cm-nav__sub-link {
display: block;
padding: 10px 20px;
font-size: 13px;
color: var(--cm-graphite);
text-decoration: none;
transition: color .2s var(--cm-ease), background-color .2s var(--cm-ease);
}

.cm-nav__sub-link:hover { color: var(--cm-black); background: var(--cm-grey-100); }

/* ==========================================================================
Mobile drawer
========================================================================== */
.cm-mobile-nav * { box-sizing: border-box; }
.cm-mobile-nav svg { display: inline-block; vertical-align: middle; fill: currentColor; flex-shrink: 0; }

.cm-mobile-nav {
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: min(420px, 88vw);
background: var(--cm-white);
z-index: 110;
display: flex;
flex-direction: column;
transform: translateX(100%);
transition: transform .5s var(--cm-ease);
overflow-y: auto;
font-family: var(--cm-font-sans);
}

body.cm-nav-open .cm-mobile-nav { transform: translateX(0); }
body.cm-nav-open { overflow: hidden; }

.cm-mobile-nav__head {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px 28px;
border-bottom: 1px solid var(--cm-grey-200);
}

.cm-mobile-nav__brand {
font-family: var(--cm-font-display);
font-size: 16px;
font-weight: 500;
color: var(--cm-black);
letter-spacing: 0.04em;
}

.cm-mobile-nav__close {
height: 40px;
width: auto;
padding: 0 14px;
gap: 10px;
background: transparent;
border: 1px solid var(--cm-grey-200);
color: var(--cm-black);
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
font-family: var(--cm-font-sans);
}

.cm-mobile-nav__close-label {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
line-height: 1;
}

.cm-mobile-nav__close svg { width: 14px; height: 14px; }

.cm-mobile-nav__menu { padding: 16px 0; flex: 1; }

.cm-mobile-nav .cm-nav { flex-direction: column; align-items: stretch; gap: 0; }
.cm-mobile-nav .cm-nav__item { border-bottom: 1px solid var(--cm-grey-100); }
.cm-mobile-nav .cm-nav__link { padding: 18px 28px; justify-content: space-between; font-size: 13px; }
.cm-mobile-nav .cm-nav__link::after { display: none; }

.cm-mobile-nav .cm-nav__sub {
position: static;
transform: none;
display: none;
box-shadow: none;
border: 0;
background: var(--cm-grey-100);
padding: 4px 0 12px;
min-width: 0;
}

.cm-mobile-nav .cm-nav__item--has-children.is-open .cm-nav__sub { display: block; }
.cm-mobile-nav .cm-nav__item--has-children.is-open .cm-nav__chevron { transform: rotate(180deg); }

.cm-mobile-nav .cm-nav__sub-link {
padding: 10px 40px;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.1em;
}

.cm-mobile-nav__foot {
padding: 24px 28px 32px;
border-top: 1px solid var(--cm-grey-200);
display: flex;
flex-direction: column;
gap: 14px;
}

.cm-mobile-nav__phone {
display: inline-flex;
align-items: center;
gap: 10px;
font-size: 14px;
color: var(--cm-ink);
text-decoration: none;
font-weight: 500;
letter-spacing: 0.04em;
}

.cm-mobile-nav__phone svg { width: 14px; height: 14px; flex-shrink: 0; }

.cm-mobile-nav__backdrop {
position: fixed;
inset: 0;
background: rgba(11, 11, 11, 0.4);
z-index: 105;
opacity: 0;
visibility: hidden;
transition: opacity .4s var(--cm-ease), visibility .4s;
}

body.cm-nav-open .cm-mobile-nav__backdrop { opacity: 1; visibility: visible; }

/* ==========================================================================
Footer
========================================================================== */
.cm-footer * { box-sizing: border-box; }
.cm-footer svg { display: inline-block; vertical-align: middle; fill: currentColor; flex-shrink: 0; }

.cm-footer {
background: var(--cm-black);
color: var(--cm-grey-300);
font-family: var(--cm-font-sans);
font-size: 14px;
line-height: 1.7;
}

.cm-footer__main {
padding: 96px 0 64px;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.cm-footer__grid {
display: grid;
grid-template-columns: 1.4fr 1fr 1fr 1fr;
gap: 56px;
}

.cm-footer__col { min-width: 0; }
.cm-footer__col--brand { padding-right: 24px; }
.cm-footer__logo-link { display: inline-block; margin-bottom: 24px; }

.cm-footer__logo { max-height: 60px; width: auto; opacity: 0.9; }

.cm-footer__property {
font-family: var(--cm-font-display);
font-size: 22px;
color: var(--cm-white);
margin: 0 0 8px;
letter-spacing: 0.01em;
}

.cm-footer__meta { margin: 0 0 6px; color: var(--cm-grey-500); font-size: 13px; letter-spacing: 0.02em; }

.cm-footer__title {
color: var(--cm-white);
font-size: 11px;
font-weight: 600;
letter-spacing: 0.22em;
text-transform: uppercase;
margin: 0 0 22px;
}

.cm-footer__list { list-style: none; margin: 0; padding: 0; }
.cm-footer__list li { margin-bottom: 10px; }

.cm-footer__link {
color: var(--cm-grey-300);
text-decoration: none;
transition: color .25s var(--cm-ease);
display: inline-flex;
align-items: center;
gap: 8px;
}

.cm-footer__link svg { width: 12px; height: 12px; color: var(--cm-grey-500); }
.cm-footer__link:hover { color: var(--cm-white); }

.cm-footer__bottom {
padding: 36px 0 44px;
color: var(--cm-grey-500);
font-size: 12px;
letter-spacing: 0.02em;
}

.cm-footer__bottom-grid {
display: grid;
grid-template-columns: 1.4fr 1fr;
gap: 40px;
align-items: start;
}

.cm-footer__legal { line-height: 1.75; color: var(--cm-grey-500); }
.cm-footer__legal :is(p, span) { color: inherit; }
.cm-footer__legal a { color: var(--cm-grey-300); text-decoration: underline; text-underline-offset: 3px; }

.cm-footer__credit-row {
display: flex;
align-items: center;
gap: 24px;
margin-bottom: 18px;
flex-wrap: wrap;
}

.cm-footer__agency img { max-height: 56px; width: auto; opacity: 0.85; }
.cm-footer__links a { color: var(--cm-grey-300); margin-right: 14px; text-decoration: none; transition: color .25s var(--cm-ease); }
.cm-footer__links a:hover { color: var(--cm-white); }

.cm-footer__copyright {
margin: 0;
color: var(--cm-grey-500);
font-size: 11px;
letter-spacing: 0.12em;
text-transform: uppercase;
}

/* ==========================================================================
Back-to-top
========================================================================== */
.cm-back-to-top {
position: fixed;
right: 28px;
bottom: 28px;
width: 44px;
height: 44px;
border: 1px solid var(--cm-black);
background: var(--cm-black);
color: var(--cm-white);
cursor: pointer;
z-index: 90;
opacity: 0;
visibility: hidden;
transform: translateY(8px);
transition: opacity .4s var(--cm-ease), transform .4s var(--cm-ease), visibility .4s, background-color .25s, color .25s;
display: inline-flex;
align-items: center;
justify-content: center;
}

.cm-back-to-top svg { width: 13px; height: 13px; }
.cm-back-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.cm-back-to-top:hover { background: var(--cm-white); color: var(--cm-black); }

/* ==========================================================================
Content — page-builder section rendering
========================================================================== */

.cm-main .page-builder {
max-width: 1320px;
margin: 0 auto;
padding: 64px 32px;
font-family: var(--cm-font-sans);
color: var(--cm-ink);
scroll-margin-top: var(--cm-header-h);
}

.cm-main .page-builder + .page-builder { padding-top: 0; }

.cm-main h1,
.cm-main h2 {
font-family: var(--cm-font-display);
font-size: clamp(28px, 3.4vw, 44px);
font-weight: 500;
color: var(--cm-black);
line-height: 1.2;
margin: 0 0 16px;
}

.cm-main h3 {
font-family: var(--cm-font-display);
font-size: clamp(22px, 2.4vw, 32px);
font-weight: 500;
color: var(--cm-black);
line-height: 1.3;
margin: 0 0 16px;
}

.cm-main h4,
.cm-main h5,
.cm-main h6 { font-family: var(--cm-font-sans); font-weight: 600; color: var(--cm-black); margin: 0 0 12px; }

.cm-main p { font-size: 15px; line-height: 1.75; color: var(--cm-graphite); margin: 0 0 16px; }
.cm-main p:last-child { margin-bottom: 0; }
.cm-main a:not(.cm-btn) { color: var(--cm-black); text-decoration: underline; text-underline-offset: 3px; transition: color .25s var(--cm-ease); }
.cm-main a:not(.cm-btn):hover { color: var(--cm-grey-700); }

.cm-main ul,
.cm-main ol { padding-left: 20px; margin: 0 0 16px; }

.cm-main li { font-size: 15px; line-height: 1.75; color: var(--cm-graphite); margin-bottom: 6px; }

.cm-main blockquote {
border-left: 2px solid var(--cm-black);
margin: 0 0 16px;
padding: 8px 0 8px 24px;
font-family: var(--cm-font-display);
font-size: clamp(18px, 2vw, 24px);
font-weight: 400;
color: var(--cm-ink);
line-height: 1.5;
font-style: italic;
}

.cm-main table { width: 100%; border-collapse: collapse; font-size: 14px; line-height: 1.6; }
.cm-main th,
.cm-main td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--cm-grey-200); color: var(--cm-ink); }
.cm-main th { font-weight: 600; color: var(--cm-black); background: var(--cm-grey-100); }
.cm-main tr:last-child td { border-bottom: none; }
.cm-main hr { border: none; border-top: 1px solid var(--cm-grey-200); margin: 0; }
.cm-main img { max-width: 100%; height: auto; display: block; }
.cm-main iframe { display: block; max-width: 100%; }

.cm-main details { border-bottom: 1px solid var(--cm-grey-200); padding: 16px 0; }
.cm-main details:first-of-type { border-top: 1px solid var(--cm-grey-200); }

.cm-main summary {
font-size: 15px;
font-weight: 500;
color: var(--cm-black);
cursor: pointer;
list-style: none;
display: flex;
justify-content: space-between;
align-items: center;
letter-spacing: 0.01em;
}

.cm-main summary::-webkit-details-marker { display: none; }

.cm-main summary::after {
content: "+";
font-size: 20px;
font-weight: 300;
color: var(--cm-grey-500);
flex-shrink: 0;
transition: transform .35s var(--cm-ease);
}

.cm-main details[open] summary::after { transform: rotate(45deg); }
.cm-main details p { margin-top: 12px; margin-bottom: 0; }
.cm-main strong { font-weight: 600; color: var(--cm-black); }
.cm-main em { font-style: italic; }

/* Dark section — template-agnostic modifier; apply via content editor Class field */
.page-builder--dark h1,
.page-builder--dark h2,
.page-builder--dark h3 { color: var(--cm-white); }
.page-builder--dark p { color: var(--cm-grey-300); }
.page-builder--dark a:not(.cm-btn) { color: var(--cm-grey-300); }
.page-builder--dark a:not(.cm-btn):hover { color: var(--cm-white); }
.page-builder--dark strong { color: var(--cm-white); }

/* ==========================================================================
Responsive — non-critical breakpoints
========================================================================== */
@media (max-width: 900px) {
.cm-footer__grid { grid-template-columns: 1fr 1fr; gap: 40px; }
.cm-footer__col--brand { grid-column: 1 / -1; padding-right: 0; }
.cm-footer__bottom-grid { grid-template-columns: 1fr; }
}

@media (max-width: 600px) {
.cm-container { padding: 0 24px; }
.cm-header__cta { display: none; }
.cm-footer__main { padding: 64px 0 48px; }
.cm-footer__grid { grid-template-columns: 1fr; gap: 36px; }
.cm-footer__property { font-size: 20px; }
.cm-main .page-builder { padding: 40px 24px; }
}

@media (max-width: 1100px) {
.cm-main .page-builder { scroll-margin-top: var(--cm-header-h-sm); }
}

/* ==========================================================================
Hero
========================================================================== */
.cm-hero {
position: relative;
min-height: 100vh;
background: var(--cm-black);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
display: flex;
flex-direction: column;
justify-content: center;
color: var(--cm-white);
overflow: hidden;
}

.cm-hero::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(
    160deg,
    rgba(11, 11, 11, 0.90) 0%,
    rgba(11, 11, 11, 0.78) 50%,
    rgba(11, 11, 11, 0.88) 100%
);
z-index: 1;
}

.cm-hero__inner {
position: relative;
z-index: 2;
padding-top: 96px;
padding-bottom: 128px;
}

.cm-hero__eyebrow {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.28em;
text-transform: uppercase;
color: var(--cm-grey-500);
margin: 0 0 32px;
}

.cm-hero__title {
font-family: var(--cm-font-display);
font-size: clamp(48px, 7vw, 96px);
font-weight: 500;
line-height: 1.05;
color: var(--cm-white);
margin: 0 0 24px;
letter-spacing: -0.01em;
}

.cm-hero__tagline {
font-size: 16px;
font-weight: 300;
color: var(--cm-grey-300);
margin: 0 0 48px;
letter-spacing: 0.03em;
max-width: 480px;
line-height: 1.6;
}

.cm-hero__actions {
display: flex;
align-items: center;
gap: 28px;
flex-wrap: wrap;
}

.cm-hero__link {
font-size: 12px;
font-weight: 500;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--cm-grey-300);
text-decoration: underline;
text-underline-offset: 5px;
text-decoration-color: rgba(255, 255, 255, 0.3);
transition: color .25s var(--cm-ease), text-decoration-color .25s var(--cm-ease);
}

.cm-hero__link:hover {
color: var(--cm-white);
text-decoration-color: var(--cm-white);
}

.cm-hero__scroll-hint {
position: absolute;
bottom: 40px;
left: 50%;
transform: translateX(-50%);
z-index: 2;
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
}

.cm-hero__scroll-line {
display: block;
width: 1px;
height: 48px;
background: linear-gradient(to bottom, var(--cm-grey-700), transparent);
animation: cm-scroll-pulse 2.4s ease-in-out infinite;
}

.cm-hero__scroll-label {
font-size: 9px;
font-weight: 600;
letter-spacing: 0.32em;
text-transform: uppercase;
color: var(--cm-grey-700);
}

@keyframes cm-scroll-pulse {
0%, 100% { opacity: 0.5; }
50% { opacity: 1; }
}

/* ==========================================================================
Key Facts Strip
========================================================================== */
.cm-facts {
border-bottom: 1px solid var(--cm-grey-200);
}

.cm-facts .cm-container {
padding: 0 32px;
}

.cm-facts__list {
list-style: none;
margin: 0;
padding: 0;
display: grid;
grid-template-columns: repeat(5, 1fr);
}

.cm-facts__item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 40px 24px;
border-right: 1px solid var(--cm-grey-200);
gap: 8px;
}

.cm-facts__item:last-child { border-right: none; }

.cm-facts__value {
font-family: var(--cm-font-display);
font-size: clamp(20px, 2.2vw, 28px);
font-weight: 500;
color: var(--cm-black);
letter-spacing: -0.01em;
line-height: 1.1;
}

.cm-facts__label {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--cm-grey-500);
}

/* ==========================================================================
Shared Section Styles
========================================================================== */
.cm-section {
padding: 96px 0;
}

.cm-section--alt {
background: var(--cm-paper);
}

.cm-section__header {
margin-bottom: 56px;
}

.cm-section__header--center {
text-align: center;
max-width: 640px;
margin-left: auto;
margin-right: auto;
}

.cm-section__eyebrow {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.26em;
text-transform: uppercase;
color: var(--cm-grey-500);
margin: 0 0 16px;
}

.cm-section__title {
font-family: var(--cm-font-display);
font-size: clamp(28px, 3.4vw, 44px);
font-weight: 500;
color: var(--cm-black);
line-height: 1.15;
margin: 0 0 16px;
}

.cm-section__intro {
font-size: 16px;
line-height: 1.75;
color: var(--cm-graphite);
margin: 0;
}

.cm-section__two-col {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
align-items: center;
}

.cm-section__col-text .cm-section__eyebrow { margin-bottom: 16px; }
.cm-section__col-text .cm-section__title { margin-bottom: 28px; }

.cm-section__col-text p {
font-size: 15px;
line-height: 1.8;
color: var(--cm-graphite);
margin: 0 0 18px;
}

.cm-section__col-text p:last-child { margin-bottom: 0; }

.cm-section__img {
width: 100%;
height: auto;
display: block;
}

.cm-section__img-caption {
font-size: 11px;
color: var(--cm-grey-500);
letter-spacing: 0.08em;
margin: 10px 0 0;
text-align: right;
}

.cm-section__image-placeholder {
aspect-ratio: 4 / 3;
background: var(--cm-grey-100);
border: 1px solid var(--cm-grey-200);
display: flex;
align-items: center;
justify-content: center;
text-align: center;
color: var(--cm-grey-500);
font-size: 11px;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
line-height: 1.8;
}

/* ==========================================================================
Location Grid
========================================================================== */
.cm-location__grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1px;
background: var(--cm-grey-200);
border: 1px solid var(--cm-grey-200);
}

.cm-location__card {
background: var(--cm-white);
padding: 40px 32px;
}

.cm-section--alt .cm-location__card {
background: var(--cm-paper);
}

.cm-location__icon {
width: 28px;
height: 28px;
margin-bottom: 20px;
color: var(--cm-black);
}

.cm-location__icon svg {
width: 100%;
height: 100%;
display: block;
}

.cm-location__title {
font-family: var(--cm-font-sans);
font-size: 11px;
font-weight: 600;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(--cm-black);
margin: 0 0 10px;
}

.cm-location__body {
font-size: 14px;
line-height: 1.75;
color: var(--cm-graphite);
margin: 0;
}

/* ==========================================================================
Floor Plans Carousel
========================================================================== */
.cm-carousel {
position: relative;
}

.cm-carousel__track {
display: flex;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
gap: 24px;
padding-bottom: 4px;
-ms-overflow-style: none;
scrollbar-width: none;
}

.cm-carousel__track::-webkit-scrollbar { display: none; }

.cm-carousel__slide {
flex: 0 0 calc(50% - 12px);
scroll-snap-align: start;
}

.cm-carousel__img {
width: 100%;
height: auto;
display: block;
background: var(--cm-grey-100);
border: 1px solid var(--cm-grey-200);
}

.cm-carousel__caption {
display: flex;
align-items: baseline;
justify-content: space-between;
padding: 16px 0 0;
border-top: 1px solid var(--cm-grey-200);
margin-top: 16px;
gap: 12px;
}

.cm-carousel__type {
font-family: var(--cm-font-display);
font-size: 18px;
font-weight: 500;
color: var(--cm-black);
}

.cm-carousel__area {
font-size: 12px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--cm-grey-500);
white-space: nowrap;
}

.cm-carousel__btn {
position: absolute;
top: calc(50% - 36px);
transform: translateY(-50%);
width: 44px;
height: 44px;
background: var(--cm-white);
border: 1px solid var(--cm-grey-200);
color: var(--cm-black);
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
transition: background .25s var(--cm-ease), color .25s var(--cm-ease);
z-index: 2;
}

.cm-carousel__btn svg { width: 18px; height: 18px; }
.cm-carousel__btn:hover { background: var(--cm-black); color: var(--cm-white); border-color: var(--cm-black); }
.cm-carousel__btn--prev { left: -22px; }
.cm-carousel__btn--next { right: -22px; }
.cm-carousel__btn:disabled { opacity: 0.3; pointer-events: none; }

.cm-carousel__dots {
display: flex;
justify-content: center;
gap: 8px;
margin-top: 32px;
}

.cm-carousel__dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--cm-grey-300);
border: none;
cursor: pointer;
padding: 0;
transition: background .25s var(--cm-ease), transform .25s var(--cm-ease);
}

.cm-carousel__dot.is-active {
background: var(--cm-black);
transform: scale(1.4);
}

@media (max-width: 900px) {
.cm-carousel__slide { flex: 0 0 calc(70% - 12px); }
.cm-carousel__btn--prev { left: 0; }
.cm-carousel__btn--next { right: 0; }
}

@media (max-width: 600px) {
.cm-carousel__slide { flex: 0 0 calc(100% - 0px); }
.cm-carousel__btn { display: none; }
}

/* ==========================================================================
Developer Section
========================================================================== */
.cm-dev__grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1px;
background: var(--cm-grey-200);
border: 1px solid var(--cm-grey-200);
}

.cm-dev__card {
background: var(--cm-white);
padding: 48px 40px;
}

.cm-dev__name {
font-family: var(--cm-font-display);
font-size: 20px;
font-weight: 500;
color: var(--cm-black);
margin: 0 0 6px;
line-height: 1.3;
}

.cm-dev__parent {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--cm-grey-500);
margin: 0 0 28px;
}

.cm-dev__card p {
font-size: 14px;
line-height: 1.8;
color: var(--cm-graphite);
margin: 0 0 20px;
}

.cm-dev__track-label {
font-size: 11px !important;
font-weight: 600 !important;
letter-spacing: 0.18em !important;
text-transform: uppercase !important;
color: var(--cm-black) !important;
margin-bottom: 14px !important;
}

.cm-dev__projects {
list-style: none;
margin: 0;
padding: 0;
}

.cm-dev__projects li {
font-size: 13px;
color: var(--cm-graphite);
padding: 10px 0;
border-bottom: 1px solid var(--cm-grey-100);
line-height: 1.5;
display: flex;
align-items: center;
gap: 12px;
}

.cm-dev__projects li:last-child { border-bottom: none; }

.cm-dev__gallery {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 4px;
margin-top: 24px;
}

.cm-dev__gallery img {
width: 100%;
aspect-ratio: 3 / 2;
object-fit: cover;
display: block;
}

.cm-dev__projects li::before {
content: "";
display: block;
width: 16px;
height: 1px;
background: var(--cm-grey-300);
flex-shrink: 0;
}

/* ==========================================================================
CTA Band
========================================================================== */
.cm-cta-band {
background: var(--cm-black);
padding: 96px 0;
text-align: center;
color: var(--cm-white);
}

.cm-cta-band__eyebrow {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.28em;
text-transform: uppercase;
color: var(--cm-grey-700);
margin: 0 0 20px;
}

.cm-cta-band__title {
font-family: var(--cm-font-display);
font-size: clamp(32px, 4vw, 56px);
font-weight: 500;
color: var(--cm-white);
margin: 0 0 16px;
line-height: 1.1;
}

.cm-cta-band .cm-cta-band__body {
font-size: 15px;
line-height: 1.75;
color: var(--cm-grey-300);
margin: 0 auto 40px;
max-width: 520px;
}

/* ==========================================================================
Contact Section
========================================================================== */
.cm-contact-section {
padding: 96px 0;
background: var(--cm-white);
}

.cm-contact__grid {
display: grid;
grid-template-columns: 1fr 1.5fr;
gap: 96px;
align-items: start;
}

.cm-contact__info .cm-section__title { margin-bottom: 20px; }

.cm-contact__desc {
font-size: 15px;
line-height: 1.8;
color: var(--cm-graphite);
margin: 0 0 32px;
}

.cm-contact__phones {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 12px;
}

.cm-contact__phone {
display: inline-flex;
align-items: center;
gap: 10px;
font-size: 15px;
font-weight: 500;
color: var(--cm-ink);
text-decoration: none;
letter-spacing: 0.02em;
transition: color .25s var(--cm-ease);
}

.cm-contact__phone svg { width: 14px; height: 14px; fill: currentColor; color: var(--cm-grey-500); flex-shrink: 0; }
.cm-contact__phone:hover { color: var(--cm-black); }

/* Form fields */
.cm-field {
position: relative;
margin-bottom: 16px;
}

.cm-field-row {
display: flex;
gap: 12px;
}

.cm-field--shrink { flex: 0 0 30%; }
.cm-field--grow { flex: 1; }

.cm-input {
width: 100%;
padding: 22px 16px 8px;
font-family: var(--cm-font-sans);
font-size: 14px;
color: var(--cm-ink);
background: var(--cm-white);
border: 1px solid var(--cm-grey-200);
border-radius: 0;
outline: none;
transition: border-color .25s var(--cm-ease);
-webkit-appearance: none;
appearance: none;
line-height: 1.5;
}

.cm-input:focus { border-color: var(--cm-black); }

/* Select: no floating label — reset vertical padding */
select.cm-input {
padding-top: 14px;
padding-bottom: 14px;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238a8a8a'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 14px center;
padding-right: 38px;
cursor: pointer;
}

textarea.cm-input { resize: vertical; min-height: 96px; }

/* Floating label */
.cm-label {
position: absolute;
left: 16px;
top: 50%;
transform: translateY(-50%);
font-size: 14px;
color: var(--cm-grey-500);
pointer-events: none;
transition: top .2s var(--cm-ease), font-size .2s var(--cm-ease);
line-height: 1;
}

textarea.cm-input ~ .cm-label { top: 18px; transform: none; }

.cm-input:focus ~ .cm-label,
.cm-input:not(:placeholder-shown) ~ .cm-label {
top: 8px;
transform: translateY(0);
font-size: 10px;
letter-spacing: 0.1em;
text-transform: uppercase;
}

.cm-input::placeholder { color: transparent; }

/* Phone field — intlTelInput (v18) wrapper */
.cm-field--phone .iti { width: 100%; }
.cm-field--phone .iti input { width: 100%; padding: 14px 14px 14px 90px; }
.cm-field--phone input::placeholder { color: var(--cm-grey-500); }

/* Unit types */
.cm-field-heading {
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--cm-grey-500);
margin: 0 0 10px;
}

.cm-unit-types {
display: flex;
flex-wrap: wrap;
gap: 8px;
}

.cm-unit-type {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 13px;
cursor: pointer;
padding: 6px 12px;
border: 1px solid var(--cm-grey-300);
border-radius: 4px;
user-select: none;
transition: border-color .15s;
}

.cm-unit-type:hover { border-color: var(--cm-grey-500); }

.cm-unit-type input[type="checkbox"] {
width: 14px;
height: 14px;
accent-color: var(--cm-black);
cursor: pointer;
flex-shrink: 0;
}

/* Consent */
.cm-consent { margin-bottom: 16px; }

.cm-consent__label {
display: flex;
align-items: flex-start;
gap: 10px;
cursor: pointer;
}

.cm-consent__label input[type="checkbox"] {
width: 16px;
height: 16px;
flex-shrink: 0;
margin-top: 2px;
accent-color: var(--cm-black);
cursor: pointer;
}

.cm-consent__text { font-size: 12px; color: var(--cm-grey-500); line-height: 1.6; }

/* Error messages */
.cm-field-error { font-size: 12px; color: #dc2626; margin-top: 4px; display: block; }

/* Submit */
.cm-contact__submit {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
padding: 16px 28px;
font-family: var(--cm-font-sans);
font-size: 12px;
font-weight: 500;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--cm-white);
background: var(--cm-black);
border: 1px solid var(--cm-black);
border-radius: 0;
cursor: pointer;
transition: background .35s var(--cm-ease), color .35s var(--cm-ease);
}

.cm-contact__submit:hover { background: transparent; color: var(--cm-black); }
.cm-contact__submit:disabled { opacity: .6; cursor: not-allowed; }

/* Overlay inherits white background — already set by form-overlay-css.volt */

@media (max-width: 900px) {
.cm-contact__grid { grid-template-columns: 1fr; gap: 48px; }
}

@media (max-width: 600px) {
.cm-contact-section { padding: 56px 0; }
.cm-field-row { flex-direction: column; gap: 0; }
.cm-field--shrink,
.cm-field--grow { flex: none; width: 100%; }
}

/* ==========================================================================
Responsive — homepage sections
========================================================================== */
@media (max-width: 1100px) {
.cm-hero__inner { padding-top: 80px; padding-bottom: 96px; }
}

@media (max-width: 900px) {
.cm-facts__list { grid-template-columns: repeat(3, 1fr); }
.cm-facts__item:nth-child(3n) { border-right: none; }
.cm-facts__item:nth-child(n + 4) { border-top: 1px solid var(--cm-grey-200); }

.cm-section { padding: 72px 0; }
.cm-section__two-col { grid-template-columns: 1fr; gap: 48px; }
.cm-location__grid { grid-template-columns: 1fr 1fr; }
.cm-dev__grid { grid-template-columns: 1fr; }
}

@media (max-width: 600px) {
.cm-hero__scroll-hint { display: none; }

.cm-facts .cm-container { padding: 0; }
.cm-facts__list { grid-template-columns: 1fr 1fr; }
.cm-facts__item:nth-child(3n) { border-right: 1px solid var(--cm-grey-200); }
.cm-facts__item:nth-child(2n) { border-right: none; }
.cm-facts__item:nth-child(n + 3) { border-top: 1px solid var(--cm-grey-200); }
.cm-facts__item:nth-child(5) { grid-column: 1 / -1; }

.cm-section { padding: 56px 0; }
.cm-section__header { margin-bottom: 40px; }
.cm-section__two-col { gap: 36px; }
.cm-location__grid { grid-template-columns: 1fr; }
.cm-location__card { padding: 28px 24px; }
.cm-dev__card { padding: 32px 24px; }
.cm-cta-band { padding: 72px 0; }
}

/* ==========================================================================
Page Hero modifier — inner-page banner, shorter than the home hero
========================================================================== */
.cm-hero--page {
min-height: 55vh;
}

.cm-hero--page .cm-hero__inner {
padding-top: 72px;
padding-bottom: 72px;
}

.cm-hero--page .cm-hero__scroll-hint { display: none; }

@media (max-width: 600px) {
.cm-hero--page { min-height: 45vh; }
.cm-hero--page .cm-hero__inner { padding-top: 56px; padding-bottom: 56px; }
}

/* ==========================================================================
Page Hero (website page banner — shorter variant of .cm-hero)
========================================================================== */
.cm-page-hero {
position: relative;
min-height: 300px;
background: var(--cm-black);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
display: flex;
align-items: center;
color: var(--cm-white);
}

.cm-page-hero::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(
    160deg,
    rgba(11, 11, 11, 0.85) 0%,
    rgba(11, 11, 11, 0.70) 100%
);
z-index: 1;
}

.cm-page-hero--no-image {
background: var(--cm-paper);
color: var(--cm-black);
min-height: 160px;
}

.cm-page-hero--no-image::before { display: none; }

.cm-page-hero__inner {
position: relative;
z-index: 2;
padding-top: 80px;
padding-bottom: 80px;
}

.cm-page-hero--no-image .cm-page-hero__inner {
padding-top: 56px;
padding-bottom: 56px;
}

.cm-page-hero__title {
font-family: var(--cm-font-display);
font-size: clamp(32px, 4vw, 56px);
font-weight: 500;
line-height: 1.1;
color: var(--cm-white);
margin: 0 0 16px;
letter-spacing: -0.01em;
}

.cm-page-hero__title:last-child { margin-bottom: 0; }

.cm-page-hero--no-image .cm-page-hero__title { color: var(--cm-black); }

.cm-page-hero__desc {
font-size: 16px;
font-weight: 300;
color: var(--cm-grey-300);
margin: 0 0 32px;
max-width: 520px;
line-height: 1.65;
}

.cm-page-hero--no-image .cm-page-hero__desc { color: var(--cm-graphite); }

/* Breadcrumb strip between hero and content */
.cm-page-breadcrumb {
border-bottom: 1px solid var(--cm-grey-200);
}

.cm-page-breadcrumb .breadcrumb { padding-block: 14px; }

@media (max-width: 600px) {
.cm-page-hero { min-height: 200px; }
.cm-page-hero__inner { padding-top: 56px; padding-bottom: 56px; }
.cm-page-hero--no-image .cm-page-hero__inner { padding-top: 40px; padding-bottom: 40px; }
}

/* Breadcrumb moved inside the dark page hero — light text/arrows for legibility
   (the shared breadcrumb defaults to dark text + primary-colour links). */
.cm-hero__breadcrumb { margin-bottom: 16px; }
.cm-hero__breadcrumb .breadcrumb { padding-block: 0; color: var(--cm-grey-300); }
.cm-hero__breadcrumb .breadcrumb-link { color: var(--cm-grey-300); }
.cm-hero__breadcrumb .breadcrumb-link:hover { color: var(--cm-white); }
.cm-hero__breadcrumb .breadcrumb-arrow { color: var(--cm-grey-300); }
