  :root{
    --ink:#14213D;
    --blueprint:#2C5F7C;
    --brass:#C69749;
    --brass-dark:#A87B36;
    --paper:#F6F3EC;
    --paper-dim:#EFEAE0;
    --charcoal:#2A2A28;
    --brick:#8B4A44;
    --brick-dim:#EFE1DF;
    --brass-dim:#F3E6CC;
    --line:rgba(20,33,61,0.14);
    --white:#FFFFFF;
    --radius:2px;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--paper);
    color:var(--charcoal);
    font-family:'IBM Plex Sans', sans-serif;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,.display{
    font-family:'Space Grotesk', sans-serif;
    color:var(--ink);
    margin:0;
  }
  .mono{ font-family:'IBM Plex Mono', monospace; }
  a{ color:inherit; }
  button{ font-family:inherit; cursor:pointer; }
  ::selection{ background:var(--brass); color:var(--ink); }

  /* ---------- Hero ---------- */
  .hero{
    position:relative;
    background:var(--ink);
    color:var(--paper);
    overflow:hidden;
    padding:64px 24px 56px;
  }
  .hero-grid{
    position:absolute; inset:0;
    background-image:
      linear-gradient(var(--blueprint) 1px, transparent 1px),
      linear-gradient(90deg, var(--blueprint) 1px, transparent 1px);
    background-size:40px 40px;
    opacity:0.16;
    mask-image:linear-gradient(to bottom, black, transparent 85%);
  }
  .hero-buildings{
    position:absolute;
    right:-30px; bottom:-10px;
    width:min(72vw, 520px);
    opacity:0.5;
    pointer-events:none;
  }
  .hero-inner{ position:relative; max-width:920px; margin:0 auto; }
  .eyebrow{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--brass);
    display:flex; align-items:center; gap:10px;
    margin-bottom:18px;
  }
  .eyebrow::before{
    content:"";
    width:22px; height:1px;
    background:var(--brass);
    display:inline-block;
  }
  .hero h1{
    color:var(--white);
    font-size:clamp(40px, 8vw, 64px);
    line-height:0.98;
    font-weight:700;
    letter-spacing:-0.01em;
  }
  .hero p.tagline{
    margin-top:18px;
    max-width:520px;
    font-size:17px;
    line-height:1.55;
    color:#CBD3DE;
  }
  .hero-stats{
    margin-top:36px;
    display:flex; gap:34px; flex-wrap:wrap;
  }
  .hero-stat b{
    display:block;
    font-family:'Space Grotesk', sans-serif;
    font-size:28px;
    color:var(--white);
  }
  .hero-stat span{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    letter-spacing:.08em;
    text-transform:uppercase;
    color:var(--brass);
  }

  /* ---------- Nav ---------- */
  .topline{
    max-width:920px; margin:0 auto;
    display:flex; justify-content:space-between; align-items:center;
    position:relative; z-index:2;
    margin-bottom:40px;
  }
  .wordmark{
    display:flex; align-items:center;
  }
  .wordmark svg{ display:block; }
  .wordmark span{ color:var(--brass); }

  /* ---------- Main sections ---------- */
  main{ max-width:920px; margin:0 auto; padding:56px 24px 100px; }

  .building{ margin-bottom:64px; }
  .building-head{
    display:flex; justify-content:space-between; align-items:flex-end;
    border-bottom:1px solid var(--line);
    padding-bottom:14px;
    margin-bottom:28px;
    gap:16px; flex-wrap:wrap;
  }
  .building-head h2{
    font-size:26px; font-weight:600;
  }
  .building-address{
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    color:var(--blueprint);
    margin-top:4px;
  }
  .building-meta{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    color:#6B7280;
    text-align:right;
  }

  .building-photos{
    display:flex; gap:8px; overflow-x:auto;
    margin-top:14px; padding-bottom:2px;
  }
  .building-photos img{
    height:118px; width:auto; border-radius:2px; flex-shrink:0;
    cursor:pointer; object-fit:cover; aspect-ratio:4/3;
  }
  .building-photos .add-photo-tile{
    height:118px; width:96px; flex-shrink:0;
    border:1px dashed var(--blueprint); border-radius:2px;
    display:flex; align-items:center; justify-content:center;
    font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--blueprint);
    text-align:center; cursor:pointer; padding:6px;
  }

  .building-details{
    margin-top:18px; padding:16px 18px;
    background:var(--paper); border:1px solid var(--line); border-radius:3px;
  }
  .building-details .bd-label{
    font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:.08em;
    text-transform:uppercase; color:var(--blueprint); margin-bottom:10px;
  }
  .building-details ul{
    margin:0; padding:0; list-style:none;
    display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:8px 20px;
  }
  .building-details li{
    font-size:13.5px; color:#3F3F3C; line-height:1.4;
    padding-left:16px; position:relative;
  }
  .building-details li::before{
    content:"—"; position:absolute; left:0; color:var(--brass-dark);
  }
  .building-details textarea{
    width:100%; font-family:'IBM Plex Sans', sans-serif; font-size:13.5px;
    padding:10px 12px; border:1px solid var(--line); border-radius:3px;
    min-height:140px; line-height:1.5;
  }

  .unit-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(260px, 1fr));
    gap:20px;
  }
  .unit-card{
    background:var(--white);
    border:1px solid var(--line);
    border-radius:var(--radius);
    overflow:hidden;
    position:relative;
    display:flex; flex-direction:column;
  }
  .unit-photo{
    aspect-ratio:4/3;
    background:var(--paper-dim);
    position:relative;
    overflow:hidden;
    cursor:pointer;
  }
  .unit-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
  .unit-photo .no-photo{
    position:absolute; inset:0;
    display:flex; align-items:center; justify-content:center;
    font-family:'IBM Plex Mono', monospace;
    font-size:12px; color:#9AA1AC;
    text-align:center; padding:12px;
  }
  .photo-count{
    position:absolute; bottom:8px; right:8px;
    background:rgba(20,33,61,0.72);
    color:var(--white);
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    padding:2px 7px;
    border-radius:20px;
  }

  .stamp{
    position:absolute; top:12px; left:12px;
    font-family:'IBM Plex Mono', monospace;
    font-size:11px; font-weight:500;
    letter-spacing:.09em;
    text-transform:uppercase;
    padding:5px 10px;
    border:1.5px solid currentColor;
    border-radius:3px;
    transform:rotate(-4deg);
    z-index:2;
  }
  .stamp.available{ color:var(--brass-dark); background:rgba(246,243,236,0.92); }
  .stamp.occupied{ color:var(--brick); background:rgba(246,243,236,0.92); }
  .stamp.coming_soon{ color:var(--blueprint); background:rgba(246,243,236,0.92); }
  .stamp.owner_occupied{ color:var(--brick); background:rgba(246,243,236,0.92); }
  .unit-photo.coming-soon-blur img{ filter:blur(9px) saturate(0.9); transform:scale(1.08); }
  .unit-photo.coming-soon-blur .no-photo{ filter:blur(2px); }
  .unit-photo.coming-soon-blur::after{
    content:"";
    position:absolute; inset:0;
    background:rgba(20,33,61,0.14);
  }

  .unit-body{ padding:16px 18px 18px; flex:1; display:flex; flex-direction:column; gap:10px; }
  .unit-top{ display:flex; justify-content:space-between; align-items:baseline; }
  .unit-number{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px; letter-spacing:.06em;
    color:var(--blueprint); text-transform:uppercase;
  }
  .unit-price{
    font-family:'Space Grotesk', sans-serif;
    font-weight:700; font-size:21px; color:var(--ink);
  }
  .unit-price span{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px; color:#8A8F98; font-weight:400;
  }
  .unit-facts{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px; color:#6B7280;
    display:flex; gap:12px;
  }
  .unit-desc{ font-size:13.5px; line-height:1.5; color:#4B4B48; flex:1; }
  .unit-details{ margin:0; padding:0; list-style:none; }
  .unit-details li{
    font-size:12.5px; color:#4B4B48; line-height:1.5;
    padding-left:14px; position:relative;
  }
  .unit-details li::before{
    content:"—"; position:absolute; left:0; color:var(--brass-dark);
  }
  .unit-cta{
    margin-top:4px;
    display:inline-block;
    text-align:center;
    background:var(--ink);
    color:var(--white);
    font-size:13px; font-weight:500;
    padding:10px 14px;
    border-radius:var(--radius);
    text-decoration:none;
    transition:background .15s;
  }
  .unit-cta:hover{ background:var(--blueprint); }
  .unit-cta.disabled{
    background:var(--paper-dim); color:#9AA1AC; pointer-events:none;
  }

  .empty-state{
    border:1px dashed var(--line);
    border-radius:var(--radius);
    padding:48px 24px;
    text-align:center;
    color:#6B7280;
  }
  .empty-state h3{ margin-bottom:8px; color:var(--ink); }
  .empty-state button{
    margin-top:18px;
    background:var(--brass);
    color:var(--ink);
    border:none; font-weight:600;
    padding:10px 20px; border-radius:var(--radius);
  }

  /* ---------- Form fields ---------- */
  .field-row{ display:flex; gap:10px; flex-wrap:wrap; }
  .field{ display:flex; flex-direction:column; gap:4px; flex:1; min-width:110px; }
  .field label{
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    text-transform:uppercase; letter-spacing:.06em; color:var(--blueprint);
  }
  .field input, .field select, .field textarea{
    font-family:'IBM Plex Sans', sans-serif;
    font-size:13.5px;
    padding:7px 9px;
    border:1px solid var(--line);
    border-radius:3px;
    background:var(--white);
  }
  .field textarea{ resize:vertical; min-height:44px; }

  /* ---------- Lightbox ---------- */
  #lightbox{
    display:none;
    position:fixed; inset:0; z-index:50;
    background:rgba(20,33,61,0.92);
    align-items:center; justify-content:center;
    flex-direction:column; gap:16px;
    padding:24px;
  }
  #lightbox.open{ display:flex; }
  #lightbox img{ max-width:min(92vw, 720px); max-height:70vh; border-radius:4px; }
  #lightbox .lb-controls{ display:flex; gap:14px; align-items:center; }
  #lightbox button{
    background:var(--brass); color:var(--ink); border:none;
    padding:8px 14px; border-radius:3px; font-weight:600; font-size:13px;
  }
  #lightbox .lb-close{ background:transparent; color:var(--white); border:1px solid rgba(255,255,255,.4); }
  #lightbox .lb-count{ color:var(--paper); font-family:'IBM Plex Mono', monospace; font-size:12px; }

  /* ---------- Contact / footer ---------- */
  .contact{
    background:var(--ink); color:var(--paper);
    padding:48px 24px; margin-top:20px;
  }
  .contact-inner{ max-width:920px; margin:0 auto; display:flex; justify-content:space-between; flex-wrap:wrap; gap:24px; }
  .contact h3{ color:var(--white); font-size:20px; }
  .contact-details{ font-family:'IBM Plex Mono', monospace; font-size:13px; color:#B9C2CE; margin-top:10px; line-height:1.9; }
  .contact-details a{ color:var(--brass); text-decoration:none; }
  footer.fineprint{
    text-align:center; font-size:11.5px; color:#8A8F98;
    padding:18px; font-family:'IBM Plex Mono', monospace;
    display:flex; align-items:center; justify-content:center; gap:8px;
  }

  .save-toast{
    position:fixed; bottom:20px; left:50%; transform:translate(-50%, 20px);
    background:var(--ink); color:var(--white);
    padding:10px 18px; border-radius:24px; font-size:13px;
    opacity:0; pointer-events:none; transition:opacity .25s, transform .25s;
    z-index:70;
    display:flex; align-items:center; gap:8px;
  }
  .save-toast.show{ opacity:1; transform:translate(-50%, 0); }
  .save-toast .dot{ width:7px; height:7px; border-radius:50%; background:var(--brass); }

  /* ---------- Contact form ---------- */
  .inquiry-section{
    background:var(--white);
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
    padding:56px 24px;
  }
  .inquiry-inner{ max-width:640px; margin:0 auto; }
  .inquiry-inner .eyebrow{ color:var(--blueprint); }
  .inquiry-inner .eyebrow::before{ background:var(--blueprint); }
  .inquiry-inner h2{ font-size:28px; margin-top:4px; }
  .inquiry-inner p.sub{ color:#6B7280; font-size:14.5px; margin-top:8px; line-height:1.5; }

  .portal-cta{
    display:flex; align-items:center; justify-content:space-between; gap:14px;
    background:var(--paper); border:1px solid var(--line); border-radius:4px;
    padding:16px 18px; margin:24px 0 32px; flex-wrap:wrap;
  }
  .portal-cta .pc-text b{ display:block; color:var(--ink); font-size:14.5px; }
  .portal-cta .pc-text span{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:#6B7280; }
  .portal-cta a{
    background:var(--brass); color:var(--ink); font-weight:600; font-size:13.5px;
    padding:10px 18px; border-radius:3px; text-decoration:none; white-space:nowrap;
  }

  .inquiry-form{ display:flex; flex-direction:column; gap:16px; }
  .inquiry-form .field-row{ display:flex; gap:14px; flex-wrap:wrap; }
  .inquiry-form .field{ flex:1; min-width:200px; }
  .inquiry-form label{
    display:block; font-family:'IBM Plex Mono', monospace; font-size:11px;
    letter-spacing:.06em; text-transform:uppercase; color:var(--blueprint); margin-bottom:6px;
  }
  .inquiry-form input, .inquiry-form select, .inquiry-form textarea{
    width:100%; font-family:'IBM Plex Sans', sans-serif; font-size:14.5px;
    padding:11px 12px; border:1px solid var(--line); border-radius:3px; background:var(--paper);
  }
  .inquiry-form input:focus, .inquiry-form select:focus, .inquiry-form textarea:focus{
    outline:none; border-color:var(--blueprint); background:var(--white);
  }
  .inquiry-form textarea{ min-height:90px; resize:vertical; }
  .inquiry-submit{
    background:var(--ink); color:var(--white); border:none; font-weight:600; font-size:14.5px;
    padding:13px 20px; border-radius:3px; align-self:flex-start;
  }
  .inquiry-submit:hover{ background:var(--blueprint); }
  .inquiry-note{ font-size:12px; color:#9AA1AC; margin-top:-4px; }
  .inquiry-success{
    display:none; background:var(--brass-dim); border:1px solid var(--brass);
    border-radius:4px; padding:14px 16px; font-size:13.5px; color:var(--ink);
  }
  .inquiry-success.show{ display:block; }
  .field-error{ border-color:var(--brick) !important; }

  @media (max-width:600px){
    .contact-inner{ flex-direction:column; }
    .hero-buildings{ opacity:0.28; }
  }

/* ---------- Site nav ---------- */
.site-nav{ display:flex; align-items:center; gap:22px; }
.site-nav a{
  color:var(--paper); text-decoration:none;
  font-family:'IBM Plex Mono', monospace; font-size:12.5px;
  letter-spacing:.08em; text-transform:uppercase;
  border-bottom:1px solid transparent; padding-bottom:2px;
  transition:color .15s, border-color .15s;
}
.site-nav a:hover, .site-nav a.current{ color:var(--brass); border-color:var(--brass); }

/* ---------- Compact page hero (subpages) ---------- */
.page-hero{
  position:relative; overflow:hidden;
  background:var(--ink); color:var(--paper);
  padding:28px 24px 54px;
}
.page-hero .topline{ margin-bottom:44px; }
.page-hero .page-title{ max-width:920px; margin:0 auto; position:relative; z-index:2; }
.page-hero h1{
  font-family:'Space Grotesk', sans-serif; font-size:clamp(30px, 5vw, 44px);
  color:var(--white); letter-spacing:-0.01em; margin:10px 0 0;
}
.page-hero .eyebrow{ margin-bottom:0; }

/* ---------- Prose pages ---------- */
.page-wrap{ max-width:840px; margin:0 auto; padding:56px 24px 90px; }
.prose h2{
  font-family:'Space Grotesk', sans-serif; font-size:22px; color:var(--ink);
  margin:38px 0 12px;
}
.prose h2:first-child{ margin-top:0; }
.prose h3{ font-family:'Space Grotesk', sans-serif; font-size:17px; color:var(--ink); margin:26px 0 8px; }
.prose p{ font-size:15px; line-height:1.75; color:#3F4450; margin:0 0 14px; }
.prose ul{ margin:0 0 16px 20px; }
.prose li{ font-size:15px; line-height:1.75; color:#3F4450; margin-bottom:6px; }
.prose .updated{
  font-family:'IBM Plex Mono', monospace; font-size:12px; color:#8A8F98;
  margin-bottom:28px; display:block;
}
.prose a{ color:var(--brick); }
.fact-grid{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));
  gap:12px; margin:22px 0 6px;
}
.fact-card{
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius);
  padding:16px 18px;
}
.fact-card .fc-label{
  font-family:'IBM Plex Mono', monospace; font-size:10.5px;
  text-transform:uppercase; letter-spacing:.07em; color:var(--blueprint); margin-bottom:6px;
}
.fact-card .fc-value{ font-size:14.5px; color:var(--ink); font-weight:500; line-height:1.5; }

/* ---------- Structured site footer ---------- */
.site-footer{
  background:var(--ink); color:#B9C2CE;
  padding:46px 24px 0; margin-top:0;
}
.site-footer .sf-inner{
  max-width:920px; margin:0 auto;
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:34px;
  padding-bottom:34px;
}
.site-footer .sf-brand{ max-width:300px; }
.site-footer .sf-brand .sf-name{
  display:flex; align-items:center; gap:9px;
  font-family:'Space Grotesk', sans-serif; font-size:17px; color:var(--white); font-weight:600;
  margin-bottom:10px;
}
.site-footer .sf-brand p{ font-size:13px; line-height:1.7; margin:0; }
.site-footer h4{
  font-family:'IBM Plex Mono', monospace; font-size:11px; font-weight:500;
  text-transform:uppercase; letter-spacing:.09em; color:var(--brass);
  margin:0 0 12px;
}
.site-footer .sf-col div, .site-footer .sf-col a{
  display:block; font-size:13.5px; line-height:2; color:#B9C2CE; text-decoration:none;
}
.site-footer .sf-col a:hover{ color:var(--brass); }
.site-footer .sf-bottom{
  border-top:1px solid rgba(255,255,255,0.12);
  max-width:920px; margin:0 auto;
  padding:16px 0 22px;
  display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px;
  font-family:'IBM Plex Mono', monospace; font-size:11.5px; color:#8A8F98;
}
