
  /* Self-hosted production faces — Fraunces (display) + Inter (body). Distinct from John Connell's Cormorant Garamond + Montserrat. */
  @font-face{font-family:'Fraunces';src:url(fonts/fraunces-400.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap;}
  @font-face{font-family:'Fraunces';src:url(fonts/fraunces-400i.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap;}
  @font-face{font-family:'Fraunces';src:url(fonts/fraunces-600.woff2) format('woff2');font-weight:600;font-style:normal;font-display:swap;}
  @font-face{font-family:'Inter';src:url(fonts/inter-var.woff2) format('woff2');font-weight:100 900;font-style:normal;font-display:swap;}
  :root{
    --char:#141013; --char-2:#1E181C; --char-3:#241D22;
    --cream:#FAF7F5; --cream-2:#F4ECEF; --blush:#FFE8F3;
    --ink:#1B1619; --ink-soft:#6A5F65; --ink-faint:#9A8D93;
    --paper:#F2EAEE; --paper-soft:#C9BCC3; --paper-faint:#8E8188;
    --pink:#FF1BA2; --pink-2:#FE66B7; --pink-deep:#D1017F;
    --line-d:rgba(255,255,255,.14); --line-d2:rgba(255,255,255,.07);
    --line-l:rgba(20,16,19,.13); --line-l2:rgba(20,16,19,.07);
    --serif:'Fraunces','Hoefler Text','Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif;
    --sans:'Inter',-apple-system,BlinkMacSystemFont,'Helvetica Neue','Segoe UI',system-ui,sans-serif;
    --maxw:1480px; --gutter:clamp(20px,4.5vw,76px);   /* wide, capped on large monitors */
    --ease:cubic-bezier(.65,.05,.36,1);
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;overflow-x:clip;}
  body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);
    font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
    overflow-x:clip;}   /* nothing may widen the viewport — reveal transforms included */
  .wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);}
  h1,h2,h3,h4{font-family:var(--serif);font-weight:400;letter-spacing:-.015em;text-wrap:balance;margin:0;}
  img{display:block;max-width:100%;}
  a{color:inherit;text-decoration:none;}
  .eyebrow{font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.26em;
    text-transform:uppercase;color:var(--pink-deep);display:inline-flex;align-items:center;gap:11px;}
  .eyebrow::before{content:"";width:24px;height:1px;background:var(--pink);}
  .eyebrow.on-dark{color:var(--pink-2);}
  .btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--sans);font-weight:600;
    font-size:14px;letter-spacing:.02em;padding:14px 26px;border-radius:2px;cursor:pointer;
    min-height:52px;   /* one shared control height site-wide (round-3 brief §3) */
    border:1px solid transparent;transition:transform .25s ease,background .25s ease,color .25s ease,box-shadow .25s ease;
    box-shadow:0 6px 24px -8px rgba(255,27,162,.6);}
  .btn:hover{box-shadow:0 12px 36px -6px rgba(255,27,162,.9);}
  .btn-pink{background:var(--pink);color:#fff;}
  .btn-pink:hover{background:var(--pink-deep);transform:translateY(-2px);}
  .btn-ghost{background:transparent;border-color:currentColor;color:inherit;box-shadow:0 6px 22px -10px rgba(255,27,162,.45);}
  .btn-ghost:hover{transform:translateY(-2px);}
  .btn-ghost.on-dark{color:var(--paper);}
  .formcard .btn-ghost{color:var(--ink);}
  /* Standardised CTA pairs (round-3 brief §3): buttons stacked in one .cta2 share the
     same width, height, padding and radius; on small screens they go full-width.
     The base gap matters: contact/detail heroes use a bare .cta2 with no parent rule,
     and without it the pair sat flush together (round-3.1 client feedback). */
  .cta2{display:flex;flex-wrap:wrap;gap:14px;align-items:center;}
  .cta2 .btn{min-width:300px;text-align:center;}
  .formcard .cta2{margin-top:14px;}
  .formcard .cta2 .btn{width:100%;min-width:0;}
  /* a lone CTA stacked under a form card matches the card's 520px column */
  .ctaband .cta2.stack{max-width:520px;margin:18px auto 0;}
  .ctaband .cta2.stack .btn{width:100%;min-width:0;}

  /* ---------- Header (logo + hamburger) ---------- */
  header{position:fixed;top:0;left:0;right:0;z-index:50;padding:16px 0;
    transition:background .35s ease,box-shadow .35s ease,padding .35s ease;}
  header .bar{display:flex;align-items:center;justify-content:space-between;gap:18px;}
  .brand{display:flex;align-items:center;}
  .brand-logo{height:72px;width:auto;display:block;transition:height .35s ease;}   /* doubled — prominent once loaded */
  header.solid{background:var(--char);box-shadow:0 1px 0 var(--line-d2),0 10px 30px -18px rgba(0,0,0,.7);padding:10px 0;}
  header.solid .brand-logo{height:56px;}
  @media(max-width:720px){.brand-logo{height:54px;} header.solid .brand-logo{height:44px;}}
  .hamburger{display:inline-flex;flex-direction:column;justify-content:center;align-items:flex-end;gap:6px;
    width:48px;height:48px;padding:0 8px;background:transparent;border:0;cursor:pointer;}
  .hamburger span{display:block;height:2px;width:28px;background:#fff;border-radius:2px;transition:.3s;box-shadow:0 0 10px rgba(255,27,162,.5);}
  .hamburger span:nth-child(2){width:19px;}
  .hamburger:hover span{background:var(--pink-2);}
  .hamburger:hover span:nth-child(2){width:28px;}

  /* ---------- Hero ---------- */
  .hero{position:relative;min-height:100vh;display:flex;align-items:flex-end;
    background:#000;overflow:hidden;}
  .hero .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
  .hero .scrim{position:absolute;inset:0;
    background:linear-gradient(180deg,rgba(15,11,14,.62) 0%,rgba(15,11,14,.12) 34%,rgba(15,11,14,.30) 62%,rgba(15,11,14,.86) 100%);}
  .hero .inner{position:relative;z-index:2;width:100%;padding-bottom:clamp(38px,7vh,74px);padding-top:150px;}
  .hero h1{color:#fff;font-size:clamp(42px,7.4vw,88px);line-height:1.0;letter-spacing:-.025em;margin:22px 0 0;}
  .hero h1 em{font-style:italic;color:var(--pink-2);}
  .hero .sub{color:rgba(255,255,255,.9);font-size:clamp(16px,1.9vw,20px);margin:20px 0 0;max-width:44ch;}
  .videotag{position:absolute;top:120px;right:var(--gutter);z-index:2;display:flex;align-items:center;gap:9px;
    color:rgba(255,255,255,.82);font-size:12px;letter-spacing:.14em;text-transform:uppercase;}
  .videotag .play{width:34px;height:34px;border:1px solid rgba(255,255,255,.5);border-radius:50%;
    display:grid;place-items:center;}
  .videotag .play::before{content:"";border-left:9px solid #fff;border-top:6px solid transparent;border-bottom:6px solid transparent;margin-left:3px;}
  @media(max-width:640px){.videotag{display:none;}}

  /* search pill */
  .search{margin-top:34px;background:rgba(20,16,19,.42);backdrop-filter:blur(14px);
    border:1px solid rgba(255,255,255,.18);border-radius:4px;padding:8px;max-width:640px;
    display:flex;flex-direction:column;gap:0;}
  .search .tabs{display:flex;gap:2px;}
  .search .tabs button{flex:0 0 auto;background:transparent;border:0;color:rgba(255,255,255,.72);
    font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
    padding:9px 15px;border-radius:2px;cursor:pointer;transition:.2s;}
  .search .tabs button.on{background:var(--pink);color:#fff;}
  .search .tabs button:not(.on):hover{color:#fff;}
  .search .row{display:flex;gap:8px;padding:8px 4px 4px;}
  .search input{flex:1;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);
    border-radius:2px;padding:13px 15px;color:#fff;font-family:var(--sans);font-size:15px;}
  .search input::placeholder{color:rgba(255,255,255,.55);}
  .hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px;align-items:center;}
  .hero-cta .call{color:#fff;font-family:var(--sans);font-size:14px;}
  .hero-cta .call b{font-size:17px;}

  /* ---------- Proof bar ---------- */
  .proof{background:var(--char);color:var(--paper);border-top:1px solid var(--line-d2);}
  /* keep the shared .wrap gutters — `padding:34px 0` was wiping them, pinning the three
     stats to the screen edges on mobile (round-3 brief §2) */
  .proof .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:26px 20px;
    padding:34px var(--gutter);}
  .proof .stat{display:flex;flex-direction:column;gap:5px;min-width:120px;}
  .proof .stat b{font-family:var(--serif);font-size:clamp(28px,3.4vw,38px);color:#fff;line-height:1;font-variant-numeric:tabular-nums;}
  .proof .stat span{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--paper-faint);}
  .proof .stat .stars{color:var(--pink-2);letter-spacing:2px;font-size:14px;}
  .proof .stat a{display:flex;flex-direction:column;gap:5px;color:inherit;transition:color .2s ease;}
  .proof .stat a:hover b{color:var(--pink-2);}

  /* ---------- Section scaffold ---------- */
  section{padding:clamp(64px,10vh,116px) 0;}
  .sec-head{display:flex;flex-direction:column;gap:16px;margin-bottom:46px;}
  .sec-head h2{font-size:clamp(30px,4.6vw,50px);line-height:1.05;}
  .sec-head .row{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;}
  .sec-head p{color:var(--ink-soft);margin:0;max-width:52ch;}

  /* Featured listings */
  .listings{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;}
  @media(max-width:880px){.listings{grid-template-columns:1fr;max-width:440px;margin:0 auto;}}
  .lcard{background:#fff;border:1px solid var(--line-l);border-radius:3px;overflow:hidden;
    transition:transform .3s ease,box-shadow .3s ease;}
  .lcard:hover{transform:translateY(-4px);box-shadow:0 30px 60px -34px rgba(20,16,19,.4);}
  .lcard .ph{position:relative;aspect-ratio:4/3;overflow:hidden;}
  .lcard .ph img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease;}
  .lcard:hover .ph img{transform:scale(1.05);}
  .lcard .body{padding:20px 20px 24px;}
  .lcard .price{font-family:var(--serif);font-size:23px;color:var(--ink);}
  .lcard .addr{font-size:15px;color:var(--ink-soft);margin-top:3px;}
  /* Clean card treatment (Aug 2026 brief): no divider line above the specs row,
     pink bed/bath/car icons, land size in plain black text. */
  .lcard .specs{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:14px;
    font-size:13.5px;color:var(--ink);font-variant-numeric:tabular-nums;}
  .lcard .specs .spec-ic{display:inline-flex;align-items:center;gap:6px;font-weight:600;}
  .lcard .specs .spec-ic svg{width:18px;height:18px;color:var(--pink);flex:none;}
  .lcard .specs .spec-land{color:var(--ink);}
  /* Upcoming open home (Sep 2026): "OPEN SAT 10:00–10:30AM" in pink under the spec icons,
     fed from VaultRE inspection times; rendered only while the open home is still ahead. */
  .open-home{margin-top:12px;font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.14em;
    text-transform:uppercase;color:var(--pink-deep);font-variant-numeric:tabular-nums;}
  .center-more{text-align:center;margin-top:44px;}
  .center-more a{color:var(--pink-deep);font-weight:600;font-size:14px;letter-spacing:.02em;}
  /* Editorial arrow links (View Properties →, Meet the team → …) — never underlined. */
  .morelink{color:var(--pink-deep);font-weight:600;font-size:14px;letter-spacing:.02em;}
  .morelink:hover{color:var(--pink);}
  .morelink.on-dark{color:var(--pink-2);}
  .morelink.on-dark:hover{color:#fff;}

  /* New Era story — dark editorial band */
  .story{background:var(--char);color:var(--paper);position:relative;}
  .story .grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(34px,5vw,72px);align-items:center;}
  @media(max-width:860px){.story .grid{grid-template-columns:1fr;}}
  .story h2{color:#fff;font-size:clamp(30px,4.4vw,50px);line-height:1.06;}
  .story .lead{font-size:19px;color:#fff;margin:22px 0 0;line-height:1.5;}
  .story p{color:var(--paper-soft);margin:16px 0 0;font-size:15.5px;}
  /* No divider above the profiles, and matching white circle backgrounds (Aug 2026 brief). */
  .story .sign{display:flex;gap:20px;margin-top:34px;}
  .story .who{display:flex;align-items:center;gap:13px;color:inherit;transition:transform .2s ease;}
  a.who:hover{transform:translateY(-2px);}
  a.who:hover .nm{color:var(--pink-2);}
  .story .who img{width:52px;height:52px;border-radius:50%;object-fit:cover;object-position:top;border:1px solid var(--line-d);background:#fff;}
  .story .who .nm{font-family:var(--serif);font-size:17px;color:#fff;line-height:1.1;white-space:nowrap;}
  .story .who .rl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--pink-2);margin-top:3px;white-space:nowrap;}
  .story .art{position:relative;border-radius:3px;overflow:hidden;aspect-ratio:4/5;}
  .story .art img{width:100%;height:100%;object-fit:cover;}
  .story .art .cap{position:absolute;left:0;right:0;bottom:0;padding:24px 22px;
    background:linear-gradient(0deg,rgba(15,11,14,.9),transparent);}
  .story .art .cap .l{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#fff;line-height:2.1;}

  /* Appraisal band */
  .appraise{background:var(--cream-2);}
  .appraise .box{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(30px,5vw,64px);align-items:center;}
  @media(max-width:820px){.appraise .box{grid-template-columns:1fr;}}
  .appraise h2{font-size:clamp(30px,4.6vw,52px);line-height:1.04;}
  .appraise h2 em{font-style:italic;color:var(--pink-deep);}
  .appraise p{color:var(--ink-soft);margin:18px 0 0;}
  .appraise .cta2{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:28px;}
  .appraise .rev{display:flex;align-items:center;gap:12px;}
  .appraise .rev .stars{color:var(--pink);letter-spacing:2px;}
  .appraise .rev small{color:var(--ink-soft);font-size:13px;}
  .appraise .form{background:#fff;border:1px solid var(--line-l);border-radius:4px;padding:26px;box-shadow:0 30px 60px -40px rgba(20,16,19,.5);}
  .appraise .form .fl{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 16px;}
  .appraise .form input{width:100%;border:0;border-bottom:1px solid var(--line-l);padding:12px 2px;
    font-family:var(--sans);font-size:15px;color:var(--ink);margin-bottom:14px;background:transparent;}
  .appraise .form input::placeholder{color:var(--ink-faint);}
  .appraise .form .btn-pink{width:100%;justify-content:center;margin-top:8px;}
  .appraise .form .fine{font-size:11.5px;color:var(--ink-faint);margin:14px 0 0;text-align:center;}

  /* Reviews */
  .reviews{background:var(--char);color:var(--paper);}
  .reviews .sec-head h2{color:#fff;}
  .reviews .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
  @media(max-width:880px){.reviews .grid{grid-template-columns:1fr;}}
  .rev-card{border:1px solid var(--line-d);border-radius:3px;padding:28px 26px;background:var(--char-2);
    display:flex;flex-direction:column;gap:16px;}
  .rev-card .rev-head{display:flex;align-items:baseline;gap:10px;}
  .rev-card .stars{color:var(--pink-2);letter-spacing:3px;font-size:15px;}
  .rev-card .vc{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--paper-soft);}
  .rev-card .q{font-family:var(--serif);font-size:19px;line-height:1.45;color:#fff;}
  .rev-src{text-align:center;margin-top:40px;font-size:13.5px;color:var(--paper-soft);}
  .rev-src b{color:#fff;}

  /* Team */
  .team .grid{display:grid;grid-template-columns:repeat(2,1fr);gap:26px;}
  @media(max-width:760px){.team .grid{grid-template-columns:1fr;max-width:420px;margin:0 auto;}}
  .tcard{display:flex;gap:22px;align-items:center;background:#fff;border:1px solid var(--line-l);border-radius:3px;padding:20px;
    transition:transform .3s ease,box-shadow .3s ease;}
  .tcard:hover{transform:translateY(-3px);box-shadow:0 26px 50px -36px rgba(20,16,19,.42);}
  /* window shows the top ~85% of the 620x930 portrait — tall enough that the black
     under-tops and shirts stay visible (round-3.1 client feedback) */
  .tcard img{width:104px;height:145px;object-fit:cover;object-position:top;border-radius:2px;flex:0 0 auto;}
  .tcard .role{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--pink-deep);}
  .tcard h3{font-size:23px;margin:6px 0 4px;}
  .tcard p{font-size:14px;color:var(--ink-soft);margin:0 0 12px;}
  .tcard .contact{font-size:13.5px;color:var(--ink);font-weight:600;}
  .team .note{text-align:center;margin-top:34px;color:var(--ink-soft);font-size:15px;}
  .team .note a{color:var(--pink-deep);font-weight:600;border-bottom:1px solid var(--pink);}

  /* PM band */
  .pm{background:var(--char);color:var(--paper);}
  .pm .box{display:flex;justify-content:space-between;align-items:center;gap:34px;flex-wrap:wrap;}
  .pm h2{color:#fff;font-size:clamp(26px,3.8vw,42px);line-height:1.08;max-width:16ch;}
  .pm p{color:var(--paper-soft);margin:16px 0 0;max-width:40ch;font-size:15.5px;}

  /* Final CTA */
  .final{background:linear-gradient(160deg,#241019,var(--char) 60%);color:#fff;text-align:center;}
  .final h2{font-size:clamp(34px,5.6vw,64px);line-height:1.02;}
  .final h2 em{font-style:italic;color:var(--pink-2);}
  .final p{color:var(--paper-soft);margin:20px auto 0;max-width:44ch;}
  .final .cta2{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:34px;}

  /* Footer */
  footer{background:var(--char);color:var(--paper-soft);border-top:1px solid var(--line-d2);padding:60px 0 40px;}
  footer .top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:36px;}
  @media(max-width:900px){footer .top{grid-template-columns:1fr 1fr;gap:26px;}}
  @media(max-width:560px){footer .top{grid-template-columns:1fr;}}
  footer .soc{display:flex;gap:14px;margin-top:40px;}
  footer .soc a{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;
    border-radius:50%;color:var(--paper-soft);border:1px solid var(--line-d2);padding:0;
    transition:color .2s ease,border-color .2s ease,transform .2s ease;}
  footer .soc a svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;
    stroke-linecap:round;stroke-linejoin:round;}
  footer .soc a:hover{color:var(--pink-2);border-color:var(--pink);transform:translateY(-2px);}
  footer .nm{font-family:var(--serif);font-size:22px;color:#fff;}
  footer .tp{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--pink-2);margin:6px 0 16px;}
  footer p{margin:4px 0;font-size:14px;}
  footer h4{font-family:var(--sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--paper-faint);margin:0 0 14px;font-weight:600;}
  footer a{display:block;font-size:14px;padding:4px 0;color:var(--paper-soft);}
  footer a:hover{color:#fff;}
  footer .base{margin-top:44px;padding-top:22px;border-top:1px solid var(--line-d2);display:flex;
    justify-content:space-between;flex-wrap:wrap;gap:10px 18px;font-size:12.5px;color:var(--paper-faint);}
  footer .base .credit{display:inline-flex;align-items:center;gap:8px;}
  footer .base .tp-pink{color:var(--pink-2);font-weight:600;}
  footer .base .pat{display:inline-flex;align-items:center;gap:7px;color:var(--paper-soft);transition:color .2s;}
  footer .base .pat img{height:19px;width:auto;display:inline-block;opacity:.92;transition:opacity .2s;}
  footer .base .pat:hover{color:#fff;} footer .base .pat:hover img{opacity:1;}

  .rv{opacity:0;transform:translateY(20px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1);}
  .rv.in{opacity:1;transform:none;}
  @media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none;} html{scroll-behavior:auto;}}
  :focus-visible{outline:2px solid var(--pink);outline-offset:3px;}

  /* ============ Multi-page router ============ */
  .page{display:none;padding:0;}
  .page.active{display:block;}

  /* ============ Home hero — Ducks Lane film loop ============ */
  @keyframes bob{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(7px);opacity:1}}
  @media(prefers-reduced-motion:reduce){.hero video.bg{display:none;}}
  .footer-logo{height:42px;width:auto;display:block;margin-bottom:14px;}
  /* Ducks Lane showcase button */
  .hero .watch{display:inline-flex;align-items:center;gap:11px;color:#fff;font-family:var(--sans);
    font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:transparent;border:0;padding:6px 0;}
  .hero .watch .pl{width:40px;height:40px;border:1px solid rgba(255,255,255,.5);border-radius:50%;
    display:grid;place-items:center;transition:.25s;box-shadow:0 0 18px rgba(255,27,162,.45);}
  .hero .watch:hover .pl{background:var(--pink);border-color:var(--pink);box-shadow:0 0 26px rgba(255,27,162,.8);}
  .hero .watch .pl::before{content:"";border-left:11px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent;margin-left:3px;}
  /* Ducks Lane film — replaces the hero banner in place (no popup) */
  .hero .hero-film{position:absolute;inset:0;z-index:8;background:#000;opacity:0;visibility:hidden;
    transition:opacity .6s ease,visibility .6s;pointer-events:none;overflow:hidden;}
  .hero .hero-film.on{opacity:1;visibility:visible;pointer-events:auto;}
  .hero .hero-film video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000;}
  .hero .hero-film iframe{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
    width:100vw;height:56.25vw;min-height:100%;min-width:177.78vh;border:0;}   /* cover the banner */
  .hero .film-close{position:absolute;top:clamp(84px,13vh,120px);right:clamp(18px,4vw,40px);z-index:2;
    background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.45);color:#fff;font-size:26px;line-height:1;
    width:50px;height:50px;border-radius:50%;cursor:pointer;transition:.25s;box-shadow:0 0 20px rgba(255,27,162,.45);}
  .hero .film-close:hover{background:var(--pink);border-color:var(--pink);transform:rotate(90deg);}
  .hero.film-playing .inner{opacity:0;pointer-events:none;transition:opacity .5s ease;}

  /* ============ Right slide-out sidebar (black) ============ */
  #sb-overlay{position:fixed;inset:0;z-index:70;background:rgba(10,7,9,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
    opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s;}
  #sb-overlay.open{opacity:1;visibility:visible;}
  .sidebar{position:fixed;top:0;right:0;bottom:0;z-index:71;width:min(90vw,420px);
    background:var(--char);color:#fff;display:flex;flex-direction:column;
    transform:translateX(100%);transition:transform .5s cubic-bezier(.5,0,.2,1);
    box-shadow:-30px 0 80px -30px rgba(0,0,0,.6);padding:24px clamp(26px,4vw,40px) 30px;overflow-y:auto;}
  .sidebar.open{transform:translateX(0);}
  .sb-close{align-self:flex-end;background:transparent;border:0;color:#fff;font-size:36px;line-height:1;cursor:pointer;
    width:44px;height:44px;opacity:.85;transition:opacity .2s,transform .3s;}
  .sb-close:hover{opacity:1;transform:rotate(90deg);}
  .sb-nav{display:flex;flex-direction:column;gap:26px;margin-top:10px;flex:1;}
  .sb-group{display:flex;flex-direction:column;gap:3px;}
  .sb-label{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
    color:rgba(255,255,255,.62);margin-bottom:5px;}
  /* Menu refinement (Aug 2026 brief): elegant serif navigation links under small
     uppercase sans section headings; "Contact" styled exactly like the links above it. */
  .sb-nav a{font-family:var(--serif);font-weight:400;font-size:21px;letter-spacing:.002em;color:#fff;line-height:1.35;
    transition:color .2s,text-shadow .2s,padding .2s;width:fit-content;}
  .sb-nav a:hover,.sb-nav a:focus-visible{color:var(--pink);text-shadow:0 0 16px rgba(255,27,162,.6);padding-left:6px;}
  .sb-nav a[aria-current="page"]{color:var(--pink);}
  .sb-foot{margin-top:28px;padding-top:22px;border-top:1px solid rgba(255,255,255,.28);}
  .sb-social{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:22px;}
  .sb-social a{position:relative;display:inline-flex;align-items:center;justify-content:center;
    width:42px;height:42px;border-radius:50%;color:#fff;opacity:.92;
    border:1px solid rgba(255,255,255,.35);transition:transform .22s ease,background .22s ease,color .22s ease,opacity .22s ease;}
  .sb-social a svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;
    stroke-linecap:round;stroke-linejoin:round;}
  .sb-social a:hover,.sb-social a:focus-visible{opacity:1;color:var(--pink);border-color:var(--pink);
    box-shadow:0 0 16px rgba(255,27,162,.45);transform:translateY(-2px);outline:none;}
  /* tooltip text comes from aria-label, so the accessible name and the visible one cannot drift */
  .sb-social a::after{content:attr(aria-label);position:absolute;bottom:calc(100% + 9px);left:50%;
    transform:translateX(-50%) translateY(4px);background:var(--char-3);color:#fff;font-family:var(--sans);
    font-size:10.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;padding:6px 10px;
    border-radius:3px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;}
  .sb-social a::before{content:"";position:absolute;bottom:calc(100% + 4px);left:50%;
    transform:translateX(-50%) translateY(4px);border:5px solid transparent;border-top-color:var(--char-3);
    opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;}
  .sb-social a:hover::after,.sb-social a:focus-visible::after,
  .sb-social a:hover::before,.sb-social a:focus-visible::before{opacity:1;transform:translateX(-50%) translateY(0);}
  .sb-book{display:block;text-align:center;background:var(--pink);color:#fff;font-family:var(--sans);
    font-weight:700;font-size:14px;letter-spacing:.06em;text-transform:uppercase;padding:16px;border-radius:3px;
    box-shadow:0 10px 30px -10px rgba(0,0,0,.4);transition:transform .25s ease,box-shadow .25s ease,background .25s ease;}
  .sb-book:hover{background:var(--pink-deep);transform:translateY(-2px);box-shadow:0 16px 42px -10px rgba(0,0,0,.55);}

  /* ============ Sub-page components ============ */
  .pagehero{position:relative;background:var(--char);color:var(--paper);
    padding:clamp(122px,20vh,180px) 0 clamp(48px,8vh,82px);overflow:hidden;}
  .pagehero.img{background:#000;}
  .pagehero .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.48;}
  .pagehero .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,11,14,.72),rgba(15,11,14,.5) 55%,rgba(15,11,14,.92));}
  .pagehero .wrap{position:relative;z-index:2;}
  .pagehero h1{color:#fff;font-size:clamp(34px,5.6vw,64px);line-height:1.03;margin:18px 0 0;letter-spacing:-.02em;}
  .pagehero h1 em{font-style:italic;color:var(--pink-2);}
  .sec-head h2 em{font-style:italic;color:var(--pink-deep);}
  .sec-head.on-dark h2 em,.band-dark .sec-head h2 em,.reviews .sec-head h2 em{color:var(--pink-2);}
  .pagehero .sub{color:var(--paper-soft);font-size:clamp(16px,1.9vw,20px);max-width:54ch;margin:18px 0 0;}
  /* Breadcrumbs: all grey, current page bold (Aug 2026 brief). */
  .crumbs{font-size:12.5px;color:var(--paper-faint);letter-spacing:.02em;}
  .crumbs a{color:var(--paper-faint);} .crumbs a:hover{color:#fff;} .crumbs span{color:var(--paper-faint);font-weight:700;}
  .subnav{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px;}
  .subnav a{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--paper);padding:9px 16px;
    border:1px solid var(--line-d);border-radius:100px;transition:.2s;}
  .subnav a:hover,.subnav a.on{background:var(--pink);border-color:var(--pink);color:#fff;}

  .g2{display:grid;grid-template-columns:1fr 1fr;gap:26px;}
  .g3{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
  .g4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;}
  @media(max-width:880px){.g3,.g4{grid-template-columns:1fr 1fr;}}
  @media(max-width:600px){.g2,.g3,.g4{grid-template-columns:1fr;}}

  .lead-p{font-size:20px;line-height:1.55;color:var(--ink);max-width:60ch;}
  .band-dark .lead-p{color:#fff;}
  .prose{max-width:70ch;}
  .prose h2{font-size:clamp(26px,3.6vw,38px);margin:0 0 18px;line-height:1.1;}
  .prose h3{font-size:22px;margin:34px 0 10px;}
  .prose p{color:var(--ink-soft);margin:0 0 18px;font-size:17px;line-height:1.72;}
  .prose strong{color:var(--ink);font-weight:600;}
  .prose blockquote{margin:28px 0;padding-left:22px;border-left:2px solid var(--pink);font-family:var(--serif);
    font-size:23px;line-height:1.4;color:var(--ink);font-style:italic;}
  .band-dark .prose p{color:var(--paper-soft);} .band-dark .prose strong{color:#fff;} .band-dark .prose blockquote{color:#fff;}

  .feature{background:#fff;border:1px solid var(--line-l);border-radius:3px;padding:26px 24px;}
  .feature.on-dark,.band-dark .feature{background:var(--char-2);border-color:var(--line-d);}
  .feature .ic{font-family:var(--serif);color:var(--pink-deep);font-size:15px;}
  .feature h3{font-size:20px;margin:10px 0 8px;line-height:1.2;}
  .feature p{font-size:14.5px;color:var(--ink-soft);margin:0;}
  .band-dark .feature h3,.feature.on-dark h3{color:#fff;}
  .band-dark .feature p,.feature.on-dark p{color:var(--paper-soft);}
  .band-dark .feature .ic,.feature.on-dark .ic{color:var(--pink-2);}

  .checklist{list-style:none;padding:0;margin:0;display:grid;gap:13px;}
  .checklist li{position:relative;padding-left:30px;font-size:15.5px;color:var(--ink-soft);}
  .checklist li::before{content:"";position:absolute;left:2px;top:5px;width:14px;height:8px;
    border-left:2px solid var(--pink);border-bottom:2px solid var(--pink);transform:rotate(-45deg);}
  .band-dark .checklist li{color:var(--paper-soft);}

  .steps{display:grid;gap:0;}
  .stepx{display:grid;grid-template-columns:60px 1fr;gap:22px;padding:22px 0;border-top:1px solid var(--line-l);}
  .stepx:first-child{border-top:none;}
  .stepx .n{font-family:var(--serif);font-size:30px;color:var(--pink-deep);line-height:1;font-variant-numeric:tabular-nums;}
  .stepx h3{font-size:21px;margin:0 0 6px;}
  .stepx p{font-size:15px;color:var(--ink-soft);margin:0;}
  .band-dark .stepx{border-color:var(--line-d);} .band-dark .stepx h3{color:#fff;}
  .band-dark .stepx p{color:var(--paper-soft);} .band-dark .stepx .n{color:var(--pink-2);}

  .split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,64px);align-items:center;}
  .split.rev .media{order:2;}
  @media(max-width:820px){.split{grid-template-columns:1fr;}.split.rev .media{order:0;}}
  .split .media{border-radius:3px;overflow:hidden;aspect-ratio:4/3;}
  .split .media img{width:100%;height:100%;object-fit:cover;}
  .split h2{font-size:clamp(26px,3.8vw,42px);line-height:1.08;}

  .faq{border-top:1px solid var(--line-l);}
  .faq details{border-bottom:1px solid var(--line-l);}
  .faq summary{cursor:pointer;list-style:none;padding:20px 0;font-family:var(--serif);font-size:19px;color:var(--ink);
    display:flex;justify-content:space-between;gap:16px;align-items:center;}
  .faq summary::-webkit-details-marker{display:none;}
  .faq summary::after{content:"+";color:var(--pink-deep);font-family:var(--sans);font-size:24px;transition:.2s;line-height:1;}
  .faq details[open] summary::after{transform:rotate(45deg);}
  .faq p{color:var(--ink-soft);margin:0 0 20px;font-size:15.5px;max-width:74ch;}
  .band-dark .faq,.band-dark .faq details{border-color:var(--line-d);}
  .band-dark .faq summary{color:#fff;} .band-dark .faq p{color:var(--paper-soft);}

  .statgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;}
  @media(max-width:720px){.statgrid{grid-template-columns:1fr 1fr;}}
  .statgrid .s b{font-family:var(--serif);font-size:clamp(30px,4vw,44px);color:var(--ink);display:block;line-height:1;font-variant-numeric:tabular-nums;}
  .statgrid .s span{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-top:8px;display:block;}
  .band-dark .statgrid .s b{color:#fff;} .band-dark .statgrid .s span{color:var(--paper-faint);}

  .filters{background:#fff;border:1px solid var(--line-l);border-radius:4px;padding:12px;display:flex;gap:10px;flex-wrap:wrap;
    box-shadow:0 24px 46px -32px rgba(20,16,19,.4);}
  .filters select,.filters input{border:1px solid var(--line-l);border-radius:2px;padding:12px 14px;font-family:var(--sans);
    font-size:14px;color:var(--ink);background:var(--cream);flex:1;min-width:130px;}
  .filters .btn-pink{flex:0 0 auto;}
  .pilltabs{display:inline-flex;gap:2px;background:var(--cream-2);border-radius:100px;padding:4px;margin-bottom:24px;}
  /* five pills don't fit a phone in one row — wrap inside a soft rectangle instead of
     pushing "Commercial" past the screen edge (round-3 brief §1) */
  @media(max-width:640px){.pilltabs{flex-wrap:wrap;border-radius:20px;max-width:100%;}}
  .pilltabs button{border:0;background:transparent;font-family:var(--sans);font-weight:600;font-size:13px;color:var(--ink-soft);
    padding:9px 18px;border-radius:100px;cursor:pointer;transition:.2s;}
  .pilltabs button.on{background:var(--pink);color:#fff;}

  .band-dark{background:var(--char);color:var(--paper);}
  .band-dark h2,.band-dark h3{color:#fff;}
  .band-dark .sec-head p,.band-dark .muted{color:var(--paper-soft);}
  .band-blush{background:var(--blush);}
  .band-cream2{background:var(--cream-2);}

  /* Community — "Proudly supporting" organisation list (Aug 2026 brief). */
  .supporting{list-style:none;margin:22px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 40px;max-width:720px;}
  @media(max-width:600px){.supporting{grid-template-columns:1fr;}}
  .supporting li{font-family:var(--serif);font-size:21px;color:var(--ink);padding:10px 0;border-bottom:1px solid var(--line-l2);}

  /* Property management "What we do" — six clean, understated tiles (Aug 2026 brief):
     3 × 2 on desktop, subtle borders, pink only in the small category headings. */
  .pmtiles{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:34px;}
  @media(max-width:900px){.pmtiles{grid-template-columns:1fr 1fr;}}
  @media(max-width:600px){.pmtiles{grid-template-columns:1fr;}}
  .pmtile{background:#fff;border:1px solid var(--line-l);border-radius:3px;padding:26px 24px;}
  .pmtile .cat{display:block;font-family:var(--sans);font-size:10.5px;font-weight:600;
    letter-spacing:.2em;text-transform:uppercase;color:var(--pink-deep);}
  .pmtile h3{font-family:var(--serif);font-size:20px;margin:12px 0 0;color:var(--ink);}
  .pmtile p{font-size:14.5px;color:var(--ink-soft);margin:10px 0 0;line-height:1.55;}

  /* Full-bleed dark CTA (Aug 2026 brief): the dark reaches both screen edges — no
     blush gutters — while the copy/form keep their contained layout. */
  .ctafull{background:linear-gradient(160deg,#241019,var(--char) 60%);}
  .ctafull .ctaband{background:none;border-radius:0;box-shadow:none;}
  .ctaband{background:linear-gradient(160deg,#241019,var(--char) 60%);color:#fff;text-align:center;border-radius:5px;
    padding:clamp(40px,6vw,66px);}
  .ctaband h2{font-size:clamp(28px,4.4vw,46px);line-height:1.05;}
  .ctaband h2 em{font-style:italic;color:var(--pink-2);}
  .ctaband p em{font-style:italic;color:var(--pink-2);}
  .ctaband p{color:var(--paper-soft);max-width:48ch;margin:16px auto 0;}
  .ctaband .cta2{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:28px;}

  .formcard{background:#fff;border:1px solid var(--line-l);border-radius:4px;padding:30px;box-shadow:0 30px 60px -40px rgba(20,16,19,.5);}
  .formcard .fl{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 18px;}
  .formcard label{display:block;font-size:12px;color:var(--ink-faint);margin:0 0 5px;letter-spacing:.04em;}
  .formcard input,.formcard select,.formcard textarea{width:100%;border:0;border-bottom:1px solid var(--line-l);padding:11px 2px;
    font-family:var(--sans);font-size:15px;color:var(--ink);margin-bottom:16px;background:transparent;}
  .formcard textarea{resize:vertical;min-height:82px;}
  .formcard .btn-pink{width:100%;justify-content:center;margin-top:6px;}
  .formcard .fine{font-size:11.5px;color:var(--ink-faint);margin:14px 0 0;text-align:center;}

  .profile{display:grid;grid-template-columns:330px 1fr;gap:clamp(28px,4vw,56px);align-items:start;}
  @media(max-width:760px){.profile{grid-template-columns:1fr;}}
  .profile .photo{border-radius:4px;overflow:hidden;aspect-ratio:4/5;background:var(--char-2);}
  .profile .photo img{width:100%;height:100%;object-fit:cover;object-position:top;}
  .profile .role{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--pink-2);}
  .profile h1{color:#fff;font-size:clamp(34px,5vw,56px);margin:12px 0 0;}
  .profile .contactrow{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px;}

  .contactgrid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,52px);}
  @media(max-width:820px){.contactgrid{grid-template-columns:1fr;}}
  .infocard{display:grid;gap:16px;}
  .infocard .row{display:flex;gap:14px;align-items:flex-start;padding-bottom:16px;border-bottom:1px solid var(--line-l);}
  .infocard .row .k{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);width:92px;flex:0 0 auto;padding-top:3px;}
  .infocard .row .v{font-size:16px;color:var(--ink);} .infocard .row .v b{font-family:var(--serif);font-weight:400;}
  .mapph{border-radius:4px;overflow:hidden;min-height:300px;background:linear-gradient(135deg,var(--char-2),var(--char));
    display:grid;place-items:center;color:var(--paper-faint);font-size:12px;letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--line-l);}

  .chip-pill{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
    padding:5px 11px;border-radius:100px;background:var(--blush);color:var(--pink-deep);}
  .prose-narrow{max-width:60ch;margin:0 auto;}
  .divider{height:1px;background:var(--line-l);border:0;margin:0;}

  /* ============ Scroll-story reveal system ============ */
  .sr{opacity:0;transform:translateY(46px);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:var(--sd,0s);will-change:opacity,transform;}
  .sr.in{opacity:1;transform:none;}
  .sr.l{transform:translateX(-54px);} .sr.r{transform:translateX(54px);} .sr.s{transform:scale(.92);}
  /* on phones the sideways slide reads as content bleeding off the left edge mid-reveal
     (round-3 brief §1) — keep the reveal, make it vertical only */
  /* …and kill the per-item stagger (--sd) on phones: mid-flight, staggered items paint
     below their slot, reading as a detached heading above and a button overlapping the
     last list item (round-3.1 client screenshots). !important beats the inline --sd. */
  @media(max-width:820px){
    .sr,.sr-clip{--sd:0s !important;}
    .sr{transform:translateY(14px);}
    .sr.l,.sr.r{transform:translateY(14px);}
    .sr.in{transform:none;}
  }
  .sr-clip{clip-path:inset(0 14% 100% 14%);opacity:.35;transition:clip-path 1.2s var(--ease),opacity .7s ease;transition-delay:var(--sd,0s);}
  .sr-clip.in{clip-path:inset(0 0 0 0);opacity:1;}
  @media(prefers-reduced-motion:reduce){.sr,.sr-clip{opacity:1 !important;transform:none !important;clip-path:none !important;transition:none !important;}}

  /* ============ Selling page — story experience ============ */
  .thesis{background:var(--char);color:#fff;text-align:center;overflow:hidden;}
  .thesis h2{font-size:clamp(34px,6.6vw,86px);line-height:1.02;letter-spacing:-.025em;color:#fff;}
  .thesis h2 .line{display:block;}
  .thesis h2 em{font-style:italic;color:var(--pink-2);}
  .thesis p{max-width:54ch;margin:30px auto 0;color:var(--paper-soft);font-size:19px;}
  .thesis.light{background:var(--blush);}
  .thesis.light h2,.thesis.light h2 .line{color:var(--ink);}
  .thesis.light h2 em{color:var(--pink-deep);}
  .thesis.light p{color:var(--ink-soft);}
  .pull{max-width:900px;margin:0 auto;text-align:center;}
  .pull p{font-family:var(--serif);font-style:italic;font-size:clamp(23px,3.6vw,40px);line-height:1.3;color:var(--ink);margin:0;}
  .pull p em{color:var(--pink-deep);}
  /* the journey */
  .journey{position:relative;max-width:820px;margin:0 auto;}
  .journey-line{position:absolute;left:31px;top:28px;bottom:64px;width:2px;background:var(--line-l);border-radius:2px;overflow:hidden;}
  .journey-fill{position:absolute;top:0;left:0;width:100%;height:var(--fill,0%);
    background:linear-gradient(180deg,var(--pink),var(--pink-2));box-shadow:0 0 16px rgba(255,27,162,.6);}
  .jstep{position:relative;display:grid;grid-template-columns:64px 1fr;gap:28px;padding-bottom:clamp(42px,6.5vh,76px);align-items:start;}
  .jstep:last-child{padding-bottom:0;}
  .jnum{position:relative;z-index:2;width:64px;height:64px;border-radius:50%;display:grid;place-items:center;
    font-family:var(--serif);font-size:25px;background:var(--cream-2);border:2px solid var(--line-l);color:var(--ink-faint);
    transition:background .55s var(--ease),color .55s var(--ease),border-color .55s var(--ease),box-shadow .55s var(--ease),transform .55s var(--ease);}
  .jstep.in .jnum{background:var(--pink);border-color:var(--pink);color:#fff;transform:scale(1.05);
    box-shadow:0 0 0 6px rgba(255,27,162,.12),0 14px 32px -10px rgba(255,27,162,.6);}
  .jbody{padding-top:9px;}
  .jkicker{font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--pink-deep);}
  .jbody h3{font-size:clamp(22px,3vw,30px);margin:9px 0 10px;line-height:1.12;}
  .jbody p{color:var(--ink-soft);font-size:16px;max-width:54ch;margin:0;line-height:1.6;}
  @media(max-width:560px){.jstep{grid-template-columns:48px 1fr;gap:18px;}
    .journey-line{left:23px;} .jnum{width:48px;height:48px;font-size:20px;}}
  /* checklist tick-in (each li is .sr l with its own --sd) */
  .checklist li{margin:0;}
  /* scroll hint under the hero */
  .scrollhint{display:inline-flex;flex-direction:column;align-items:center;gap:7px;margin-top:26px;
    font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--paper-faint);}
  .scrollhint .ch{font-size:1.2rem;line-height:0;animation:bob 1.9s var(--ease) infinite;}
  /* ---- selling-page imagery ---- */
  .thesis{position:relative;overflow:hidden;}
  .thesis .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.2;}
  .thesis .scrim{position:absolute;inset:0;background:linear-gradient(180deg,var(--char),rgba(20,16,19,.55) 45%,var(--char));}
  .thesis .wrap{position:relative;z-index:2;}
  .philo{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(34px,5vw,72px);align-items:start;}
  .philo .prose{max-width:none;}
  .philo-img{border-radius:4px;overflow:hidden;aspect-ratio:3/4;box-shadow:0 40px 80px -50px rgba(20,16,19,.55);}
  .philo-img img{width:100%;height:100%;object-fit:cover;}
  @media(max-width:860px){.philo{grid-template-columns:1fr;} .philo-img{aspect-ratio:16/10;order:-1;}}
  .journey-wrap{display:grid;grid-template-columns:1fr minmax(0,400px);gap:clamp(40px,5vw,80px);align-items:start;}
  .journey.solo{max-width:760px;margin-top:34px;}
  .journey-wrap .journey{max-width:none;margin:0;}
  .journey-aside{position:sticky;top:100px;border-radius:4px;overflow:hidden;aspect-ratio:3/4;box-shadow:0 40px 80px -50px rgba(20,16,19,.55);}
  .journey-aside img{width:100%;height:100%;object-fit:cover;}
  .journey-aside .cap{position:absolute;left:0;right:0;bottom:0;padding:22px 22px 20px;background:linear-gradient(0deg,rgba(15,11,14,.9),transparent);}
  .journey-aside .cap .l{color:#fff;font-size:11px;letter-spacing:.2em;text-transform:uppercase;line-height:2;}
  @media(max-width:900px){.journey-wrap{grid-template-columns:1fr;} .journey-aside{display:none;}}
  .pullband{position:relative;overflow:hidden;padding:clamp(96px,17vh,190px) 0;}
  .pullband .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
  .pullband .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,11,14,.7),rgba(15,11,14,.5) 50%,rgba(15,11,14,.8));}
  .pullband .wrap{position:relative;z-index:2;}
  .pullband .pull p{color:#fff;} .pullband .pull p em{color:var(--pink-2);}
  .results{position:relative;overflow:hidden;}
  .results .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.13;}
  .results .wrap{position:relative;z-index:2;}

/* =========================================================================
   DELTA CSS — rules present in caroljames/index.html (SPA) but ABSENT from
   30a93eaa.../scratchpad/cjre-site.tpl.html <style>.
   Insert verbatim into cjre-site.tpl.html immediately AFTER line 458
   ( .divider{height:1px;background:var(--line-l);border:0;margin:0;} )
   to mirror the SPA ordering. All custom properties used below already exist
   in the tpl :root (--char, --ink, --pink, --pink-2, --pink-deep, --line-d,
   --serif, --paper-soft).
   Source: SPA index.html lines 549-557 (sb-cta) and 559-582 (appraisal).
   ========================================================================= */

  /* ---------- Book a Free Appraisal — conversion landing (SPA lines 559-582) ---------- */
  /* round-3.1: was padding-bottom:0, which left the form card flush against the next
     section — every form needs air before the following band */
  .appr-hero{padding-bottom:clamp(40px,7vh,72px);}
  .appr-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,520px);
    gap:clamp(30px,5vw,72px);align-items:center;}
  @media(max-width:980px){.appr-grid{grid-template-columns:1fr;gap:32px;}}
  .appr-copy h1{font-size:clamp(35px,5.2vw,62px);margin-top:14px;}
  .appr-copy .sub{margin-top:20px;max-width:48ch;}
  .appr-ticks{list-style:none;padding:0;margin:26px 0 0;display:grid;gap:12px;}
  .appr-ticks li{position:relative;padding-left:30px;font-size:15.5px;color:var(--paper-soft);}
  .appr-ticks li::before{content:"";position:absolute;left:2px;top:6px;width:13px;height:7px;
    border-left:2px solid var(--pink-2);border-bottom:2px solid var(--pink-2);transform:rotate(-45deg);}
  .appr-trust{display:flex;align-items:center;gap:15px;margin-top:30px;padding-top:26px;border-top:1px solid var(--line-d);}
  .appr-trust .appr-face{width:56px;height:56px;border-radius:100px;object-fit:cover;object-position:top center;
    border:2px solid var(--pink-2);flex:0 0 auto;}
  .appr-trust .stars{color:var(--pink-2);letter-spacing:2px;font-size:15px;line-height:1;}
  .appr-trust p{font-size:13px;color:var(--paper-soft);margin:4px 0 0;line-height:1.45;max-width:36ch;}
  .appr-trust p b{color:#fff;font-weight:600;}
  .appr-hero .formcard{box-shadow:0 44px 90px -50px rgba(0,0,0,.95);padding:clamp(24px,2.4vw,32px);}
  .appr-hero .formcard .fl{color:var(--pink-deep);font-weight:700;font-size:11.5px;margin-bottom:16px;}
  .appr-hero .formcard .fine a{color:var(--pink-deep);font-weight:600;}
  .appr-hero .formcard .btn-pink{font-size:15px;padding:15px 26px;}
  .appr-num{font-family:var(--serif);font-size:30px;color:var(--pink-deep);line-height:1;font-variant-numeric:tabular-nums;}
  .band-dark .appr-num{color:var(--pink-2);}
  .appr-cta-inline{margin-top:34px;}

/* -------------------------------------------------------------------------
   OPTIONAL / GAP-FILL — not in the SPA either, but pages/appraisal.html and
   the merged page both use a BARE `.stars` element with no matching rule.
   tpl only scopes .stars under .proof .stat, .appraise .rev and .rev-card.
   ------------------------------------------------------------------------- */
  .stars{color:var(--pink);letter-spacing:2px;line-height:1;}


  /* ---------- 404 ---------- */
  /* The whole brand runs on a key opening a door, so a dead link is simply a key that
     will not fit. The animation is decorative and drops out under reduced motion. */
  .e404{background:var(--char);color:var(--paper);text-align:center;
    padding:clamp(130px,20vh,190px) 0 clamp(70px,10vh,110px);position:relative;overflow:hidden;}
  .e404::before{content:"";position:absolute;left:50%;top:34%;width:min(900px,120vw);aspect-ratio:1;
    transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(255,27,162,.20),transparent 62%);
    pointer-events:none;}
  .e404 .wrap{position:relative;z-index:2;}
  .e404-stage{display:flex;align-items:center;justify-content:center;gap:clamp(6px,1.4vw,18px);
    margin-bottom:clamp(26px,4vw,44px);}
  .e404-d{font-family:var(--serif);font-size:clamp(90px,20vw,230px);line-height:.86;color:#fff;
    letter-spacing:-.04em;}
  .e404-lock{position:relative;display:inline-flex;align-items:center;justify-content:center;
    width:clamp(66px,14.5vw,168px);}
  .e404-hole{width:100%;height:auto;fill:none;stroke:var(--pink);stroke-width:9;
    stroke-linejoin:round;filter:drop-shadow(0 0 26px rgba(255,27,162,.55));}
  /* the wrapper mirrors the key so its blade points INTO the lock; the img carries the
     motion, so a positive translate on it reads visually as "pushing toward the keyhole" */
  .e404-key{position:absolute;left:58%;top:47%;width:clamp(56px,11.5vw,132px);
    transform:translateY(-50%) scaleX(-1);}
  .e404-key img{width:100%;display:block;transform-origin:left center;
    filter:drop-shadow(0 10px 26px rgba(255,27,162,.45));
    animation:cj404-jam 3.4s var(--ease) infinite;}
  /* the key lunges at the lock, jars, rattles, and gives up */
  @keyframes cj404-jam{
    0%,14%   {transform:translateX(0) rotate(0deg);}
    24%      {transform:translateX(16%) rotate(0deg);}
    28%      {transform:translateX(10%) rotate(4deg);}
    32%      {transform:translateX(16%) rotate(-3deg);}
    36%      {transform:translateX(11%) rotate(3deg);}
    40%      {transform:translateX(15%) rotate(-2deg);}
    52%      {transform:translateX(-3%) rotate(0deg);}
    100%     {transform:translateX(0) rotate(0deg);}
  }
  .e404 h1{color:#fff;font-size:clamp(31px,5.4vw,62px);line-height:1.05;letter-spacing:-.02em;
    margin:16px auto 0;max-width:18ch;}
  .e404 h1 em{font-style:italic;color:var(--pink-2);}
  .e404 .sub{color:var(--paper-soft);font-size:clamp(16px,1.9vw,19px);max-width:56ch;margin:20px auto 0;}
  .e404 .cta2{justify-content:center;margin-top:32px;}
  .e404-links{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 26px;margin-top:34px;
    padding-top:26px;border-top:1px solid var(--line-d2);}
  .e404-links a{font-size:13.5px;color:var(--paper-soft);border-bottom:1px solid transparent;transition:.2s;}
  .e404-links a:hover{color:#fff;border-bottom-color:var(--pink);}
  @media(prefers-reduced-motion:reduce){.e404-key img{animation:none;}}

  /* ---------- contact page ---------- */
  /* a real embedded map, not the placeholder tile */
  .mapph.mapframe{padding:0;min-height:clamp(340px,42vh,480px);background:var(--char-2);display:block;}
  .mapph.mapframe iframe{display:block;width:100%;height:100%;min-height:clamp(340px,42vh,480px);border:0;}
  @media(max-width:860px){.contactgrid{grid-template-columns:1fr;}}
  /* whole contact card is the tap target */
  a.feature{display:block;transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;}
  a.feature:hover{transform:translateY(-4px);border-color:var(--pink);
    box-shadow:0 26px 50px -34px rgba(20,16,19,.45);}
  a.feature h3{word-break:break-word;}

  /* ---------- team huddle (/team/) ---------- */
  /* ===== Team showcase (portrait gallery + lightbox) ===== */
  .teamshow{padding-bottom:clamp(24px,4vh,52px);overflow:hidden;}
  .team-lede{max-width:60ch;}

  /* full-bleed overlapping team huddle */
  .teamhuddle{margin-top:clamp(30px,4.5vw,54px);width:100%;
    display:flex;align-items:flex-end;justify-content:center;}
  .tfig{position:relative;flex:0 0 auto;padding:0;border:0;background:transparent;cursor:pointer;
    -webkit-tap-highlight-color:transparent;margin:0 -2.2vw;transform-origin:bottom center;will-change:transform;
    transition:transform .5s var(--ease),opacity .5s ease,filter .5s ease;}
  .tfig img{height:clamp(300px,36vw,620px);width:auto;display:block;
    filter:drop-shadow(0 16px 13px rgba(20,16,19,.16));}
  /* no per-figure offset — every portrait sits on the same baseline (align-items:flex-end) */
  .tfig-cue{position:absolute;left:50%;bottom:9%;transform:translate(-50%,14px);z-index:2;white-space:nowrap;
    display:inline-flex;align-items:center;gap:8px;padding:7px 15px 7px 7px;border-radius:100px;
    background:rgba(20,12,17,.74);backdrop-filter:blur(4px);color:#fff;font-size:13px;font-weight:600;
    opacity:0;transition:opacity .4s ease,transform .45s var(--ease);pointer-events:none;}
  .tfig-cue .plus{width:23px;height:23px;border-radius:50%;background:var(--pink);color:#fff;flex:0 0 auto;
    display:inline-flex;align-items:center;justify-content:center;font-size:15px;line-height:1;}
  @media(hover:hover){
    .tfig:hover,.tfig:focus-visible{transform:scale(1.07);z-index:6;}
    .tfig:hover .tfig-cue,.tfig:focus-visible .tfig-cue{opacity:1;transform:translate(-50%,0);}
    .teamhuddle:hover .tfig:not(:hover){transform:scale(.9);opacity:.72;filter:saturate(.92);}
  }
  .tfig:focus-visible{outline:none;}
  .tfig.is-active{transform:scale(1.07);z-index:6;}
  .tfig.is-active .tfig-cue{opacity:1;transform:translate(-50%,0);}
  .teamhuddle.peek .tfig:not(.is-active){transform:scale(.9);opacity:.72;filter:saturate(.92);}

  /* names row */
  .tnames{margin-top:clamp(18px,2.4vw,34px);display:flex;justify-content:center;gap:clamp(12px,3.4vw,58px);
    flex-wrap:wrap;text-align:center;}
  .tname{padding:6px 6px;border:0;background:transparent;cursor:pointer;font-family:var(--sans);color:inherit;
    -webkit-tap-highlight-color:transparent;}
  .tname .rl{display:block;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--pink-deep);}
  .tname .nm{display:inline-block;font-family:var(--serif);font-size:clamp(19px,2vw,25px);margin-top:5px;
    line-height:1.05;background-image:linear-gradient(var(--pink),var(--pink));background-size:0% 2px;
    background-repeat:no-repeat;background-position:50% 100%;padding-bottom:3px;transition:background-size .4s var(--ease);}
  @media(hover:hover){.tname:hover .nm,.tname:focus-visible .nm{background-size:100% 2px;}}
  .tname:focus-visible{outline:none;} .tname:focus-visible .nm{background-size:100% 2px;}
  .huddle-hint{text-align:center;margin-top:16px;font-size:12.5px;letter-spacing:.03em;color:var(--ink-faint);}

  @media(max-width:760px){
    .teamhuddle{flex-wrap:wrap;gap:12px 0;}
    .tfig{flex:0 0 46%;margin:0 !important;}
    .tfig img{height:auto;width:100%;}
    .tfig-cue{display:none;}
    .tname{flex:0 0 40%;}
  }

  /* scroll-reveal (page unfolds) */

  /* lightbox */
  .tlb{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
    padding:clamp(14px,4vw,48px);background:rgba(12,8,11,.74);
    backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
    opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s ease;}
  .tlb.open{opacity:1;visibility:visible;}
  .tlb-panel{position:relative;width:min(900px,100%);max-height:90vh;overflow:hidden;background:var(--cream);
    border-radius:7px;display:grid;grid-template-columns:.8fr 1fr;
    box-shadow:0 60px 130px -30px rgba(0,0,0,.72);
    transform:translateY(26px) scale(.98);opacity:0;transition:transform .5s var(--ease),opacity .45s ease;}
  .tlb.open .tlb-panel{transform:none;opacity:1;}
  @media(max-width:720px){.tlb-panel{grid-template-columns:1fr;max-height:92vh;overflow-y:auto;}}
  .tlb-photo{position:relative;background:linear-gradient(165deg,var(--blush),var(--cream-2));}
  .tlb-photo img{width:100%;height:100%;object-fit:contain;object-position:bottom center;}
  @media(max-width:720px){.tlb-photo{aspect-ratio:4/3;}}
  .tlb-body{padding:clamp(26px,4vw,46px);overflow-y:auto;}
  .tlb-body .tlb-role{display:block;font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;
    color:var(--pink-deep);font-weight:600;}
  .tlb-body h3{font-size:clamp(28px,4.2vw,42px);margin:12px 0 0;line-height:1.02;}
  .tlb-body .tlb-bio{color:var(--ink-soft);font-size:15.5px;line-height:1.62;margin:20px 0 0;}
  .tlb-body .tlb-bio p{margin:0 0 14px;} .tlb-body .tlb-bio p:last-child{margin-bottom:0;}
  .tlb-contact{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px;padding-top:22px;border-top:1px solid var(--line-l);}
  .tlb-close{position:absolute;top:14px;right:14px;z-index:3;width:44px;height:44px;border-radius:50%;border:0;
    cursor:pointer;background:rgba(255,255,255,.92);color:var(--ink);font-size:22px;line-height:1;
    display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px -8px rgba(0,0,0,.45);
    transition:transform .3s var(--ease),background .25s ease;}
  .tlb-close:hover{transform:rotate(90deg);background:#fff;}
  body.tlb-lock{overflow:hidden;}

  /* keep the bios readable when the lightbox cannot run */
  .tbios{display:none;}

  /* ---------- generated listing detail pages (build_static.py detail_body) ---------- */
  .dhero{padding-top:clamp(150px,24vh,230px);}
  .dhero .bg{opacity:.42;will-change:transform;}
  /* Aug-26: hero spec row uses the shared pink icons with white text */
  .dhero .dspecs2{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:22px;
    font-size:15px;color:#fff;font-variant-numeric:tabular-nums;}
  .dhero .dspecs2 .spec-ic{display:inline-flex;align-items:center;gap:7px;font-weight:600;}
  .dhero .dspecs2 .spec-ic svg{width:19px;height:19px;color:var(--pink-2);flex:none;}
  .dhero .dspecs2 .spec-land{color:#fff;}
  .dprice .pp-dark{color:var(--pink-2);}
  /* detail hero: the open-home line sits between the price and the buttons */
  .dhero .dprice.has-open{margin-bottom:12px;}
  .dhero .open-home{margin:0 0 26px;font-size:12.5px;color:var(--pink-2);}
  .lcard .price .pp{color:var(--pink-deep);}
  .prose-wrap{max-width:860px;}
  .prose-wrap h2{margin-top:16px;}
  .dhero .dspecs{display:flex;flex-wrap:wrap;gap:20px;margin-top:22px;font-size:15px;color:#fff;
    font-variant-numeric:tabular-nums;}
  .dhero .dspecs span{display:inline-flex;align-items:center;gap:7px;}
  .dhero .dspecs i{width:6px;height:6px;border-radius:50%;background:var(--pink);display:inline-block;}
  .dhero .dprice{font-family:var(--serif);font-size:clamp(26px,3.4vw,38px);color:#fff;margin:16px 0 26px;}
  .dhero .cta2{margin-top:4px;}

  /* Listing gallery — slideshow: one large image, thumbnail strip beneath, arrows. */
  .gal{margin-top:30px;}
  .gal-main{position:relative;border-radius:3px;overflow:hidden;background:var(--char-2);}
  .gal-main>img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;cursor:zoom-in;}
  .gal-btn{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;
    border:0;background:rgba(12,9,11,.55);color:#fff;font-size:26px;line-height:1;cursor:pointer;
    display:flex;align-items:center;justify-content:center;transition:background .2s ease;}
  .gal-btn:hover{background:var(--pink);}
  .gal-prev{left:16px;} .gal-next{right:16px;}
  .gal-count{position:absolute;bottom:14px;right:16px;background:rgba(12,9,11,.6);color:#fff;
    font-family:var(--sans);font-size:12px;letter-spacing:.06em;padding:5px 10px;border-radius:3px;}
  .gal-thumbs{display:flex;gap:10px;margin-top:12px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin;}
  .gal-thumbs button{flex:0 0 auto;width:104px;height:72px;padding:0;border:2px solid transparent;
    border-radius:3px;overflow:hidden;background:none;cursor:pointer;opacity:.68;
    transition:opacity .2s ease,border-color .2s ease;}
  .gal-thumbs button img{width:100%;height:100%;object-fit:cover;display:block;}
  .gal-thumbs button.on,.gal-thumbs button:hover{opacity:1;border-color:var(--pink);}
  @media(max-width:640px){.gal-thumbs button{width:84px;height:60px;}.gal-btn{width:40px;height:40px;font-size:22px;}}

  .inter{position:relative;height:clamp(280px,46vh,520px);overflow:hidden;background:var(--char);}
  .inter .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.72;
    will-change:transform;}

  /* lightbox — styling only; with JS off it is never shown and the gallery is still browsable */
  .lb{position:fixed;inset:0;z-index:120;background:rgba(12,9,11,.94);display:none;
    align-items:center;justify-content:center;}
  .lb.on{display:flex;}
  .lb img{max-width:92vw;max-height:84vh;object-fit:contain;border-radius:3px;}
  .lb button{position:absolute;background:rgba(255,255,255,.1);color:#fff;border:0;border-radius:50%;
    width:46px;height:46px;font-size:22px;cursor:pointer;line-height:1;}
  .lb .lb-x{top:22px;right:22px;} .lb .lb-p{left:22px;} .lb .lb-n{right:22px;}
  .lb .lb-c{position:absolute;bottom:22px;left:0;right:0;text-align:center;color:var(--paper-soft);
    font-size:13px;letter-spacing:.1em;}

  /* ---------- round-3 pre-launch: stacked CTA pairs on phones ----------
     One column, and 1fr rows force every button in the pair to the SAME height even
     when the longer label wraps to two lines. Lives at the END of the sheet so it
     out-cascades `.ctaband .cta2{display:flex}` and friends. */
  @media(max-width:640px){
    .cta2,.ctaband .cta2,.final .cta2,.dhero .cta2,.e404 .cta2,.formcard .cta2{
      display:grid;grid-template-columns:1fr;grid-auto-rows:1fr;gap:14px;width:100%;}
    .cta2 .btn{width:100%;min-width:0;}
    .appraise .cta2{display:flex;}   /* holds the rating line, not buttons */
  }
  /* phones: the 104px portrait beside a long bio strands the photo in white space —
     stack it above the text at a slightly larger size instead (round-3 brief §1) */
  @media(max-width:600px){
    .tcard{flex-direction:column;align-items:flex-start;gap:16px;}
    .tcard img{width:132px;height:168px;}
  }
