/* Public project pages. Deliberately scoped to preserve the existing site. */
.gp-page { --gp-ink:#102c43; --gp-muted:#576672; --gp-gold:var(--gah-accent); --gp-line:#dedfd8; --gp-paper:#f7f7f2; color:var(--gp-ink); background:var(--gp-paper); font:400 16px/1.7 'DM Sans',Arial,sans-serif; }
.gp-page *, .gp-lightbox * { box-sizing:border-box; }
.gp-page [hidden] { display:none!important; }
.gp-container { width:calc(100% - 64px); max-width:1200px; margin:0 auto; min-width:0; }
.gp-page h1,.gp-page h2,.gp-page h3,.gp-page p,.gp-page figure { margin:0; }
.gp-page h1,.gp-page h2,.gp-page h3,.gp-lightbox-title { text-transform:none; }
.gp-page h1,.gp-page h2 { color:var(--gp-ink); font-family:Georgia,'Times New Roman',serif; font-weight:400; letter-spacing:-.035em; }
.gp-page h1 { font-size:clamp(38px,4.9vw,66px); line-height:1.08; }
.gp-page h1 em { font-weight:400; color:var(--gah-accent); }
.gp-page h2 { font-size:clamp(28px,3vw,40px); line-height:1.2; }
.gp-page h3 { font-size:18px; line-height:1.4; color:var(--gp-ink); }
.gp-page p { color:var(--gp-muted); }
.gp-page a { color:inherit; text-decoration:none; }
.gp-page a:focus-visible,.gp-page button:focus-visible,.gp-page input:focus-visible,.gp-lightbox button:focus-visible { outline:3px solid var(--gah-accent); outline-offset:5px; }
.gp-page img { display:block; width:100%; height:100%; object-fit:cover; }
.gp-page .gp-eyebrow { color:var(--gah-accent); text-transform:uppercase; letter-spacing:.16em; font-size:11px; font-weight:700; line-height:1.7; margin-bottom:18px; }
.gp-breadcrumb { display:flex; flex-wrap:wrap; gap:8px 12px; padding:24px 0; font-size:12px; color:var(--gp-muted); overflow-wrap:anywhere; }
.gp-breadcrumb a:hover { text-decoration:underline; }
.gp-breadcrumb [aria-current] { color:var(--gp-ink); }
.gp-list-hero { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:56px; align-items:center; padding:24px 0 58px; }
.gp-page .gp-intro { max-width:560px; margin-top:24px; font-size:16px; line-height:1.8; }
.gp-list-hero figure { position:relative; height:365px; border-radius:3px; overflow:hidden; }
.gp-list-hero figure:after { content:''; position:absolute; inset:45% 0 0; background:linear-gradient(transparent,rgba(8,24,36,.82)); pointer-events:none; }
.gp-list-hero figcaption { position:absolute; z-index:1; bottom:25px; left:28px; right:20px; color:#fff; font-size:19px; line-height:1.5; }
.gp-list-hero figcaption span { display:block; font-size:12px; opacity:.85; margin-top:4px; }
.gp-text-link { display:inline-flex; align-items:center; gap:22px; padding:8px 0; border-bottom:1px solid var(--gah-accent); font-size:13px; font-weight:700; }
.gp-list-hero .gp-text-link { margin-top:22px; }
.gp-tabs { display:flex; gap:30px; border-bottom:1px solid var(--gp-line); }
.gp-tabs a { position:relative; display:flex; align-items:center; gap:14px; padding:16px 0 19px; color:var(--gp-muted); font-size:15px; font-weight:700; }
.gp-tabs a[aria-current] { color:var(--gp-ink); }
.gp-tabs a[aria-current]:after { content:''; position:absolute; bottom:-1px; height:3px; background:var(--gp-ink); left:0; right:0; }
.gp-tabs span { font-size:11px; font-weight:400; color:var(--gp-muted); }
.gp-filterbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; padding-top:30px; }
.gp-filter-options { display:flex; flex-wrap:wrap; gap:8px; }
.gp-filter-options button { cursor:pointer; background:transparent; color:var(--gp-muted); border:1px solid var(--gp-line); border-radius:3px; padding:8px 12px; font:inherit; font-size:12px; min-height:42px; }
.gp-filter-options button[aria-pressed=true] { background:var(--gp-ink); color:#fff; border-color:var(--gp-ink); }
.gp-search { min-width:0; flex:0 1 245px; margin:0; }
.gp-search input { background:transparent; border:0; border-bottom:1px solid #aab1b4; border-radius:0; color:var(--gp-ink); width:100%; margin:0; padding:10px 6px; font:inherit; font-size:13px; min-height:44px; }
.gp-search input::placeholder { color:#63717c; opacity:1; }
.gp-page .gp-result-count { font-size:12px; margin:22px 0 16px; }
.gp-project-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:26px; }
.gp-card { min-width:0; background:white; border:1px solid #e0e3df; border-radius:4px; overflow:hidden; transition:box-shadow .2s,transform .2s; }
.gp-card:hover { transform:translateY(-4px); box-shadow:0 12px 35px #132d4210; }
.gp-card-link { display:flex; flex-direction:column; height:100%; }
.gp-card-image { position:relative; aspect-ratio:1.5; overflow:hidden; background:#e6e9e3; }
.gp-card-image img { transition:transform .35s; }
.gp-card:hover img { transform:scale(1.035); }
.gp-status { position:absolute; top:16px; left:16px; border-radius:2px; padding:5px 10px; background:#fffffff2; color:#19394c; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.09em; }
.gp-status:before { content:''; display:inline-block; width:5px; height:5px; border-radius:50%; background:#668263; margin-right:7px; vertical-align:middle; }
.gp-image-note { position:absolute; bottom:10px; right:10px; background:#102c43dd; color:white; padding:2px 7px; font-size:10px; }
.gp-card-body { padding:25px 24px 20px; display:flex; flex-direction:column; flex:1; }
.gp-card-body .gp-eyebrow { font-size:10px; margin-bottom:8px; }
.gp-card-body h2 { font:400 27px/1.15 Georgia,serif; letter-spacing:-.035em; }
.gp-page .gp-location { font-size:12px; margin-top:12px; color:#64717a; }
.gp-page .gp-card-description { font-size:13px; line-height:1.8; margin:16px 0 20px; }
.gp-card-action { border-top:1px solid #e6e8e3; padding-top:14px; margin-top:auto; font-size:12px; font-weight:700; display:flex; align-items:center; justify-content:space-between; }
.gp-card-action span { font-size:23px; font-weight:400; color:var(--gah-accent); }
.gp-button { display:inline-flex; align-items:center; justify-content:center; gap:22px; font:700 13px/1.5 'DM Sans',Arial,sans-serif; padding:15px 22px; border:1px solid #102c43; border-radius:3px; background:#102c43; color:#fff!important; min-height:48px; cursor:pointer; }
.gp-button:hover { background:#244960; color:#fff; }
.gp-cta { display:flex; align-items:center; justify-content:space-between; gap:40px; margin-top:72px; padding:46px 0 64px; border-top:1px solid var(--gp-line); }
.gp-cta h2 { font-size:34px; max-width:600px; }
.gp-cta .gp-eyebrow { margin-bottom:12px; }
.gp-cta p:not(.gp-eyebrow) { max-width:580px; margin-top:16px; font-size:14px; }
.gp-cta .gp-button { flex-shrink:0; }
.gp-empty { padding:55px 22px; text-align:center; border:1px solid var(--gp-line); background:white; }
.gp-empty h2 { font-size:26px; }
.gp-empty p { margin:12px 0 22px; }
.gp-detail-hero { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); gap:55px; align-items:center; padding:24px 0 48px; }
.gp-detail-intro { padding:20px 0; }
.gp-detail-hero h1 { font-size:clamp(40px,4.5vw,62px); }
.gp-page .gp-tagline { font:400 24px/1.4 Georgia,serif; color:var(--gp-ink); margin-top:20px; max-width:490px; }
.gp-detail-hero .gp-cover { height:510px; position:relative; min-width:0; border-radius:3px; overflow:hidden; }
.gp-cover figcaption { position:absolute; bottom:20px; left:20px; right:20px; width:fit-content; max-width:calc(100% - 40px); background:#fffffff2; padding:8px 12px; color:#233b4c; font-size:11px; }
.gp-hero-actions { display:flex; flex-wrap:wrap; align-items:center; gap:18px 25px; margin-top:30px; }
.gp-dot { padding:0 9px; }
.gp-progress { margin:30px 0 0; max-width:420px; }
.gp-progress>div { display:flex; justify-content:space-between; gap:12px; align-items:center; font-size:11px; color:var(--gp-muted); }
.gp-progress strong { font-size:20px; font-weight:500; color:var(--gp-ink); }
.gp-progress progress { display:block; appearance:none; -webkit-appearance:none; width:100%; height:4px; border:0; background:#dfe2da; border-radius:10px; margin-top:10px; }
.gp-progress progress::-webkit-progress-bar { background:#dfe2da; border-radius:10px; }
.gp-progress progress::-webkit-progress-value { background:var(--gah-accent); border-radius:10px; }
.gp-progress progress::-moz-progress-bar { background:var(--gah-accent); border-radius:10px; }
.gp-card .gp-progress { margin:0 0 22px; }
.gp-card .gp-progress strong { font-size:16px; }
.gp-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-top:1px solid var(--gp-line); border-bottom:1px solid var(--gp-line); margin:0; padding:28px 0; gap:28px; }
.gp-facts>div { padding:0 26px; border-left:1px solid var(--gp-line); min-width:0; }
.gp-facts>div:first-child { padding-left:0; border:0; }
.gp-facts dt { text-transform:uppercase; letter-spacing:.12em; font-size:10px; font-weight:500; color:var(--gp-muted); }
.gp-facts dd { margin:8px 0 0; color:var(--gp-ink); font-size:18px; line-height:1.5; overflow-wrap:anywhere; }
.gp-section { padding:62px 0; border-bottom:1px solid var(--gp-line); scroll-margin-top:110px; }
.gp-story { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); gap:70px; }
.gp-story p:not(.gp-eyebrow):not(.gp-location) { font-size:16px; line-height:1.9; }
.gp-features { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:34px 40px; margin-top:34px; }
.gp-feature-number { display:block; color:var(--gah-accent); font:400 21px/1 Georgia,serif; margin-bottom:18px; }
.gp-features p { font-size:14px; margin-top:10px; }
.gp-section-heading { display:flex; justify-content:space-between; align-items:center; gap:24px; }
.gp-gallery-count { flex-shrink:0; font-size:12px; color:var(--gp-muted); }
.gp-page .gp-gallery-note { margin:20px 0 28px; max-width:730px; font-size:13px; }
.gp-gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px 20px; }
.gp-gallery figure { min-width:0; }
.gp-gallery a { display:block; position:relative; aspect-ratio:1.25; overflow:hidden; border-radius:3px; background:#e4e7e1; }
.gp-gallery img { transition:transform .3s; }
.gp-gallery a:hover img { transform:scale(1.03); }
.gp-gallery figcaption { font-size:11px; padding-top:10px; color:var(--gp-muted); }
.gp-zoom { position:absolute; right:12px; bottom:12px; border-radius:50%; width:34px; height:34px; display:grid; place-items:center; background:#ffffffed; color:var(--gp-ink); font-size:20px; }
.gp-project-navigation { display:flex; justify-content:space-between; flex-wrap:wrap; gap:18px 35px; padding-top:32px; font-size:13px; font-weight:700; }
.gp-project-navigation a { max-width:100%; overflow-wrap:anywhere; }
.gp-project-navigation a:hover { text-decoration:underline; }
.gp-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.gp-lightbox { border:0; border-radius:4px; padding:18px; width:min(1100px,calc(100vw - 24px)); max-width:calc(100vw - 24px); max-height:calc(100dvh - 24px); background:#102434; color:#fff; box-shadow:0 20px 80px #0008; }
.gp-lightbox::backdrop { background:#06121deb; }
.gp-lightbox:not([open]) { display:none; }
.gp-lightbox-bar,.gp-lightbox-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; font:400 13px/1.5 Arial,sans-serif; }
.gp-lightbox-bar { margin-bottom:12px; }
.gp-lightbox-title { margin:0; color:#fff; font:400 16px/1.4 Arial,sans-serif; }
.gp-lightbox button { min-width:44px; min-height:44px; border:1px solid #667785; border-radius:3px; background:transparent; color:white; cursor:pointer; font:400 22px/1 Arial,sans-serif; }
.gp-lightbox button:hover { background:#ffffff1a; }
.gp-lightbox figure { margin:0; }
.gp-lightbox img { width:100%; height:calc(100dvh - 225px); min-height:100px; max-height:710px; object-fit:contain; display:block; }
.gp-lightbox figcaption { color:#fff; text-align:center; padding:14px 5px; font:400 13px/1.5 Arial,sans-serif; }
.gp-lightbox-footer>div { display:flex; gap:8px; }
.gp-lightbox-counter { color:#fff; }
.gp-villa-nav { padding-bottom:4px; }
.gp-villa-content { background:#f7f7f2; color:#102c43; }
.gp-villa-content .compare-grid,.gp-villa-content .form-hero .container-xxl { min-width:0; }
.gp-villa-content .form-hero .container-xxl { grid-template-columns:minmax(0,1fr) minmax(0,420px); }
.gp-villa-content .form-hero .container-xxl>* { min-width:0; }
.gp-villa-content .form-hero .lead-wrap,.gp-villa-content .form-hero .smart-form { min-width:0; max-width:100%; }
.gp-villa-content .villa-info-card { min-width:0; max-width:100%; border-radius:6px; box-shadow:0 5px 25px #102c4308; }
.gp-villa-content .villa-info-card .title { color:#102c43; text-shadow:none; }
.gp-villa-content .villa-features li { align-items:flex-start; }
.gp-villa-content .villa-features li .icon { flex-shrink:0; }
.gp-villa-content .villa-info-card.compare { min-width:0; }
.gp-villa-content .hero-slider .dots { max-width:calc(100% - 32px); }
.gp-villa-content .hero-slider .dots button { padding:0; flex:0 0 9px; min-width:9px; min-height:9px; }
.gp-villa-content .hero-slider .nav { padding:0; display:grid; place-items:center; }
.gp-villa-content .hero-slider .hero-caption { padding-left:60px; padding-right:60px; }
@media(max-width:1050px) {
  .gp-project-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .gp-list-hero,.gp-detail-hero { gap:30px; }
  .gp-story { gap:35px; }
  .gp-list-hero figure { height:340px; }
  .gp-features { gap:28px; }
  .gp-cta { gap:25px; }
}
@media(max-width:992px) {
  .gp-villa-content .form-hero .container-xxl { grid-template-columns:minmax(0,1fr); }
}
@media(max-width:700px) {
  .gp-container { width:calc(100% - 36px); }
  .gp-breadcrumb { padding:18px 0; font-size:11px; }
  .gp-list-hero,.gp-detail-hero { grid-template-columns:minmax(0,1fr); gap:28px; padding:22px 0 30px; }
  .gp-list-hero figure { height:280px; }
  .gp-list-hero .gp-intro { margin-top:18px; }
  .gp-detail-intro { padding:0; }
  .gp-villa-content .hero-slider .hero-caption { padding-left:24px; padding-right:24px; }
  .gp-villa-content .hero-slider .nav { display:none; }
  .gp-detail-hero .gp-cover { height:360px; }
  .gp-tabs { gap:22px; }
  .gp-tabs a { font-size:13px; gap:8px; }
  .gp-project-grid { gap:18px; }
  .gp-card-body { padding:20px 18px; }
  .gp-card-body h2 { font-size:25px; }
  .gp-search { flex-basis:100%; }
  .gp-story { grid-template-columns:minmax(0,1fr); gap:24px; }
  .gp-section { padding:38px 0; }
  .gp-features { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .gp-gallery { grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 12px; }
  .gp-cta { flex-direction:column; align-items:flex-start; margin-top:45px; padding:36px 0 48px; }
  .gp-cta h2 { font-size:30px; }
  .gp-facts { gap:16px; }
  .gp-facts>div { padding:0 0 0 14px; }
  .gp-facts dd { font-size:15px; }
  .gp-villa-content .compare-grid { display:grid; grid-template-columns:minmax(0,1fr); }
}
@media(max-width:470px) {
  .gp-project-grid { grid-template-columns:minmax(0,1fr); }
  .gp-list-hero figure { height:240px; }
  .gp-page h1 { font-size:39px; }
  .gp-page .gp-tagline { font-size:22px; }
  .gp-page .gp-eyebrow { letter-spacing:.12em; }
  .gp-facts { grid-template-columns:minmax(0,1fr); padding:4px 0; gap:0; }
  .gp-facts>div,.gp-facts>div:first-child { border:0; padding:15px 0; }
  .gp-facts>div+div { border-top:1px solid var(--gp-line); }
  .gp-facts dd { font-size:19px; margin-top:3px; }
  .gp-features { gap:24px; grid-template-columns:minmax(0,1fr); }
  .gp-feature-number { margin-bottom:10px; }
  .gp-section-heading { align-items:flex-start; }
  .gp-gallery-count { padding-top:5px; font-size:10px; }
  .gp-gallery a { aspect-ratio:.85; }
  .gp-lightbox { padding:12px; }
}
@media(prefers-reduced-motion:reduce) {
  .gp-page *, .gp-lightbox * { scroll-behavior:auto!important; transition:none!important; animation:none!important; }
}
