Content & media - Replace placeholder slides with optimized real estate photos (img/gallery) - Rebuild hero video from the HD intro clip + drone "common area" clips (gate -> vineyard -> home front -> Vineyard sign -> pavilion -> fountain), cutting the private backyard segment; add mobile variant + poster - Add "Community & Common Areas" aerial gallery and a community map - Galleries split strictly by style: Vineyard = Tuscan homes only, Custom Homes = non-Tuscan estates HOA / Homeowner Information - Real board roster (sourced from pinecreekhoa.com) in a responsive table - Homeowner Information document library (CC&Rs, Vineyard covenants, safety rules, architectural review form, delinquency policy, event reimbursement) linking the live PDFs; Premier Management Company reference - Real general contact email Design & UX - Modern full-screen video hero with overlay, sticky nav, refined typography - Click-to-zoom lightbox for all galleries (keyboard + swipe) - Google Maps embed in the Kannapolis section - Favicon set generated from the Pine Creek emblem (svg/png/ico) - Positive reframe of the Custom Homes copy + lot-availability note - SEO/Open Graph meta, lazy-loaded images, responsive board/doc layouts Housekeeping - SCSS source kept in sync (new partials: hero, sections, gallery, board, features); remove stale placeholders, old.index.php, and map artifact - Add .gitignore (.DS_Store, .claude/, css map); fix docs (index.php -> index.html) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
79 lines
1.5 KiB
SCSS
79 lines
1.5 KiB
SCSS
// Image gallery / carousel
|
|
.gallery {
|
|
position: relative;
|
|
border-radius: 6px;
|
|
overflow: hidden;
|
|
box-shadow: 0 18px 40px -18px rgba(0, 0, 0, 0.45);
|
|
|
|
&-track {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 460px;
|
|
|
|
@media (max-width: $m-break) { height: 360px; }
|
|
@media (max-width: $xs-break) { height: 260px; }
|
|
}
|
|
|
|
&-img {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
opacity: 0;
|
|
transition: opacity 0.6s ease;
|
|
|
|
&.is-active { opacity: 1; }
|
|
}
|
|
|
|
&-arrow {
|
|
position: absolute;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
width: 44px;
|
|
height: 44px;
|
|
border: none;
|
|
border-radius: 50%;
|
|
background: rgba(255, 255, 255, 0.85);
|
|
color: $black;
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
z-index: 3;
|
|
transition: background 0.2s, transform 0.15s;
|
|
|
|
&:hover { background: $white; }
|
|
&:active { transform: translateY(-50%) scale(0.92); }
|
|
|
|
svg { width: 22px; height: 22px; }
|
|
|
|
&.prev { left: 14px; }
|
|
&.next { right: 14px; }
|
|
}
|
|
|
|
&-dots {
|
|
position: absolute;
|
|
bottom: 14px;
|
|
left: 0;
|
|
right: 0;
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
z-index: 3;
|
|
}
|
|
|
|
&-dot {
|
|
width: 9px;
|
|
height: 9px;
|
|
border-radius: 50%;
|
|
border: none;
|
|
padding: 0;
|
|
background: rgba(255, 255, 255, 0.55);
|
|
cursor: pointer;
|
|
transition: background 0.2s, transform 0.2s;
|
|
|
|
&.is-active { background: $gold; transform: scale(1.25); }
|
|
}
|
|
}
|