/* ============================================================================
   MCK Property Holdings — public marketing site (site/assets/site.css)
   Redesigned 2026-08-23 (round 3). Self-contained; no build step, no CDN.

   DELIBERATELY SINGLE-THEME (dark). This is a marketing site with one
   committed visual world, so it does not follow the viewer's light/dark
   setting the way the back office does — every colour is painted explicitly
   so the page holds on any host background.

   Fonts are SELF-HOSTED in ../fonts (the site CSP is font-src 'self', so
   Google Fonts is unreachable at runtime). Archivo and Inter Tight are
   variable faces — one file each covers every weight used.

   MOTION IS PURE CSS (scroll-driven animations behind @supports). There is
   NO JavaScript on this site at all: every page renders complete with JS
   off, which is what keeps it readable by AI answer engines.

   Content rules for every page in site/:
   - Aggregate facts only: no street addresses, valuations, dollar figures,
     or tenant/client/employee names. Nothing invented.
   - First sentence under the H1 is a self-contained statement naming
     "MCK Property Holdings" — quotable by an answer engine on its own.
   - Question-shaped H2s; the first sentence after each answers it fully.
   - Header/footer are fenced copy-paste blocks (SITE-HEADER / SITE-FOOTER)
     kept byte-identical across pages except aria-current.
   - Artwork in assets/img is ABSTRACT city illustration, generated by
     scripts/gen_site_artwork.py. It is not photography and must never be
     captioned or implied to be an MCK property.
   ========================================================================== */

@font-face{font-family:'Archivo';font-style:normal;font-weight:400 700;font-display:swap;
  src:url("../fonts/archivo-var.woff2") format("woff2");}
@font-face{font-family:'Inter Tight';font-style:normal;font-weight:400 600;font-display:swap;
  src:url("../fonts/inter-tight-var.woff2") format("woff2");}
@font-face{font-family:'Instrument Serif';font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/instrument-serif-400.woff2") format("woff2");}
@font-face{font-family:'Instrument Serif';font-style:italic;font-weight:400;font-display:swap;
  src:url("../fonts/instrument-serif-400-italic.woff2") format("woff2");}

:root{
  --ink:#05070E; --ink2:#0A0E1A; --panel:#0E1421;
  --line:rgba(233,238,247,.10); --line2:rgba(233,238,247,.18);
  --fg:#E9EEF7; --fg2:rgba(233,238,247,.62); --fg3:rgba(233,238,247,.40);
  --gold:#D8B23F; --gold2:#C9A227; --blue:#6FA0C8;
  --disp:'Archivo',ui-sans-serif,system-ui,'Segoe UI',sans-serif;
  --ui:'Inter Tight',ui-sans-serif,system-ui,'Segoe UI',sans-serif;
  --ser:'Instrument Serif',Georgia,'Times New Roman',serif;
  --max:1240px; --r:20px; --r-sm:14px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{background:var(--ink);color:var(--fg);font-family:var(--ui);line-height:1.65;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}
/* film grain — what stops flat vector art reading as clip art */
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:9;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E")}
a{color:inherit;text-decoration:none}
::selection{background:var(--gold);color:#0A0E1A}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}
img,svg{max-width:100%}
.wrap{max-width:var(--max);margin:0 auto;padding:0 40px}
.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--gold);color:#0A0E1A;
  padding:12px 20px;font-size:13.5px;font-weight:600;border-radius:0 0 8px 0}
.skip-link:focus{left:0}

/* -------------------------------------------------------------- app shell */
.appbar{position:sticky;top:0;z-index:20;background:rgba(5,7,14,.74);border-bottom:1px solid var(--line)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .appbar{-webkit-backdrop-filter:saturate(1.6) blur(16px);backdrop-filter:saturate(1.6) blur(16px)}
}
.appbar-in{max-width:var(--max);margin:0 auto;padding:0 40px}
.appbar-row{display:flex;align-items:center;gap:12px 26px;flex-wrap:wrap;padding:18px 0}
.brand{display:flex;align-items:center;gap:13px;flex-shrink:0}
.brand .mono{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--gold);
  color:var(--gold);font-family:var(--ser);font-size:14px;letter-spacing:.04em}
.brand:hover .mono{background:var(--gold);color:#0A0E1A}
.brand .brand-txt{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.brand .mark{font-family:var(--disp);font-weight:600;font-size:14px;letter-spacing:.14em;
  text-transform:uppercase;white-space:nowrap;color:var(--fg)}
.brand .brand-sub{font-family:var(--ser);font-size:11px;font-style:italic;letter-spacing:.04em;color:var(--gold);margin-top:2px}
.nav-links{display:flex;gap:24px;flex-wrap:wrap;font-size:13.5px;color:var(--fg2)}
.nav-links a{position:relative;padding:4px 0;transition:color .2s;white-space:nowrap}
.nav-links a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--gold);
  transition:right .3s cubic-bezier(.22,.61,.36,1)}
.nav-links a:hover{color:var(--fg)}
.nav-links a:hover::after,.nav-links a[aria-current="page"]::after{right:0}
.nav-links a[aria-current="page"]{color:var(--fg);font-weight:500}
.appbar .actions{margin-left:auto;display:flex;gap:10px;align-items:center;flex-wrap:wrap}

/* ---------------------------------------------------------------- buttons */
.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 24px;border-radius:100px;
  font-size:14px;font-weight:600;font-family:var(--ui);border:1px solid var(--line2);color:var(--fg);
  transition:transform .28s cubic-bezier(.22,.61,.36,1),background .28s,border-color .28s,box-shadow .28s;white-space:nowrap}
.btn:hover{border-color:var(--fg);transform:translateY(-2px)}
.btn.gold,.btn.solid{background:var(--gold);border-color:var(--gold);color:#0A0E1A}
.btn.gold:hover,.btn.solid:hover{box-shadow:0 14px 34px -12px rgba(216,178,63,.5);border-color:var(--gold)}
.btn .ar{transition:transform .28s}
.btn:hover .ar{transform:translateX(4px)}

/* ------------------------------------------------------------ breadcrumbs */
.crumbs{font-size:12.5px;color:var(--fg3);padding-top:26px;letter-spacing:.02em}
.crumbs a:hover{color:var(--gold)}
.crumbs .sep{margin:0 8px;opacity:.6}

/* ------------------------------------------------------------------- hero */
.hero-pub{position:relative;overflow:hidden;border-radius:var(--r);border:1px solid var(--line);
  margin-top:22px;padding:96px 56px 84px;background:linear-gradient(165deg,#0D1422,#070B14)}
.hero-pub .hero-art{position:absolute;inset:-6% -2%;z-index:0;opacity:1}
.hero-pub .hero-art img{width:100%;height:100%;object-fit:cover;display:block}
.hero-pub::after{content:"";position:absolute;inset:0;z-index:1;background:
  radial-gradient(105% 80% at 12% 40%, rgba(5,7,14,.92) 0%, rgba(5,7,14,.60) 40%, rgba(5,7,14,.12) 70%, transparent 100%),
  linear-gradient(180deg, rgba(5,7,14,.42) 0%, rgba(5,7,14,.06) 42%, rgba(5,7,14,.72) 100%)}
.hero-pub>*{position:relative;z-index:2}
.hero-pub.compact{padding:62px 48px 56px}
.eyebrow{display:inline-flex;align-items:center;gap:11px;font-size:11.5px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--gold);margin-bottom:24px;font-weight:500}
.eyebrow::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--gold);
  box-shadow:0 0 0 4px rgba(216,178,63,.14)}
.hero-pub h1{font-family:var(--disp);font-weight:600;font-size:clamp(38px,6vw,88px);line-height:1;
  letter-spacing:-.04em;max-width:16ch;text-wrap:balance;color:#fff}
.hero-pub.compact h1{font-size:clamp(32px,4.4vw,58px)}
.hero-pub h1 em{font-family:var(--ser);font-style:italic;font-weight:400;letter-spacing:-.01em;color:var(--gold)}
.hero-pub .lede{margin-top:24px;font-size:clamp(15px,1.3vw,18.5px);line-height:1.7;color:var(--fg2);max-width:56ch}
.hero-pub .lede a{color:#fff;border-bottom:1px solid var(--gold)}
.cta-row{display:flex;gap:11px;margin-top:34px;flex-wrap:wrap}

/* stat band inside the hero */
.stat-band{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:24px;
  margin-top:52px;padding-top:30px;border-top:1px solid var(--line)}
.stat-band b{display:block;font-family:var(--disp);font-size:clamp(20px,2.4vw,30px);font-weight:600;
  letter-spacing:-.03em;line-height:1;color:#fff}
.stat-band span{display:block;margin-top:9px;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg3)}

/* ---------------------------------------------------------------- sections */
.sec{padding:96px 0 0}
.sec-head{display:flex;flex-direction:column;gap:14px;margin-bottom:8px}
.kicker{font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-weight:500;order:-1}
.sec-head h2{font-family:var(--disp);font-weight:600;font-size:clamp(27px,3.6vw,50px);line-height:1.06;
  letter-spacing:-.035em;max-width:20ch;text-wrap:balance;color:#fff}
.sec-head h2 em{font-family:var(--ser);font-style:italic;font-weight:400;color:var(--gold)}
.sec-sub{margin-top:18px;font-size:16px;line-height:1.72;color:var(--fg2);max-width:60ch}
.prose{margin-top:20px;font-size:15.5px;line-height:1.78;color:var(--fg2);max-width:68ch}
.prose h3{font-family:var(--disp);color:#fff;font-size:19px;font-weight:600;letter-spacing:-.02em;margin:2em 0 .5em}
.prose p{margin-bottom:1.1em}
.prose strong{color:var(--fg);font-weight:600}
.prose a{color:var(--gold);border-bottom:1px solid rgba(216,178,63,.35)}
.prose a:hover{border-bottom-color:var(--gold)}
.prose ul,.prose ol{margin:0 0 1.2em;padding-left:1.3em}
.prose li{margin-bottom:.55em}
.prose li::marker{color:var(--gold)}
.more{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--gold)}
.more:hover{gap:12px}

/* ------------------------------------------------------------------ cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-top:44px}
.cards.pair{grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr))}
.card-m{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:var(--r);
  padding:32px 30px 34px;background:linear-gradient(160deg,rgba(233,238,247,.055),rgba(233,238,247,.018));
  transition:transform .4s cubic-bezier(.22,.61,.36,1),border-color .4s}
.card-m::before{content:"";position:absolute;inset:0;opacity:0;transition:opacity .4s;
  background:radial-gradient(120% 90% at 12% 0%, rgba(216,178,63,.14), transparent 62%)}
.card-m:hover{transform:translateY(-5px);border-color:var(--line2)}
.card-m:hover::before{opacity:1}
.card-m>*{position:relative}
.card-m h3{font-family:var(--disp);font-size:21px;font-weight:600;letter-spacing:-.025em;margin-bottom:11px;color:#fff}
.card-m h3 a:hover{color:var(--gold)}
.card-m p{font-size:14.5px;line-height:1.72;color:var(--fg2);margin-bottom:.7em}
.card-m p:last-of-type{margin-bottom:0}
.card-m .more{margin-top:18px}

/* market panels (artwork behind) */
.mkts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:16px;margin-top:44px}
.mkt{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:var(--r);
  min-height:330px;display:flex;align-items:flex-end;transition:transform .45s cubic-bezier(.22,.61,.36,1),border-color .45s}
.mkt img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transition:transform .8s cubic-bezier(.22,.61,.36,1)}
.mkt::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(5,7,14,.05) 0%,rgba(5,7,14,.42) 52%,rgba(5,7,14,.88) 100%)}
.mkt:hover{transform:translateY(-4px);border-color:var(--line2)}
.mkt:hover img{transform:scale(1.07)}
.mkt-txt{position:relative;z-index:2;padding:34px 32px}
.mkt-txt h3{font-family:var(--disp);font-size:clamp(24px,2.8vw,36px);font-weight:600;letter-spacing:-.03em;color:#fff}
.mkt-txt p{margin-top:10px;font-size:14.5px;line-height:1.68;color:var(--fg2);max-width:36ch}
.mkt-txt .more{margin-top:15px}

/* ------------------------------------------------------- facts / at a glance */
.facts{margin-top:36px;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  background:linear-gradient(160deg,rgba(233,238,247,.05),rgba(233,238,247,.015))}
.facts div{display:grid;grid-template-columns:210px 1fr;gap:20px;padding:18px 30px;border-bottom:1px solid var(--line)}
.facts div:last-child{border-bottom:0}
.facts dt{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);padding-top:3px}
.facts dd{font-size:15px;line-height:1.62;color:var(--fg)}
.facts dd a{color:var(--gold)}

/* --------------------------------------------------------------------- FAQ */
.faq-list{display:grid;gap:10px;margin-top:40px}
.faq-item{border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;
  background:linear-gradient(160deg,rgba(233,238,247,.05),rgba(233,238,247,.015));transition:border-color .3s}
.faq-item:hover{border-color:var(--line2)}
.faq-item summary{list-style:none;cursor:pointer;padding:20px 54px 20px 24px;position:relative;
  font-family:var(--disp);font-size:17px;font-weight:500;line-height:1.42;letter-spacing:-.02em;color:#fff}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"";position:absolute;right:24px;top:26px;width:11px;height:11px;
  border-right:1.5px solid var(--gold);border-bottom:1.5px solid var(--gold);
  transform:rotate(45deg);transition:transform .3s}
.faq-item[open] summary::after{transform:rotate(-135deg)}
.faq-item summary:hover{color:var(--gold)}
.faq-item[open]{border-color:var(--line2)}
.faq-item .faq-a{padding:0 24px 22px;font-size:15px;line-height:1.75;color:var(--fg2);max-width:74ch}
.faq-item .faq-a p{margin-bottom:.8em}
.faq-item .faq-a p:last-child{margin-bottom:0}
.faq-item .faq-a a{color:var(--gold);border-bottom:1px solid rgba(216,178,63,.35)}

/* ---------------------------------------------------------------- CTA band */
.cta-band{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:26px;
  margin-top:96px;padding:68px 56px;text-align:center;
  background:radial-gradient(90% 130% at 50% 0%, rgba(216,178,63,.15), transparent 62%),linear-gradient(180deg,#0E1421,#070B14)}
.cta-band h2{font-family:var(--disp);font-weight:600;font-size:clamp(25px,3.2vw,42px);line-height:1.08;
  letter-spacing:-.035em;color:#fff;margin:0 auto;max-width:20ch;text-wrap:balance}
.cta-band h2 em{font-family:var(--ser);font-style:italic;font-weight:400;color:var(--gold)}
.cta-band p{margin:18px auto 0;font-size:16px;color:var(--fg2);max-width:52ch}
.cta-band .cta-row{justify-content:center;margin-top:30px}

/* ----------------------------------------------------------------- footer */
.site-footer{border-top:1px solid var(--line);margin-top:104px;padding:60px 0 46px;background:var(--ink2)}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:40px}
.foot-brand{font-family:var(--disp);font-size:14px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--fg);margin-bottom:14px}
.foot-h{font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:13px}
.site-footer p{font-size:14px;line-height:1.95;color:var(--fg2);margin-bottom:1em}
.site-footer a:hover{color:var(--gold)}
.foot-legal{border-top:1px solid var(--line);margin-top:44px;padding-top:24px}
.foot-legal p{font-size:12.5px;color:var(--fg3);line-height:1.8;margin:0 0 .5em}

/* ------------------------------------------------------------------ motion
   Scroll-driven, pure CSS. Browsers without support simply show everything —
   content is NEVER hidden behind script, which is what keeps the pages
   readable with JavaScript disabled. */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){
    .sec, .card-m, .mkt, .faq-item, .cta-band, .facts{
      animation:rise linear both;animation-timeline:view();animation-range:entry 5% entry 60%}
    @keyframes rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
  }
}
/* Print, and any context without a scroll position, must never inherit the
   pre-reveal state. */
@media print{
  .sec,.card-m,.mkt,.faq-item,.cta-band,.facts{animation:none!important;opacity:1!important;transform:none!important}
  body::after{display:none}
  body{background:#fff;color:#111}
}
@supports (animation-timeline: scroll()){
  @media (prefers-reduced-motion: no-preference){
    .hero-pub .hero-art{animation:par linear both;animation-timeline:scroll(root);animation-range:0 90vh}
    @keyframes par{from{transform:translateY(0) scale(1.04)}to{transform:translateY(70px) scale(1.04)}}
  }
}

/* ------------------------------------------------------ mobile (phone-first) */
@media (max-width:980px){
  .facts div{grid-template-columns:170px 1fr}
}
@media (max-width:820px){
  .wrap,.appbar-in{padding-left:22px;padding-right:22px}
  .hero-pub{padding:56px 26px 48px;border-radius:var(--r-sm);margin-top:14px}
  .hero-pub.compact{padding:42px 24px 38px}
  .sec{padding-top:70px}
  .cta-band{padding:48px 24px;border-radius:var(--r-sm);margin-top:70px}
  .facts div{grid-template-columns:1fr;gap:5px;padding:16px 22px}
  .foot-grid{grid-template-columns:1fr;gap:22px}
  .site-footer{margin-top:72px}
  .appbar-row{padding:14px 0;gap:10px 16px}
  .brand .mark{font-size:12.5px;letter-spacing:.1em}
  .brand .mono{width:32px;height:32px;font-size:13px}
  /* One scrollable row, never wrapped: six items wrapping onto two lines left
     "Contact" stranded and pushed the hero down the screen on a phone. */
  .nav-links{order:3;flex-basis:100%;gap:18px;font-size:12.5px;
    flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
    padding-bottom:2px}
  .nav-links::-webkit-scrollbar{display:none}
  .btn{padding:11px 18px;font-size:13px}
  .stat-band{gap:18px;margin-top:38px}
}

/* Below ~560px the wordmark's subtitle costs more width than it earns: dropping
   it lets the brand and the CTA share one row instead of taking two. */
@media (max-width:560px){
  .brand .brand-sub{display:none}
  .brand{gap:10px}
  .brand .mono{width:29px;height:29px;font-size:12px}
  .brand .mark{font-size:11.5px;letter-spacing:.08em}
  /* The header CTA is dropped on a phone: at this width it cannot share a row
     with the wordmark, and it duplicates the hero button sitting just below.
     Header becomes two compact rows instead of three. */
  .appbar .actions{display:none}
  .appbar-row{gap:8px 10px;padding:12px 0}
}
