/* Floor plan browsing — an extension of the homepage's architectural editorial. */
.floorplans-page, .floorplan-detail {
  --plan-forest: #254b3b;
  --plan-deep: #1b3b2e;
  --plan-cream: #f7f3e9;
  --plan-paper: #fbf8ef;
  --plan-sage: #e8e9db;
  --plan-ink: #203d31;
  --plan-muted: #5f7066;
  --plan-brass: #c7a97a;
  --plan-line: #d8dfd3;
  background: var(--plan-cream);
  color: var(--plan-ink);
  font-family: 'DM Sans', sans-serif;
}
.floorplans-page *, .floorplan-detail * { box-sizing: border-box; }
.floorplans-page h1, .floorplans-page h2, .floorplans-page h3,
.floorplan-detail h1, .floorplan-detail h2, .floorplan-detail h3 { font-family: 'Playfair Display', Georgia, serif; font-weight: 400; letter-spacing: -.035em; }
.floorplans-page a:focus-visible, .floorplan-detail a:focus-visible,
.floorplans-page button:focus-visible, .floorplan-detail button:focus-visible,
.floorplan-detail summary:focus-visible, .floorplan-detail .product-lightbox button:focus-visible {
  outline: 3px solid #bb8f52; outline-offset: 4px;
}
.floorplans-page .plan-kicker, .floorplan-detail .plan-kicker {
  display: inline-flex; align-items: center; gap: .8rem; font: 700 .72rem/1.4 'DM Sans', sans-serif;
  text-transform: uppercase; letter-spacing: .15em; color: #9b713f;
}
.floorplans-page .plan-kicker::before, .floorplan-detail .plan-kicker::before { content: ""; width: 28px; height: 1px; background: currentColor; }
.floorplans-page .plan-kicker-light, .floorplan-detail .plan-kicker-light { color: #e1c79e; }
.floorplans-page .plan-link, .floorplan-detail .plan-link { display: inline-flex; align-items: center; gap: .55rem; font-size: .9rem; font-weight: 700; border-bottom: 1px solid currentColor; padding-bottom: .35rem; text-decoration: none; }
.floorplans-page .plan-link:hover, .floorplan-detail .plan-link:hover { color: #9b713f; }
.floorplans-page .plan-cta, .floorplan-detail .plan-cta {
  display: inline-flex; justify-content: center; align-items: center; gap: 1.25rem;
  min-height: 54px; padding: .85rem 1.4rem; border: 1px solid transparent; border-radius: 3px;
  background: #d9b77e; color: #173c2c; font-size: .9rem; font-weight: 700; text-decoration: none;
  transition: transform .2s ease, background-color .2s ease;
}
.floorplans-page .plan-cta:hover, .floorplan-detail .plan-cta:hover { background: #e4c697; transform: translateY(-3px); color: #173c2c; }
.floorplans-page .plan-cta-outline, .floorplan-detail .plan-cta-outline { border-color: #9fb2a2; background: transparent; color: #f8f4e8; }
.floorplans-page .plan-cta-outline:hover, .floorplan-detail .plan-cta-outline:hover { background: #355b48; color: #f8f4e8; }

/* The index opens with the same forest/cream contrast and measured pacing as home. */
.floorplans-page .floorplans-hero { background: var(--plan-forest); padding: clamp(4rem, 7vw, 7rem) 0 clamp(3rem, 5vw, 5rem); min-height: 0; }
.floorplans-page .floorplans-hero-content { max-width: 100%; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(260px, .55fr); gap: 2rem 6vw; align-items: end; }
.floorplans-page .floorplans-hero-heading { max-width: 860px; }
.floorplans-page .floorplans-hero-title { font-size: clamp(3.1rem, 6vw, 6.2rem); line-height: 1.08; letter-spacing: -.045em; color: #f8f4e8; margin: 1.35rem 0 0; }
.floorplans-page .floorplans-hero-title em { color: #d8bd8c; font-weight: 400; }
.floorplans-page .floorplans-hero-subtitle { color: #e7eae0; font-size: clamp(1rem, 1.5vw, 1.2rem); line-height: 1.75; max-width: 420px; margin: 0 0 .4rem; }
.floorplans-page .plan-index-bar { background: var(--plan-sage); border-bottom: 1px solid var(--plan-line); }
.floorplans-page .plan-index-bar .container { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; padding-top: 1.15rem; padding-bottom: 1.15rem; }
.floorplans-page .plan-index-bar span { color: var(--plan-muted); font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; }
.floorplans-page .floorplans-grid-section { background: var(--plan-cream); padding: clamp(3.5rem, 6vw, 6rem) 0; }
.floorplans-page .plan-catalog-heading { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 2rem; margin-bottom: 2rem; }
.floorplans-page .plan-catalog-heading h2 { font-size: clamp(2.4rem, 4vw, 4.4rem); line-height: 1.15; margin: .9rem 0 0; }
.floorplans-page .plan-catalog-heading p { max-width: 350px; color: var(--plan-muted); line-height: 1.7; margin: 0; }
.floorplans-page .floorplan-filters { display: flex; align-items: center; flex-wrap: wrap; gap: 1.2rem 2rem; padding: 1.5rem; margin-bottom: 1.5rem; border: 1px solid var(--plan-line); border-radius: 2px; background: var(--plan-paper); box-shadow: none; position: static; backdrop-filter: none; }
.floorplans-page .floorplan-filter-group { gap: .7rem; flex-wrap: wrap; }
.floorplans-page .floorplan-filter-label { color: var(--plan-muted); font-size: .7rem; text-transform: uppercase; letter-spacing: .11em; font-weight: 700; }
.floorplans-page .floorplan-filter-pills { flex-wrap: wrap; gap: .4rem; }
.floorplans-page .floorplan-filter-pill { border: 1px solid #d7ded2; background: transparent; color: var(--plan-ink); border-radius: 2px; padding: .52rem .8rem; font-size: .78rem; font-weight: 600; transition: background-color .2s ease, color .2s ease; white-space: nowrap; }
.floorplans-page .floorplan-filter-pill:hover { background: var(--plan-sage); color: var(--plan-ink); border-color: #aabaaa; }
.floorplans-page .floorplan-filter-pill.active { background: var(--plan-forest); border-color: var(--plan-forest); color: #f8f4e8; }
.floorplans-page .floorplan-filter-divider { background: var(--plan-line); }
.floorplans-page .floorplan-filter-clear { color: var(--plan-ink); font-weight: 700; }
.floorplans-page .floorplan-results-count { display: flex !important; color: var(--plan-muted); font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; margin: 1.2rem 0 1.6rem; }
.floorplans-page .floorplan-results-count .results-number { color: var(--plan-ink); font-weight: 700; }
.floorplans-page .floorplans-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.floorplans-page .floorplan-card { display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--plan-line); border-radius: 2px; background: var(--plan-paper); box-shadow: none; min-width: 0; text-decoration: none; transition: transform .25s ease, border-color .25s ease; }
.floorplans-page .floorplan-card:hover { transform: translateY(-4px); box-shadow: none; border-color: #99ad9b; }
.floorplans-page .floorplan-card-image { height: auto; aspect-ratio: 1.36; background: #eceee4; border-bottom: 1px solid var(--plan-line); }
.floorplans-page .floorplan-card-image img { width: 100%; height: 100%; object-fit: contain; padding: 1.1rem; }
.floorplans-page .floorplan-card:hover .floorplan-card-image img { transform: none; }
.floorplans-page .floorplan-sqft-badge { background: var(--plan-paper); color: var(--plan-ink); border-radius: 2px; border: 1px solid var(--plan-line); box-shadow: none; }
.floorplans-page .floorplan-card-body { flex: 1; padding: 1.5rem 1.5rem 1.25rem; display: flex; flex-direction: column; }
.floorplans-page .floorplan-card-name { font-size: clamp(1.45rem, 2vw, 1.9rem); line-height: 1.25; color: var(--plan-ink); margin: 0 0 1rem; }
.floorplans-page .floorplan-card-details { gap: .4rem .8rem; }
.floorplans-page .floorplan-detail-pill { background: transparent; color: var(--plan-muted); border: 0; border-radius: 0; padding: 0; font-size: .78rem; }
.floorplans-page .floorplan-detail-pill svg { color: #9b713f; }
.floorplans-page .floorplan-card-footer { border-top: 1px solid var(--plan-line); padding-top: 1rem; margin-top: auto; }
.floorplans-page .floorplan-view-link { color: var(--plan-ink); font-weight: 700; }
.floorplans-page .floorplans-no-results, .floorplans-page .floorplans-empty { grid-column: 1 / -1; border: 1px solid var(--plan-line); background: var(--plan-paper); border-radius: 2px; color: var(--plan-ink); padding: 3rem 2rem; text-align: center; }
.floorplans-page .floorplans-no-results[hidden] { display: none; }
.floorplans-page .floorplans-no-results svg, .floorplans-page .floorplans-empty svg { color: #9b713f; }
.floorplans-page .floorplans-no-results h3, .floorplans-page .floorplans-empty h2 { color: var(--plan-ink); font-size: 2rem; }
.floorplans-page .floorplans-info { background: #e8e9db; color: var(--plan-ink); padding: clamp(4rem, 7vw, 7rem) 0; }
.floorplans-page .floorplans-info-content { max-width: 100%; display: grid; grid-template-columns: minmax(240px, .65fr) minmax(0, 1.35fr); gap: 3rem 8vw; }
.floorplans-page .plan-info-intro h2 { font-size: clamp(2.5rem, 4vw, 4.3rem); line-height: 1.14; margin: 1rem 0; }
.floorplans-page .plan-info-intro p { color: var(--plan-muted); line-height: 1.75; }
.floorplans-page .plan-info-body { columns: 2 260px; column-gap: 2.5rem; }
.floorplans-page .plan-info-body h2 { break-after: avoid; color: var(--plan-ink); font-size: 1.65rem; line-height: 1.25; margin: 1.6rem 0 .7rem; }
.floorplans-page .plan-info-body h2:first-child { margin-top: 0; }
.floorplans-page .plan-info-body p { color: #425b4d; font-size: .9rem; line-height: 1.8; margin: 0 0 1.15rem; }
.floorplans-page .plan-info-body strong { color: var(--plan-ink); }

/* Detail: product media as an architectural plate, paired with editorial copy. */
.floorplan-detail .floorplan-detail-hero { background: var(--plan-forest); color: #f8f4e8; padding: clamp(2rem, 4vw, 4rem) 0 clamp(4rem, 7vw, 7rem); }
.floorplan-detail .floorplan-breadcrumbs { margin: 0 0 clamp(2rem, 4vw, 4rem); color: #d3dfd2; }
.floorplan-detail .floorplan-detail-grid { display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr); gap: clamp(2rem, 5vw, 6rem); align-items: start; }
.floorplan-detail .floorplan-detail-gallery { min-width: 0; }
.floorplan-detail .floorplan-main-image { position: relative; background: #f2f1e9; border: 1px solid #819b85; border-radius: 2px; overflow: hidden; aspect-ratio: 1.12; }
.floorplan-detail .floorplan-image-open { display: block; width: 100%; height: 100%; padding: 1.25rem; background: transparent; border: 0; cursor: zoom-in; }
.floorplan-detail .floorplan-image-open:focus-visible { outline-offset: -5px; }
.floorplan-detail .floorplan-main-image img { width: 100%; height: 100%; object-fit: contain; }
.floorplan-detail .floorplan-zoom-overlay { background: var(--plan-forest); color: #f8f4e8; border-radius: 2px; bottom: 1rem; right: 1rem; top: auto; left: auto; width: 40px; height: 40px; opacity: 1; display: grid; place-items: center; }
.floorplan-detail .floorplan-zoom-overlay svg { width: 18px; height: 18px; }
.floorplan-detail .floorplan-image-placeholder { height: 100%; background: #e8e9db; color: var(--plan-forest); }
.floorplan-detail .floorplan-thumbnails { display: flex; gap: .6rem; margin-top: .7rem; }
.floorplan-detail .floorplan-thumbnail { width: 84px; height: 72px; padding: .35rem; background: #eeeee5; border: 2px solid transparent; border-radius: 2px; }
.floorplan-detail .floorplan-thumbnail.active { border-color: var(--plan-brass); }
.floorplan-detail .floorplan-thumbnail img { object-fit: contain; width: 100%; height: 100%; }
.floorplan-detail .plan-gallery-caption { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1rem; font-size: .7rem; text-transform: uppercase; letter-spacing: .12em; color: #c5d4c9; }
.floorplan-detail .floorplan-detail-info { padding: .6rem 0 0; }
.floorplan-detail .floorplan-type-badge { display: inline-block; background: transparent; color: #e1c79e; border: 0; padding: 0; border-radius: 0; text-transform: uppercase; letter-spacing: .15em; font-size: .72rem; font-weight: 700; }
.floorplan-detail .floorplan-detail-title { color: #f8f4e8; font-size: clamp(3rem, 4.6vw, 5.3rem); line-height: 1.08; margin: 1.2rem 0 1.7rem; }
.floorplan-detail .floorplan-specs-bar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; padding: 0; margin: 0 0 1.8rem; border: 1px solid #53715d; border-radius: 2px; background: transparent; }
.floorplan-detail .floorplan-spec-item { display: flex; align-items: center; gap: .6rem; min-width: 0; border-right: 1px solid #53715d; border-bottom: 1px solid #53715d; padding: .85rem 1rem; }
.floorplan-detail .floorplan-spec-item:nth-child(2n) { border-right: 0; }
.floorplan-detail .floorplan-spec-item:nth-last-child(-n+2) { border-bottom: 0; }
.floorplan-detail .floorplan-spec-item svg { color: var(--plan-brass); stroke: currentColor; flex: 0 0 18px; width: 18px; height: 18px; }
.floorplan-detail .floorplan-spec-value { color: #f8f4e8; font-size: .86rem; font-weight: 600; overflow-wrap: anywhere; }
.floorplan-detail .floorplan-description { color: #e7eae0; line-height: 1.75; font-size: 1.03rem; margin: 0 0 2rem; }
.floorplan-detail .floorplan-cta-box { display: block; border-top: 1px solid #708c74; padding: 1.6rem 0 0; margin: 0; background: transparent; box-shadow: none; border-radius: 0; }
.floorplan-detail .floorplan-cta-content h2 { color: #f8f4e8; font-size: 1.7rem; margin: 0 0 .5rem; }
.floorplan-detail .floorplan-cta-content p { color: #d5e0d6; line-height: 1.65; margin: 0 0 1.3rem; }
.floorplan-detail .floorplan-cta-buttons { display: flex; flex-wrap: wrap; gap: .75rem; }
.floorplan-detail .floorplan-cta-buttons .plan-cta { width: auto; }
.floorplan-detail .floorplan-content { background: var(--plan-cream); padding: clamp(4rem, 7vw, 7rem) 0; }
.floorplan-detail .plan-content-heading { margin-bottom: 2.5rem; }
.floorplan-detail .plan-content-heading h2 { font-size: clamp(2.6rem, 4vw, 4.6rem); line-height: 1.15; margin: 1rem 0 0; }
.floorplan-detail .floorplan-content-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(230px, .34fr); gap: clamp(2rem, 6vw, 7rem); }
.floorplan-detail .floorplan-details-accordion { border-top: 1px solid var(--plan-line); }
.floorplan-detail .floorplan-details-accordion summary { display: flex; justify-content: space-between; align-items: center; gap: 1rem; cursor: pointer; color: var(--plan-ink); padding: 1.25rem 0; list-style: none; border-bottom: 1px solid var(--plan-line); font-weight: 700; }
.floorplan-detail .floorplan-details-accordion summary::-webkit-details-marker { display: none; }
.floorplan-detail .floorplan-details-accordion summary svg { width: 18px; transition: transform .2s ease; }
.floorplan-detail .floorplan-details-accordion[open] summary svg { transform: rotate(180deg); }
.floorplan-detail .floorplan-prose { color: #425b4d; line-height: 1.8; overflow-wrap: anywhere; padding: 1.5rem 0; }
.floorplan-detail .floorplan-prose :is(h2,h3,h4) { color: var(--plan-ink); }
.floorplan-detail .floorplan-prose a { color: #8c683e; text-decoration: underline; text-underline-offset: 3px; }
.floorplan-detail .plan-aside { background: var(--plan-sage); padding: clamp(1.5rem, 2.5vw, 2.3rem); border: 1px solid var(--plan-line); }
.floorplan-detail .plan-aside h3 { font-size: 1.7rem; margin: .8rem 0; }
.floorplan-detail .plan-aside p { color: var(--plan-muted); line-height: 1.7; }
.floorplan-detail .plan-aside .plan-cta { margin-top: 1rem; }
.floorplan-detail .floorplan-more { background: #e8e9db; padding: clamp(4rem, 7vw, 7rem) 0; }
.floorplan-detail .plan-more-heading { display: flex; justify-content: space-between; align-items: end; gap: 2rem; margin-bottom: 2rem; }
.floorplan-detail .plan-more-heading h2 { font-size: clamp(2.6rem, 4vw, 4.5rem); color: var(--plan-ink); line-height: 1.15; margin: .8rem 0 0; }
.floorplan-detail .floorplan-more-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.floorplan-detail .floorplan-more-card { display: block; background: var(--plan-paper); border: 1px solid var(--plan-line); border-radius: 2px; overflow: hidden; box-shadow: none; text-decoration: none; transition: transform .25s ease, border-color .25s ease; }
.floorplan-detail .floorplan-more-card:hover { transform: translateY(-4px); border-color: #99ad9b; box-shadow: none; }
.floorplan-detail .floorplan-more-image { background: #eceee4; aspect-ratio: 1.5; height: auto; }
.floorplan-detail .floorplan-more-image img { width: 100%; height: 100%; object-fit: contain; padding: .9rem; }
.floorplan-detail .floorplan-more-content { padding: 1.3rem; }
.floorplan-detail .floorplan-more-content h3 { color: var(--plan-ink); font-size: 1.5rem; }
.floorplan-detail .floorplan-more-specs { color: var(--plan-muted); }
.floorplan-detail .plan-endcap, .floorplans-page .plan-endcap { background: var(--plan-deep); padding: clamp(4rem, 7vw, 7rem) 0; color: #f8f4e8; }
.floorplan-detail .plan-endcap-inner, .floorplans-page .plan-endcap-inner { display: grid; grid-template-columns: 1fr minmax(260px, .55fr); gap: 2rem 6vw; align-items: end; }
.floorplan-detail .plan-endcap h2, .floorplans-page .plan-endcap h2 { color: #f8f4e8; font-size: clamp(2.7rem, 5vw, 5.4rem); line-height: 1.12; margin: 1rem 0 0; }
.floorplan-detail .plan-endcap h2 em, .floorplans-page .plan-endcap h2 em { color: #d8bd8c; font-weight: 400; }
.floorplan-detail .plan-endcap p, .floorplans-page .plan-endcap p { color: #d5e0d6; line-height: 1.75; margin: 0 0 1.5rem; }
.floorplan-detail .plan-endcap-actions, .floorplans-page .plan-endcap-actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.floorplan-detail .plan-back { padding: 1.4rem 0; background: var(--plan-cream); border-top: 1px solid var(--plan-line); }
.floorplan-detail .plan-back a { color: var(--plan-ink); }

/* Lightbox sits outside the wrapper in the DOM but is scoped by its dedicated class. */
.product-lightbox.plan-refresh-lightbox { background: rgba(16, 38, 27, .96); z-index: 9999; }
.product-lightbox.plan-refresh-lightbox .lightbox-content { max-width: min(90vw, 1200px); }
.product-lightbox.plan-refresh-lightbox .lightbox-image { max-height: 78dvh; object-fit: contain; }
.product-lightbox.plan-refresh-lightbox button:focus-visible { outline: 3px solid #d9b77e; outline-offset: 4px; }

@media (max-width: 900px) {
  .floorplans-page .floorplans-hero-content, .floorplans-page .floorplans-info-content,
  .floorplan-detail .floorplan-detail-grid, .floorplan-detail .floorplan-content-grid { grid-template-columns: 1fr; }
  .floorplans-page .floorplans-grid, .floorplan-detail .floorplan-more-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .floorplans-page .floorplans-hero-subtitle { max-width: 620px; }
  .floorplan-detail .floorplan-main-image { aspect-ratio: 1.5; }
}
@media (max-width: 640px) {
  .floorplans-page .floorplans-grid, .floorplan-detail .floorplan-more-grid,
  .floorplans-page .plan-catalog-heading, .floorplan-detail .plan-endcap-inner,
  .floorplans-page .plan-endcap-inner { grid-template-columns: 1fr; }
  .floorplans-page .floorplans-hero-title, .floorplan-detail .floorplan-detail-title { font-size: clamp(2.8rem, 11vw, 4rem); }
  .floorplans-page .floorplan-filters { padding: 1.1rem; }
  .floorplans-page .floorplan-filter-divider { display: none; }
  .floorplans-page .floorplan-filter-group { width: 100%; }
  .floorplans-page .plan-info-body { columns: 1; }
  .floorplan-detail .floorplan-main-image { aspect-ratio: 1.12; }
  .floorplan-detail .floorplan-cta-buttons .plan-cta, .floorplans-page .plan-endcap-actions .plan-cta,
  .floorplan-detail .plan-endcap-actions .plan-cta { width: 100%; }
  .floorplan-detail .plan-more-heading { display: block; }
  .floorplan-detail .plan-more-heading .plan-link { margin-top: 1.5rem; }
}
@media (prefers-reduced-motion: reduce) {
  .floorplans-page *, .floorplan-detail *, .product-lightbox.plan-refresh-lightbox * { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}