/* ============================================================
   C&C Development — main.css
   Brand: dark green + white, warm neutral support
   ============================================================ */
:root{
  --green-950:#0c2b1d;
  --green-900:#123d2b;
  --green-800:#1a4f38;
  --green-700:#236c4c;
  --green-100:#e3efe8;
  --ink:#1c2420;
  --muted:#5c6a62;
  --line:#e2e6e2;
  --paper:#ffffff;
  --sand:#f6f4ef;
  --gold:#c2a064;
  --radius:14px;
  --shadow:0 10px 30px rgba(12,43,29,.10);
  --shadow-lg:0 24px 60px rgba(12,43,29,.16);
  --font-display:"Fraunces","Georgia",serif;
  --font-body:"Inter","Segoe UI",system-ui,sans-serif;
  --wrap:1200px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font-body);color:var(--ink);background:var(--paper);line-height:1.65;font-size:16.5px;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--green-800);text-decoration:none}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}

h1,h2,h3,.display{font-family:var(--font-display);font-weight:600;line-height:1.12;color:var(--green-950);letter-spacing:-.01em}
h1{font-size:clamp(2.3rem,5vw,3.8rem)}
h2{font-size:clamp(1.7rem,3.4vw,2.5rem)}
h3{font-size:1.25rem}
.kicker{display:inline-block;font-size:.78rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
.lead{font-size:1.15rem;color:var(--muted);max-width:62ch}
.center{text-align:center}.center .lead{margin-inline:auto}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:90;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.site-header.on-hero{background:transparent;border-color:transparent;position:fixed;left:0;right:0}
.site-header.on-hero.scrolled{background:rgba(12,43,29,.92);backdrop-filter:blur(12px)}
.nav-bar{display:flex;align-items:center;justify-content:space-between;height:76px}
.brand{display:inline-block;font-family:var(--font-display);font-size:1.35rem;font-weight:700;color:var(--green-950);white-space:nowrap}
.on-hero .brand{color:#fff}
.nav-links{display:flex;align-items:center;gap:6px;list-style:none}
.nav-links>li{position:relative}
.nav-links a{display:block;padding:10px 14px;font-size:.95rem;font-weight:500;color:var(--ink);border-radius:8px}
.on-hero .nav-links>li>a{color:rgba(255,255,255,.92)}
.nav-links>li>a:hover{background:rgba(18,61,43,.08)}
.on-hero .nav-links>li>a:hover{background:rgba(255,255,255,.14)}
.nav-links a.active{color:var(--green-800);font-weight:600}
.on-hero .nav-links a.active{color:#fff}
.dropdown{position:absolute;top:100%;left:0;min-width:240px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:8px;opacity:0;visibility:hidden;transform:translateY(8px);transition:.18s}
.nav-links li:hover .dropdown,.nav-links li:focus-within .dropdown{opacity:1;visibility:visible;transform:translateY(4px)}
.dropdown a{color:var(--ink)!important;font-weight:500;border-radius:8px;padding:10px 12px}
.dropdown a:hover{background:var(--green-100)}
.nav-cta{margin-left:10px;background:var(--green-900);color:#fff!important;border-radius:999px;padding:10px 22px!important;font-weight:600}
.nav-cta:hover{background:var(--green-800)!important}
.menu-btn{display:none;background:none;border:0;cursor:pointer;width:44px;height:44px;color:var(--green-950)}
.on-hero .menu-btn{color:#fff}
@media(max-width:1020px){
  .menu-btn{display:grid;place-items:center;position:relative;z-index:96}
  .menu-btn .i-close{display:none}
  .site-header.menu-open .i-burger{display:none}
  .site-header.menu-open .i-close{display:block}
  /* the floating-panel positioning (left:50% + transform) breaks layout on mobile —
     force the plain full-width bar. !important needed: the panel rules come later in this file */
  .site-header.on-hero{left:0!important;right:0!important;transform:none!important;width:100%!important;top:0!important;border-radius:0!important}
  /* safety net: nothing may force horizontal scrolling on phones.
     NOTE: must be `clip`, not `hidden` — overflow-x:hidden silently breaks
     position:sticky (the pinned hero) on iOS. */
  html,body{overflow-x:clip;max-width:100%}
  /* a generous tap target for the burger */
  .menu-btn{width:54px;height:54px}
  .menu-btn svg{width:32px;height:32px}
  /* header floats transparent above the curtain while the menu is open */
  .site-header.menu-open{background:transparent!important;border:0!important;backdrop-filter:none!important;z-index:97}
  .site-header.menu-open .brand{color:#fff!important;text-shadow:none}
  .site-header.menu-open .menu-btn{color:#fff}

  /* ===== the curtain: full-screen panel that slides down / back up ===== */
  .nav-links{
    position:fixed;inset:0;z-index:94;counter-reset:nav;
    display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:0;
    padding:max(13vh,104px) 30px 44px;overflow:auto;-webkit-overflow-scrolling:touch;
    background:linear-gradient(165deg,var(--green-950) 0%,#0f3826 55%,var(--green-800) 100%);
    transform:translateY(-102%);visibility:hidden;will-change:transform;
    transition:transform .65s cubic-bezier(.76,0,.24,1),visibility 0s .65s}
  .nav-links.open{transform:none;visibility:visible;transition:transform .65s cubic-bezier(.76,0,.24,1)}
  /* faint oversized monogram behind the items */
  .nav-links::before{content:"C&C";position:fixed;right:-4%;bottom:-6%;font-family:var(--font-display);
    font-size:46vw;font-weight:700;color:rgba(255,255,255,.04);pointer-events:none;line-height:1}

  /* items cascade in once the curtain lands — and stay visible so they
     ride the curtain back up on close instead of vanishing */
  .nav-links>li{counter-increment:nav}
  .nav-links.open>li{animation:navIn .55s cubic-bezier(.22,1,.36,1) both}
  .nav-links.open>li:nth-child(1){animation-delay:.30s}
  .nav-links.open>li:nth-child(2){animation-delay:.36s}
  .nav-links.open>li:nth-child(3){animation-delay:.42s}
  .nav-links.open>li:nth-child(4){animation-delay:.48s}
  .nav-links.open>li:nth-child(5){animation-delay:.54s}
  .nav-links.open>li:nth-child(6){animation-delay:.60s}
  .nav-links.open>li:nth-child(7){animation-delay:.68s}

  .nav-links>li>a{
    font-family:var(--font-display);font-size:clamp(1.65rem,7.5vw,2.3rem);font-weight:600;
    color:#fff!important;padding:15px 0;border-bottom:1px solid rgba(255,255,255,.13);
    display:flex;align-items:baseline;gap:16px;background:none!important;border-radius:0}
  .nav-links>li>a::before{
    content:"0" counter(nav);font-family:var(--font-body);font-size:.72rem;font-weight:700;
    color:var(--gold);letter-spacing:.18em;min-width:2em}

  /* submenus: indented, lighter, expand under their parent */
  .dropdown{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;
    background:transparent;padding:2px 0 8px 44px;display:none;min-width:0}
  .nav-links li.exp .dropdown{display:block}
  .dropdown a{color:rgba(255,255,255,.72)!important;font-size:1.08rem;padding:11px 0;background:none!important}
  .dropdown a:hover{color:#fff!important}

  /* contact: gold pill anchored after the list */
  .nav-cta{margin:30px 0 0;background:var(--gold)!important;color:#fff!important;
    font-family:var(--font-body)!important;font-size:1.08rem!important;font-weight:700;
    text-align:center;justify-content:center;display:flex;
    padding:17px!important;border-radius:999px;border-bottom:0!important;
    box-shadow:0 14px 34px rgba(0,0,0,.35)}
  .nav-cta::before{display:none!important;content:none!important}
}
@keyframes navIn{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* ---------- hero (pinned entry stage: blur melts away on scroll) ---------- */
.hero-stage{height:200vh;position:relative}
.hero{position:sticky;top:0;height:100vh;display:flex;align-items:center;color:#fff;background:var(--green-950);overflow:hidden}
.hero .bg{position:absolute;inset:-40px;background-size:cover;background-position:center}
.hero .bg-blur{filter:blur(16px);will-change:opacity}
.hero .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,43,29,.42) 0%,rgba(12,43,29,.22) 45%,rgba(12,43,29,.78) 100%)}
.hero .wrap,#loader .wrap{position:relative;width:100%;text-align:center;padding-top:90px}
.hero h1,#loader h1{color:#fff;font-size:clamp(2.6rem,5.6vw,4.6rem);max-width:18ch;margin:0 auto}
.hero .lead,#loader .lead{color:rgba(255,255,255,.88);margin:18px auto 0;max-width:52ch}
.hero-actions{display:flex;gap:14px;margin-top:30px;flex-wrap:wrap;justify-content:center}
/* the loader's copy of the centerpiece floats in; the real hero text beneath stays static
   so the crossfade reveals it in exactly the same place */
#loader .kicker{animation:floatUp .8s .35s ease both}
#loader h1{animation:floatUp .9s .5s ease both}
#loader .lead{animation:floatUp .9s .65s ease both}
#loader .hero-actions{animation:floatUp .9s .8s ease both}
.page-hero{background:var(--green-950);color:#fff;padding:140px 0 64px;position:relative;overflow:hidden}
.page-hero h1{color:#fff}
.page-hero .lead{color:rgba(255,255,255,.82);margin-top:14px}
.page-hero .bgimg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.22}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 28px;border-radius:999px;font-weight:600;font-size:.98rem;border:1.5px solid transparent;cursor:pointer;transition:.18s}
.btn-solid{background:var(--green-900);color:#fff}
.btn-solid:hover{background:var(--green-800);transform:translateY(-1px)}
.btn-light{background:#fff;color:var(--green-950)}
.btn-light:hover{transform:translateY(-1px)}
.btn-ghost{border-color:rgba(255,255,255,.55);color:#fff}
.btn-ghost:hover{background:rgba(255,255,255,.12)}
.btn-outline{border-color:var(--green-900);color:var(--green-900)}
.btn-outline:hover{background:var(--green-900);color:#fff}

/* ---------- sections ---------- */
section.block{padding:88px 0}
section.block.tight{padding:64px 0}
.bg-sand{background:var(--sand)}
.bg-green{background:var(--green-950);color:#fff}
.bg-green h2,.bg-green h3{color:#fff}
.bg-green .lead,.bg-green p{color:rgba(255,255,255,.82)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.split .media img,.media-frame img{border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;height:100%;object-fit:cover}
@media(max-width:880px){.split{grid-template-columns:1fr;gap:32px}}

/* stats */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:48px}
.stat{text-align:center;padding:28px 12px;border-radius:var(--radius)}
.stat .num{font-family:var(--font-display);font-size:clamp(2rem,4vw,3rem);font-weight:700;color:var(--gold)}
.stat .lbl{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;opacity:.8}
@media(max-width:720px){.stats{grid-template-columns:repeat(2,1fr)}}

/* cards */
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}
@media(max-width:980px){.grid-3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.grid-3,.grid-2{grid-template-columns:1fr}}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.22s;display:flex;flex-direction:column}
.card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}
.card .thumb{aspect-ratio:16/10;background:var(--green-100);overflow:hidden;position:relative}
.card .thumb img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.card:hover .thumb img{transform:scale(1.045)}
.card .body{padding:22px 24px 26px;display:flex;flex-direction:column;gap:8px;flex:1}
.card .body h3{font-size:1.22rem}
.card .meta{font-size:.85rem;color:var(--muted);display:flex;gap:14px;flex-wrap:wrap}
.card p.desc{font-size:.93rem;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card .more{margin-top:auto;padding-top:10px;font-weight:600;font-size:.92rem;color:var(--green-800)}
.badges{position:absolute;top:12px;left:12px;display:flex;gap:6px}
.badge{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.94);color:var(--green-900)}
.badge.prog{background:var(--gold);color:#fff}

/* feature tiles (home pillars) */
.tile{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:34px 30px;transition:.22s}
.tile:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.tile .ico{width:52px;height:52px;border-radius:12px;background:var(--green-100);color:var(--green-800);display:grid;place-items:center;margin-bottom:18px}
.tile h3{margin-bottom:10px}
.tile p{color:var(--muted);font-size:.96rem}
.tile a.more{display:inline-block;margin-top:14px;font-weight:600;font-size:.92rem}

/* ---------- projects page ---------- */
.filters{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;box-shadow:var(--shadow);position:relative;z-index:5;margin-top:-46px}
.filters .group{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pill{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:8px 16px;font-size:.88rem;font-weight:600;color:var(--muted);cursor:pointer;transition:.15s;font-family:var(--font-body)}
.pill:hover{border-color:var(--green-800);color:var(--green-800)}
.pill.active{background:var(--green-900);border-color:var(--green-900);color:#fff}
.filters select,.filters input[type=search]{border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;font-size:.9rem;font-family:var(--font-body);color:var(--ink);background:#fff;outline:none}
.filters select:focus,.filters input:focus{border-color:var(--green-800)}
.filters .spacer{flex:1}
.results-meta{color:var(--muted);font-size:.92rem;margin:26px 4px 18px}
.vline{width:1px;height:26px;background:var(--line)}

/* mobile: tighter rhythm */
@media(max-width:740px){
  section.block{padding:60px 0}
  section.block.tight{padding:44px 0}
  .stats{gap:10px}
}

/* mobile: compact stacked filter card */
@media(max-width:740px){
  .filters{
    display:grid;grid-template-columns:1fr 1fr;gap:10px;
    padding:14px;margin-top:-30px;border-radius:16px}
  .filters .vline,.filters .spacer{display:none}
  /* explicit stacking order: search → status → type → city/sort → map */
  .filters input[type=search]{order:-3;grid-column:1/-1;width:100%;padding:12px 16px;font-size:.95rem}
  .filters #f-status{order:-2}
  .filters #f-type{order:-1}
  /* pill rows swipe sideways instead of wrapping */
  .filters .group{
    grid-column:1/-1;flex-wrap:nowrap;overflow-x:auto;gap:6px;
    scrollbar-width:none;-ms-overflow-style:none;padding-bottom:2px}
  .filters .group::-webkit-scrollbar{display:none}
  .filters .pill{padding:8px 14px;font-size:.84rem;flex:none;white-space:nowrap}
  /* city + sort share a row; their buttons fill the cell */
  .filters .dd{width:100%}
  .filters .dd .dd-btn{width:100%;justify-content:space-between;padding:11px 16px}
  .filters .dd-menu{left:0;right:0;min-width:0}
  /* map toggle: full-width, centered */
  .filters > #map-btn{grid-column:1/-1;justify-content:center;padding:11px 16px}
}

/* ---------- project detail ---------- */
.proj-hero{position:relative;min-height:58vh;background:var(--green-950);display:flex;align-items:flex-end;color:#fff}
.proj-hero .bg{position:absolute;inset:0;background-size:cover;background-position:center}
.proj-hero .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,43,29,.30),rgba(12,43,29,.86))}
.proj-hero .wrap{position:relative;padding:150px 24px 54px}
.proj-hero h1{color:#fff}
.crumbs{font-size:.88rem;color:rgba(255,255,255,.75);margin-bottom:14px}
.crumbs a{color:rgba(255,255,255,.9)}
.proj-layout{display:grid;grid-template-columns:1fr 340px;gap:54px;align-items:start}
@media(max-width:920px){.proj-layout{grid-template-columns:1fr}}
.facts{background:var(--sand);border-radius:var(--radius);padding:30px;position:sticky;top:100px}
.facts h3{margin-bottom:16px}
.facts dl{display:grid;gap:0}
.facts .row{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--line);font-size:.95rem}
.facts .row:last-child{border:0}
.facts dt{color:var(--muted)}
.facts dd{font-weight:600;text-align:right;color:var(--green-950)}
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:34px}
.gallery img{border-radius:10px;aspect-ratio:4/3;object-fit:cover;width:100%;cursor:pointer;transition:.2s}
.gallery img:hover{transform:scale(1.02)}
@media(max-width:640px){.gallery{grid-template-columns:repeat(2,1fr)}}
.proj-nav{display:flex;justify-content:space-between;gap:16px;margin-top:60px;padding-top:30px;border-top:1px solid var(--line)}
.proj-nav a{font-weight:600}
.tagrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.tag{font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:6px 13px;border-radius:999px;background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.28)}

/* lightbox */
.lightbox{position:fixed;inset:0;background:rgba(10,20,15,.92);display:none;place-items:center;z-index:200;padding:30px;cursor:zoom-out}
.lightbox.open{display:grid}
.lightbox img{max-width:92vw;max-height:88vh;border-radius:10px}

/* ---------- prose pages ---------- */
.prose{max-width:760px}
.prose p{margin-bottom:1.2em;color:#33403a}
.prose h2{margin:1.6em 0 .6em}
.prose ul{margin:0 0 1.2em 1.2em;color:#33403a}
.prose li{margin-bottom:.45em}
.two-col-media{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-top:40px}
@media(max-width:640px){.two-col-media{grid-template-columns:1fr}}
.two-col-media img{border-radius:var(--radius);aspect-ratio:16/11;object-fit:cover;width:100%}

/* news */
.news-card{display:grid;grid-template-columns:280px 1fr;gap:28px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.2s}
.news-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}
.news-card .thumb{background:var(--green-100)}
.news-card .thumb img{width:100%;height:100%;object-fit:cover;min-height:190px}
.news-card .body{padding:26px 28px 26px 0;display:flex;flex-direction:column;gap:8px}
.news-card .date{font-size:.8rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
@media(max-width:700px){.news-card{grid-template-columns:1fr}.news-card .body{padding:0 24px 24px}}

/* contact */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:start}
@media(max-width:860px){.contact-grid{grid-template-columns:1fr}}
.info-list{display:grid;gap:18px}
.info-item{display:flex;gap:16px;align-items:flex-start}
.info-item .ico{width:46px;height:46px;flex:none;border-radius:12px;background:var(--green-100);color:var(--green-800);display:grid;place-items:center}
.info-item b{display:block;color:var(--green-950)}
form.contact{display:grid;gap:14px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:32px;box-shadow:var(--shadow)}
form.contact label{font-size:.85rem;font-weight:600;color:var(--green-950)}
form.contact input,form.contact textarea,form.contact select{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:12px 14px;font-family:var(--font-body);font-size:.95rem;outline:none;margin-top:5px}
form.contact input:focus,form.contact textarea:focus{border-color:var(--green-800)}

/* cta band */
.cta-band{background:linear-gradient(120deg,var(--green-950),var(--green-800));border-radius:20px;color:#fff;padding:64px 56px;display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap}
.cta-band h2{color:#fff}
.cta-band p{color:rgba(255,255,255,.8);margin-top:8px}

/* footer */
.site-footer{background:var(--green-950);color:rgba(255,255,255,.78);margin-top:90px}
.site-footer .top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:44px;padding:64px 0 48px}
@media(max-width:880px){.site-footer .top{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.site-footer .top{grid-template-columns:1fr}}
.site-footer h4{color:#fff;font-size:.85rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:16px}
.site-footer ul{list-style:none;display:grid;gap:9px}
.site-footer a{color:rgba(255,255,255,.78);font-size:.94rem}
.site-footer a:hover{color:#fff}
.site-footer .brandline{font-family:var(--font-display);font-size:1.5rem;color:#fff;margin-bottom:12px}
.site-footer .bottom{border-top:1px solid rgba(255,255,255,.14);padding:20px 0;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:.85rem}
.site-footer .bottom a{font-size:.85rem}

/* reveal animation */
.rv{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s ease}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}

/* placeholder thumb */
.ph{display:grid;place-items:center;width:100%;height:100%;background:linear-gradient(135deg,var(--green-100),#d3e4da);color:var(--green-800);font-family:var(--font-display);font-size:1.6rem}

/* ============ v2: motion ============ */
@keyframes kenburns{from{transform:scale(1.02)}to{transform:scale(1.12)}}
.page-hero .bgimg,.proj-hero .bg{animation:kenburns 18s ease-out forwards}
@keyframes floatUp{from{opacity:0;transform:translateY(34px)}to{opacity:1;transform:none}}
.page-hero .kicker{animation:floatUp .6s .1s ease both}
.page-hero h1{animation:floatUp .7s .22s ease both}
.page-hero .lead{animation:floatUp .7s .38s ease both}
.tile .ico{transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.tile:hover .ico{transform:translateY(-6px) rotate(-4deg) scale(1.08)}
.btn{transition:transform .18s,background .18s,box-shadow .18s}
.btn-solid:hover,.btn-light:hover{box-shadow:0 10px 24px rgba(12,43,29,.25)}
.cta-band{position:relative;overflow:hidden}
.cta-band::before{content:"";position:absolute;width:380px;height:380px;border-radius:50%;background:rgba(255,255,255,.06);top:-200px;right:-100px;animation:pulse 7s ease-in-out infinite;pointer-events:none}
.cta-band::after{content:"";position:absolute;width:240px;height:240px;border-radius:50%;background:rgba(255,255,255,.05);bottom:-140px;left:6%;animation:pulse 9s 1s ease-in-out infinite;pointer-events:none}
.cta-band>div,.cta-band>a{position:relative;z-index:1}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}
.card .more{transition:gap .2s,letter-spacing .2s}
.card:hover .more{letter-spacing:.02em;color:var(--green-950)}
@media(prefers-reduced-motion:reduce){.hero .bg,.page-hero .bgimg,.proj-hero .bg,.cta-band::before,.cta-band::after{animation:none}}

/* ============ v2: custom dropdown ============ */
.dd{position:relative}
.dd-btn{display:inline-flex;align-items:center;gap:10px;border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:9px 18px;font-size:.88rem;font-weight:600;color:var(--ink);cursor:pointer;font-family:var(--font-body);transition:.15s;white-space:nowrap}
.dd-btn:hover{border-color:var(--green-800)}
.dd.open .dd-btn{border-color:var(--green-900);background:var(--green-100)}
.dd-btn .car{transition:transform .2s;color:var(--muted);font-size:.7rem}
.dd.open .car{transform:rotate(180deg)}
.dd-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:200px;max-height:300px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);padding:6px;z-index:40;opacity:0;visibility:hidden;transform:translateY(6px) scale(.98);transition:.16s;scrollbar-width:thin;scrollbar-color:#c8d4cc transparent}
.dd.open .dd-menu{opacity:1;visibility:visible;transform:none}
.dd-menu::-webkit-scrollbar{width:8px}
.dd-menu::-webkit-scrollbar-thumb{background:#c8d4cc;border-radius:99px}
.dd-menu button{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;border:0;background:none;border-radius:9px;padding:9px 13px;font-size:.9rem;font-family:var(--font-body);color:var(--ink);cursor:pointer}
.dd-menu button:hover{background:var(--green-100)}
.dd-menu button.sel{background:var(--green-900);color:#fff;font-weight:600}

/* ============ v2: maps ============ */
.map-toggle-row{display:flex;justify-content:flex-end;margin-top:18px}
.map-panel{height:0;overflow:hidden;transition:height .45s cubic-bezier(.4,0,.2,1);border-radius:var(--radius)}
.map-panel.open{height:480px;margin-top:18px;box-shadow:var(--shadow)}
.map-panel .leaflet-container,#proj-map .leaflet-container{height:100%;width:100%;border-radius:var(--radius)}
#proj-map{height:340px;border-radius:var(--radius);overflow:hidden;margin-top:22px;box-shadow:var(--shadow)}
.leaflet-popup-content-fixed a{font-weight:600}
.cc-pin{background:var(--green-900);width:30px;height:30px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2.5px solid #fff;box-shadow:0 3px 8px rgba(0,0,0,.35)}
.cc-pin::after{content:"";position:absolute;inset:8px;background:#fff;border-radius:50%}
.leaflet-popup-content{font-family:var(--font-body)!important;font-size:.88rem!important}
.leaflet-popup-content b{font-family:var(--font-display);font-size:1rem;color:var(--green-950)}

/* ============ v2: waitlist + extras ============ */
.badge.wl{background:var(--green-900);color:#fff}
.tag.wl{background:var(--gold);border-color:var(--gold);color:#fff}
.facts .row dd a{color:var(--green-800)}
.bed-chips{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.bed-chips span{font-size:.74rem;font-weight:700;background:var(--green-100);color:var(--green-900);border-radius:99px;padding:3px 9px}
.wl-banner{display:flex;align-items:center;gap:10px;background:linear-gradient(100deg,var(--gold),#d4b67e);color:#fff;border-radius:12px;padding:13px 18px;font-weight:600;margin-bottom:22px;box-shadow:0 8px 22px rgba(194,160,100,.35)}

/* ampersand: Fraunces' default & is quirky — swap in a classic, normal-looking serif glyph */
.amp{font-family:Georgia,"Times New Roman",serif;font-style:normal;font-weight:inherit;color:inherit}

/* ============ amenities ============ */
.amen-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:20px}
.amen{display:flex;align-items:center;gap:11px;background:var(--sand);border:1px solid var(--line);border-radius:11px;padding:11px 14px;font-size:.88rem;font-weight:500;color:var(--ink)}
.amen svg{color:var(--green-800);flex:none}
.bg-sand .amen{background:#fff}

/* ============ hero floating menu panel → morphs into the top bar ============ */
.site-header.on-hero{
  left:50%;transform:translateX(-50%);width:100%;
  will-change:top,width,border-radius;
  transition:top .7s cubic-bezier(.4,0,.2,1),width .7s cubic-bezier(.4,0,.2,1),
    border-radius .7s cubic-bezier(.4,0,.2,1),background .6s ease,box-shadow .6s ease,border-color .6s ease}
.site-header.on-hero.float:not(.docked){
  top:max(9vh,72px);width:min(1100px,94vw);border-radius:999px;
  background:rgba(12,43,29,.55);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1px solid rgba(255,255,255,.16);box-shadow:0 24px 60px rgba(0,0,0,.35)}
/* one-time entrance (keeps the centering translate in its keyframes) */
.site-header.on-hero.intro{animation:panelIn .9s .1s ease both}
@keyframes panelIn{from{opacity:0;transform:translate(-50%,26px)}to{opacity:1;transform:translate(-50%,0)}}
.site-header.preload{opacity:0!important}
.site-header.on-hero{transition-property:top,width,border-radius,background,box-shadow,border-color,opacity;transition-duration:.7s,.7s,.7s,.6s,.6s,.6s,.9s}

/* ============ branded loading screen (home) ============
   sits ABOVE the hero photo but BELOW the hero text, so the
   centerpiece is visible on the green screen from the start */
#loader{position:fixed;inset:0;background:var(--green-950);z-index:300;display:flex;align-items:center;color:#fff;
  clip-path:inset(0 0 0 0);transition:clip-path 1.05s cubic-bezier(.72,0,.25,1)}
/* the whole loading screen — green background, pill, headline copy — wipes away
   left-to-right, revealing the live hero (photo, glass panel, headline) beneath */
#loader.swipe{clip-path:inset(0 0 0 100%);pointer-events:none}
.load-pill{
  position:absolute;top:max(9vh,72px);left:50%;transform:translateX(-50%);
  width:min(1100px,94vw);height:64px;border-radius:999px;background:#fdfdfb;
  overflow:hidden;display:flex;align-items:center;box-shadow:0 24px 60px rgba(0,0,0,.4);
  animation:panelIn .8s .1s ease both}
.load-fill{position:absolute;inset:0;width:0;background:linear-gradient(90deg,var(--green-100),#cde2d5);transition:width 4.7s cubic-bezier(.3,.5,.45,1)}
.load-brand{position:relative;z-index:1;font-family:var(--font-display);font-weight:700;font-size:1.35rem;color:var(--green-950);padding-left:34px;white-space:nowrap}
@media(max-width:1020px){.load-pill{height:54px}.load-brand{font-size:1.1rem;padding-left:24px}}
.site-header.on-hero.float:not(.docked) .nav-bar{height:64px}
.site-header.on-hero.float.docked{top:0;width:100%;border-radius:0;background:rgba(12,43,29,.93);backdrop-filter:blur(12px)}
.on-hero .nav-cta{background:var(--gold)!important;color:#fff!important;font-weight:700}
.on-hero .nav-cta:hover{filter:brightness(1.08)}

/* scroll cue */
.scroll-cue{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;color:rgba(255,255,255,.75);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;pointer-events:none}
.scroll-cue .line{width:1.5px;height:44px;background:rgba(255,255,255,.5);overflow:hidden;position:relative}
.scroll-cue .line::after{content:"";position:absolute;left:0;top:-50%;width:100%;height:50%;background:#fff;animation:cueDrop 1.8s ease-in-out infinite}
@keyframes cueDrop{0%{top:-50%}100%{top:110%}}

/* ============ reveal variants — the "exhibit" motion language ============ */
.rv-zoom{opacity:0;transform:scale(.88);transition:opacity .8s ease,transform .8s cubic-bezier(.22,1.4,.36,1)}
.rv-zoom.in{opacity:1;transform:none}
.rv-left{opacity:0;transform:translateX(-60px);transition:opacity .7s ease,transform .7s cubic-bezier(.22,1,.36,1)}
.rv-left.in{opacity:1;transform:none}
.rv-right{opacity:0;transform:translateX(60px);transition:opacity .7s ease,transform .7s cubic-bezier(.22,1,.36,1)}
.rv-right.in{opacity:1;transform:none}
.rv-pop{opacity:0;transform:translateY(46px) scale(.92);transition:opacity .6s ease,transform .65s cubic-bezier(.34,1.56,.64,1)}
.rv-pop.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv-zoom,.rv-left,.rv-right,.rv-pop{opacity:1;transform:none;transition:none}}

/* ============ exhibits (home) ============ */
.exhibit{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(28px,5vw,70px);align-items:center;padding:clamp(40px,6vh,80px) 0;position:relative}
.exhibit:nth-child(even){grid-template-columns:.85fr 1.15fr}
.exhibit:nth-child(even) .ex-media{order:2}
.exhibit:nth-child(even) .ex-info{order:1;text-align:right}
.exhibit:nth-child(even) .ex-info .ex-meta{justify-content:flex-end}
.ex-media{position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-lg);aspect-ratio:16/10;display:block}
.ex-media img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.22,1,.36,1)}
.ex-media:hover img{transform:scale(1.05)}
.ex-media .ex-badges{position:absolute;top:16px;left:16px;display:flex;gap:7px}
.ex-num{position:absolute;top:-26px;font-family:var(--font-display);font-size:clamp(4rem,8vw,7rem);font-weight:700;color:transparent;-webkit-text-stroke:1.5px rgba(18,61,43,.18);line-height:1;pointer-events:none;user-select:none}
.exhibit:nth-child(odd) .ex-num{right:0}
.exhibit:nth-child(even) .ex-num{left:0}
.ex-info h3{font-size:clamp(1.6rem,2.6vw,2.2rem);margin-bottom:10px}
.ex-info .ex-meta{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:.88rem;margin-bottom:14px}
.ex-info p{color:var(--muted);font-size:1rem;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.ex-info .more{display:inline-block;margin-top:18px;font-weight:600;color:var(--green-800);border-bottom:2px solid var(--gold);padding-bottom:3px}
@media(max-width:860px){
  .exhibit,.exhibit:nth-child(even){grid-template-columns:1fr}
  .exhibit:nth-child(even) .ex-media{order:1}
  .exhibit:nth-child(even) .ex-info{order:2;text-align:left}
  .ex-num{display:none}
}

/* marquee strip (gallery wall divider) */
.strip{background:var(--green-950);color:rgba(255,255,255,.5);overflow:hidden;padding:18px 0;white-space:nowrap}
.strip .inner{display:inline-block;animation:marquee 36s linear infinite;font-family:var(--font-display);font-size:1.1rem;letter-spacing:.08em}
.strip .inner span{margin:0 28px;color:rgba(255,255,255,.65)}
.strip .inner b{color:var(--gold);font-weight:600}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.strip .inner{animation:none}}

/* full-bleed parallax quote band */
.band{position:relative;min-height:420px;background-size:cover;background-position:center;background-attachment:fixed;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff}
.band::before{content:"";position:absolute;inset:0;background:rgba(12,43,29,.58)}
.band .inner{position:relative;max-width:840px;padding:70px 24px}
.band blockquote{font-family:var(--font-display);font-size:clamp(1.5rem,3vw,2.3rem);font-weight:600;line-height:1.35}
.band cite{display:block;margin-top:16px;font-style:normal;font-size:.82rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
@media(max-width:900px),(prefers-reduced-motion:reduce){.band{background-attachment:scroll}}

/* news strip on home */
.newsline{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media(max-width:860px){.newsline{grid-template-columns:1fr}}
.newsline a{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:.2s}
.newsline a:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.newsline .nthumb{aspect-ratio:16/9;background:var(--green-100);overflow:hidden}
.newsline .nthumb img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.newsline a:hover .nthumb img{transform:scale(1.05)}
.newsline .nbody{padding:20px 22px 24px}
.newsline .date{font-size:.74rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.newsline h3{font-size:1.05rem;margin:8px 0 6px}
.newsline p{font-size:.88rem;color:var(--muted)}

/* (hero menu panel styles live in the "hero floating menu panel" section above) */

