/* ============================================================
   TENOR — designed pages
   About · Services · FAQ · Contact · Thank-you · Terms / Privacy · Projects · Project page
   Ported from the static design's page styles. Where the static pages reused a class
   with a different meaning (.sec-head, .toc-row, .press, .tel-big), the rule is scoped
   to its page here so the homepage sections keep theirs. Body classes: inc/pages.php.
   ============================================================ */

/* ---------- shared ---------- */
.tn-page--about .sec-head,
.tn-page--services .sec-head{ display:flex; align-items:flex-start; gap:28px; flex-wrap:wrap; margin-bottom:calc(var(--u)*2); }
.tn-page--about .sec-head h2{ max-width:24ch; }
.tn-page--services .sec-head h2{ max-width:30ch; }
.lede-r{ max-width:40ch; margin-left:auto; }


/* ============================================================
   ABOUT
   ============================================================ */

/* S1 · hero — editorial statement, the glass mark */
.about-hero{ position:relative; overflow:hidden; padding-top:var(--header-h); padding-bottom:clamp(48px,6vw,96px); }
.about-hero .container{ position:relative; z-index:2; }
.ah-grid{ margin-top:clamp(28px,4vw,52px); display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(28px,5vw,80px); align-items:center; }
@media (max-width:900px){ .ah-grid{ grid-template-columns:1fr; gap:36px; } }
.ah-mark{ justify-self:center; width:min(100%,400px); }
.ah-mark img{ width:100%; height:auto; display:block; }
@media (max-width:900px){ .ah-mark{ width:min(72%,300px); } }
.about-hero h1{ margin-bottom:clamp(18px,2.4vw,26px); }
.ah-sub{ max-width:44ch; color:var(--ink-1); }
.ah-actions{ display:flex; align-items:center; gap:clamp(16px,2.4vw,28px); margin-top:clamp(24px,3vw,34px); flex-wrap:wrap; }
.ah-tel{ display:inline-flex; flex-direction:column; gap:3px; text-decoration:none; }
.ah-tel .k{ font-family:var(--f-geo); font-weight:700; font-size:10.5px; color:var(--ink-2); }
.ah-tel .v{ font-family:var(--f-display); font-weight:500; font-size:clamp(16px,1.5vw,19px); color:var(--ink); }
/* factual proof strip under the hero */
.ah-meta{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(20px,3vw,48px);
  margin-top:clamp(34px,4.5vw,60px); padding-top:22px; border-top:1px solid rgba(13,8,56,.14); }
.ah-meta .k{ display:block; font-family:var(--f-geo); font-weight:700; font-size:10.5px; color:var(--ink-2); margin-bottom:9px; position:relative; top:var(--caps-y); }
.ah-meta .v{ font-size:clamp(15px,1.4vw,18px); font-weight:500; color:var(--ink); }
.ah-meta .v.num{ font-family:var(--f-display); font-weight:500; letter-spacing:.01em; }
@media (max-width:720px){ .ah-meta{ grid-template-columns:1fr; gap:20px; } }

/* S2 · story — one block of copy whose words light up as the section scrolls through */
.story-fill{ margin:0; max-width:78%; font-weight:350; font-size:clamp(21px,2.5vw,34px); line-height:1.42; letter-spacing:.004em; color:#fff; }
.on-ink .story-fill{ color:#fff; }
.story-fill .fill-word{ opacity:.18; will-change:opacity; }
.ab-figures{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(20px,2.6vw,40px); margin-top:clamp(48px,6vw,88px); }
@media (max-width:900px){ .ab-figures{ grid-template-columns:1fr 1fr; gap:30px 24px; } }
@media (max-width:520px){ .ab-figures{ grid-template-columns:1fr; } }
.ab-fig{ border-top:1.5px solid var(--sun); padding-top:30px; }
.ab-fig .n{ display:block; font-family:var(--f-display); font-weight:800; line-height:1; font-size:clamp(32px,3.8vw,54px); letter-spacing:.01em; color:#fff; }
.ab-fig .l{ display:block; margin-top:12px; font-family:var(--f-geo); font-weight:700; font-size:11px; color:var(--ink-3); line-height:1.4; max-width:19ch; }
@media (max-width:900px){ .story-fill{ max-width:none; font-size:clamp(19px,4.4vw,26px); } }

/* S3 · ecosystem — one system, three directions */
.eco-sec{ position:relative; overflow:hidden; padding-top:clamp(40px,5vw,72px); }
.eco-sec .watermark{ right:-16%; bottom:-22%; width:58%; min-width:460px; }
.eco{ margin-top:clamp(20px,3vw,40px); }
.eco-row{ position:relative; display:grid; grid-template-columns:2.4ch 1fr auto auto; align-items:center; gap:clamp(16px,2.6vw,36px);
  padding:clamp(24px,3.2vw,38px) clamp(8px,1.8vw,22px); border-top:1px solid rgba(255,255,255,.15); text-decoration:none; color:#fff; overflow:hidden; }
.eco-row:last-child{ border-bottom:1px solid rgba(255,255,255,.15); }
.eco-row > *{ position:relative; z-index:2; }
.eco-fill{ position:absolute; inset:0; z-index:1; background:linear-gradient(90deg, rgba(255,255,255,.06), rgba(255,255,255,0) 72%);
  transform:scaleX(0); transform-origin:left center; transition:transform .6s var(--e-out); }
.eco-row > .eco-fill{ position:absolute; z-index:1; }
a.eco-row:hover .eco-fill, a.eco-row:focus-visible .eco-fill{ transform:scaleX(1); }
.eco-idx{ font-family:var(--f-display); font-weight:500; font-size:13px; color:var(--ink-3); }
.eco-brand{ display:flex; align-items:center; gap:clamp(12px,1.6vw,18px); min-width:0; }
.eco-logo{ display:block; flex:none; width:auto; height:clamp(34px,4vw,46px); transition:transform .5s var(--e-out); }
.eco-logo--ge{ height:clamp(26px,3vw,35px); }
a.eco-row:hover .eco-logo{ transform:translateX(4px); }
.eco-role{ font-weight:350; font-size:clamp(13px,1.05vw,15.5px); color:var(--ink-3); text-align:right; white-space:nowrap; }
.eco-arw{ width:26px; height:26px; flex:none; color:var(--ink-3); opacity:0; transform:translate(-6px,6px);
  transition:opacity .4s var(--e-out), transform .4s var(--e-out); }
.eco-arw svg{ width:100%; height:100%; fill:currentColor; }
a.eco-row:hover .eco-arw, a.eco-row:focus-visible .eco-arw{ opacity:1; transform:none; color:var(--sun); }
/* the current node — TENOR — promoted with the yellow tab tick */
.eco-row--current{ padding-block:clamp(30px,3.9vw,48px); }
.eco-cur{ display:inline-flex; align-items:center; gap:8px; flex:none; font-family:var(--f-geo); font-weight:700; font-size:11px; color:var(--ink);
  background:var(--sun); padding:5px 10px; border-radius:var(--r-xs); }
/* future node — Academy, no destination yet */
.eco-soon{ display:inline-flex; align-items:center; flex:none; font-family:var(--f-geo); font-weight:700; font-size:9.5px; color:var(--ink-3);
  border:1px solid rgba(255,255,255,.24); padding:5px 10px; border-radius:999px; }
.eco-row--current::before{ content:""; position:absolute; left:-18px; top:22%; bottom:22%; width:4px; border-radius:2px; background:var(--sun); }
@media (max-width:720px){
  .eco-row{ grid-template-columns:2ch 1fr; grid-template-areas:"idx brand" ". role"; gap:6px 14px; }
  .eco-idx{ grid-area:idx; } .eco-brand{ grid-area:brand; flex-wrap:wrap; }
  .eco-role{ grid-area:role; text-align:left; white-space:normal; }
  .eco-arw{ display:none; }
  .eco-logo{ height:clamp(30px,7vw,40px); }
  .eco-logo--ge{ height:clamp(23px,5.4vw,31px); }
}

/* team — title left, two compact horizontal member cards right */
.team-sec{ position:relative; padding-bottom:clamp(18px,3vw,36px); }
.team-layout{ display:grid; grid-template-columns:0.92fr 1.42fr; gap:clamp(32px,5vw,84px); align-items:start; margin-top:clamp(22px,3.4vw,42px); }
.team-intro .title-stack{ font-size:clamp(24px,2.7vw,40px); }
.team-intro .body-lg{ margin-top:clamp(16px,2vw,22px); max-width:34ch; color:var(--ink-1); }
.team-list{ display:grid; gap:clamp(22px,2.6vw,32px); }
.tmc{ display:grid; grid-template-columns:clamp(132px,15vw,186px) 1fr; gap:clamp(20px,2.4vw,32px); align-items:center; }
.tmc:not(:last-child){ padding-bottom:clamp(22px,2.6vw,32px); border-bottom:1px solid rgba(13,8,56,.12); }
.tmc-photo{ position:relative; aspect-ratio:4/5; border-radius:10px; overflow:hidden; background:linear-gradient(155deg, var(--ink), var(--ink-raise)); }
.tmc-photo img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 16%; }
.tm-role{ font-family:var(--f-geo); font-weight:700; font-size:11px; color:var(--ink-2); }
.tm-name{ font-family:var(--f-geo); font-weight:700; font-size:clamp(20px,2.1vw,28px); line-height:1.1; margin:8px 0 10px; color:var(--ink); }
.tm-desc{ color:var(--ink-1); max-width:42ch; font-weight:350; font-size:clamp(14px,1.05vw,15.5px); margin:0; }
.tm-stats{ display:flex; gap:clamp(22px,2.6vw,40px); margin-top:clamp(13px,1.7vw,18px); padding-top:13px; border-top:1px solid rgba(13,8,56,.13); }
.tm-stat .n{ display:block; font-family:var(--f-display); font-weight:800; font-size:clamp(22px,2.3vw,32px); line-height:1; color:var(--ink); }
.tm-stat .l{ display:block; margin-top:6px; font-family:var(--f-geo); font-weight:700; font-size:9.5px; color:var(--ink-2); max-width:14ch; position:relative; top:var(--caps-y); }
@media (max-width:900px){
  .team-layout{ grid-template-columns:1fr; gap:clamp(24px,5vw,38px); }
  .tmc{ align-items:start; }
}
@media (max-width:520px){
  .tmc{ grid-template-columns:clamp(94px,30vw,124px) 1fr; gap:15px; }
  .tm-stats{ gap:18px; }
  .tm-desc{ font-size:14px; }
}

/* press — the quote alone, centred */
.press.press--center{ text-align:center; padding:clamp(28px,4vw,48px) 0 calc(var(--pad-section)*.55); }
.press--center blockquote{ margin:0 auto 16px; max-width:52ch; font-size:clamp(18px,2vw,24px); font-weight:350; line-height:1.5; }
.press--center .src{ display:inline; font-family:var(--f-display); font-weight:500; font-size:13px; letter-spacing:.08em; color:var(--ink-2); text-decoration:none; }
.press--center .src:hover{ color:var(--ink); }


/* ============================================================
   SERVICES
   ============================================================ */

/* hero — the brandbook cover (p.1): a blue house, its arrow cut out in ink, bleeding off the edge */
.hero-svc{ position:relative; min-height:90svh; display:flex; align-items:flex-end; overflow:hidden; padding:calc(var(--header-h) + 48px) 0 88px; }
.hero-svc-in{ position:relative; z-index:3; }
.hero-svc .crumb-top{ margin-bottom:26px; }
.hero-svc h1{ max-width:18ch; color:#fff; }
.hero-svc .sub-caps{ display:inline-block; margin-top:22px; font-family:var(--f-geo); font-weight:700; color:var(--sun); font-size:clamp(15px,1.7vw,23px); }
.cover-house{ position:absolute; z-index:1; right:-8%; bottom:-30%; width:min(62vw,860px); height:auto; pointer-events:none; }
@media (max-width:900px){ .cover-house{ right:-30%; bottom:-14%; width:100vw; opacity:.55; } }

/* intro index */
.svc-toc{ margin-top:14px; max-width:760px; }
.svc-toc .toc-row{ display:flex; align-items:center; gap:16px; padding:17px 2px; text-decoration:none; border-bottom:1px solid var(--ink-4); }
.svc-toc .toc-row:first-child{ border-top:1px solid var(--ink-4); }
.svc-toc .toc-row .ti{ font-family:var(--f-display); font-weight:500; font-size:13px; color:var(--ink-2); flex:none; }
.svc-toc .toc-row .tn{ font-family:var(--f-geo); font-weight:700; font-size:13px; }
.svc-toc .toc-row .ta{ width:26px; height:26px; padding:6px; border-radius:7px; background:var(--mist); color:var(--blue); flex:none;
  transition:transform var(--t-quick) var(--e-out), background-color var(--t-quick), color var(--t-quick); }
.svc-toc .toc-row:hover .ta{ background:var(--blue); color:#fff; transform:translateY(3px); }

/* phases — a sticky index column beside the service list; the rail fill is the phase's scroll progress */
.svc{ overflow:hidden; }
.svc .watermark{ right:-14%; bottom:-18%; width:52%; min-width:440px; }
.svc-in{ position:relative; z-index:2; }
.phase{ display:grid; grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr); gap:clamp(26px,4.5vw,88px); padding-block:clamp(38px,5vw,74px);
  border-top:1px solid rgba(255,255,255,.16); }
.phase:first-of-type{ border-top:0; padding-top:0; }
@media (max-width:900px){ .phase{ grid-template-columns:1fr; gap:24px; } }
.phase-aside{ position:sticky; top:calc(var(--header-h) + 28px); align-self:start; }
@media (max-width:900px){ .phase-aside{ position:static; } }
.phase-idx{ display:block; font-family:var(--f-display); font-weight:800; font-size:clamp(30px,3.6vw,52px); line-height:1; color:var(--sun); }
.phase-name{ display:block; margin-top:12px; font-family:var(--f-geo); font-weight:700; font-size:clamp(18px,2.1vw,28px); color:#fff; }
.phase-count{ display:block; margin-top:10px; font-family:var(--f-geo); font-size:10.5px; color:var(--ink-3); font-weight:700; }
/* the rail stays an inline span, as in the approved design, where it takes no room */
.phase-rail{ position:relative; width:2px; height:clamp(44px,6vw,88px); margin-top:24px; background:rgba(255,255,255,.18); border-radius:2px; overflow:hidden; }
.phase-rail i{ position:absolute; inset:0 0 auto 0; display:block; height:100%; background:var(--sun); transform:scaleY(0); transform-origin:top center; }
@media (max-width:900px){ .phase-rail{ display:none; } }
.svc-items{ display:grid; }
.svc-item{ display:grid; grid-template-columns:auto 1fr; gap:clamp(16px,2.2vw,32px); align-items:start; padding:clamp(18px,2vw,26px) 0;
  border-top:1px solid rgba(255,255,255,.13); }
.svc-item:first-child{ border-top:0; padding-top:0; }
.svc-n{ font-family:var(--f-display); font-weight:800; font-size:clamp(15px,1.4vw,19px); color:var(--sun); min-width:2ch; padding-top:.3em; }
.svc-item p{ margin:0; font-size:clamp(16px,1.35vw,19px); color:rgba(255,255,255,.92); max-width:52ch; font-weight:350; line-height:1.5; }
.svc-note{ display:block; margin-top:8px; font-size:14.5px; line-height:1.5; color:rgba(255,255,255,.56); }

/* what the partnership hands over */
.deliv-head{ margin-bottom:clamp(34px,4vw,56px); }
.deliv{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(22px,3vw,52px); }
@media (max-width:860px){ .deliv{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .deliv{ grid-template-columns:1fr; } }
.deliv-col h3{ font-family:var(--f-geo); font-weight:700; font-size:13px; color:var(--ink); margin:0 0 4px; }
.deliv-list{ list-style:none; margin:0; padding:0; }
.deliv-list li{ padding:13px 0; border-top:1px solid var(--ink-4); font-size:15px; line-height:1.45; color:var(--ink-1); }

/* closing call */
.cta-svc-sec{ overflow:hidden; position:relative; }
.cta-svc{ text-align:center; }
.container.cta-svc{ position:relative; z-index:2; }
.cta-svc h2{ max-width:34ch; margin-inline:auto; }
.cta-svc .btn{ margin-top:34px; }
.t-pattern.cta-svc{ -webkit-mask-image:radial-gradient(60% 80% at 50% 100%, #000, transparent 70%);
                            mask-image:radial-gradient(60% 80% at 50% 100%, #000, transparent 70%); }


/* ============================================================
   FAQ
   ============================================================ */
.faq-head{ padding-top:var(--header-h); }
.h1-wrap{ position:relative; display:inline-block; padding:20px 0 0 30px; }
.faq-sub{ color:var(--ink-1); margin-top:20px; max-width:52ch; }
.faq-grid{ display:grid; grid-template-columns:minmax(0,1fr) 232px; gap:clamp(32px,6vw,96px); margin-top:64px; align-items:start; }
.faq-grid--solo{ grid-template-columns:minmax(0,1fr); }
.faq-list{ border-top:1px solid var(--ink-4); }
.faq-rail{ position:sticky; top:calc(var(--header-h) + 40px); }
.faq-rail .r-head{ font-family:var(--f-geo); font-weight:700; font-size:11px; color:var(--ink-2); margin-bottom:16px; }
.faq-rail a{ display:flex; align-items:baseline; gap:10px; padding:9px 0; text-decoration:none; color:var(--ink-1);
  font-family:var(--f-geo); font-weight:700; font-size:12.5px; transition:color var(--t-quick) var(--e-out); }
.faq-rail a:hover{ color:var(--ink); }
.faq-rail a:hover .leader{ opacity:.8; }
.faq-rail .r-num{ font-size:12px; color:var(--ink-2); white-space:nowrap; }
@media (max-width:1023px){
  .faq-grid{ grid-template-columns:1fr; }
  .faq-rail{ position:static; display:flex; flex-wrap:wrap; gap:4px 28px; margin-top:-16px; order:-1; }
  .faq-rail .r-head{ width:100%; margin-bottom:2px; }
  .faq-rail a{ flex:none; }
  .faq-rail .leader{ display:none; }
}
/* a dotted leader materialises between question and control */
.faq-list .acc .leader{ opacity:0; align-self:center; transition:opacity var(--t-quick) var(--e-out); }
.faq-list .acc .acc-head:hover .leader, .faq-list .acc[data-open="true"] .leader{ opacity:.38; }
.faq-list .acc .q{ padding-right:8px; text-align:left; }
.acc-inner .acc-cta{ margin:18px 0 0; }


/* ============================================================
   CONTACT
   ============================================================ */
.contact-split{ display:grid; grid-template-columns:45fr 55fr; align-items:stretch; padding-top:var(--header-h); }
.c-left{ position:relative; overflow:hidden; }
/* the studio photograph behind the ink panel, under an ink wash */
.c-left-bg{ position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none; }
.layered > .c-left-bg{ position:absolute; z-index:0; }
.c-left-bg img{ width:100%; height:100%; object-fit:cover; object-position:50% 26%; display:block; }
.c-left-bg::after{ content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(13,8,56,.80) 0%, rgba(13,8,56,.84) 40%, rgba(13,8,56,.90) 100%); }
.c-left-inner{ position:sticky; z-index:2; top:var(--header-h); min-height:calc(100svh - var(--header-h));
  display:flex; align-items:center; padding:40px clamp(24px,3.4vw,60px) 56px; width:100%; }
.panel-frame{ position:relative; width:100%; padding:clamp(36px,4.2vw,68px) clamp(22px,2.4vw,40px); }
/* .panel-desc and .resp-line stay single-class: in the approved design the ink panel's
   paragraph colour (.on-ink p) wins over their own */
.panel-desc{ font-family:var(--f-geo); font-weight:700; font-size:clamp(13px,1.2vw,15px); color:var(--sun); margin:0 0 26px; max-width:24ch; line-height:1.8; }
.c-left .tel-big{ display:inline-block; font-size:clamp(19px,1.8vw,27px); color:#fff; text-decoration:none; letter-spacing:0; margin-bottom:10px; max-width:100%; }
.c-left .mail{ color:var(--ink-3); text-decoration:none; font-size:16px; }
.c-left .mail:hover{ color:#fff; }
.msgr-row{ display:flex; flex-wrap:wrap; gap:22px; margin-top:30px; }
.msgr-row .link{ color:#fff; }
.resp-line{ margin:30px 0 0; color:var(--ink-3); font-size:14.5px; max-width:34ch; }
.c-right{ padding:clamp(40px,7vh,88px) var(--margin) 72px; }
.c-right-inner{ max-width:700px; margin-inline:auto; }
.c-right h1{ margin:20px 0 46px; }
.form-grid{ display:grid; grid-template-columns:1fr 1fr; column-gap:32px; }
.form-grid .field--full{ grid-column:1 / -1; }
.form-grid textarea{ resize:vertical; min-height:120px; }
.form-actions{ margin-top:8px; }
.call-sticky{ display:none; }
@media (max-width:900px){
  .contact-split{ grid-template-columns:1fr; }
  .c-left-inner{ position:relative; min-height:0; padding:40px var(--margin) 56px; }
  .c-right{ padding:56px var(--margin) 88px; }
}
@media (max-width:640px){ .form-grid{ grid-template-columns:1fr; } }
@media (max-width:767px){
  .panel-frame{ padding:30px 22px; }
  .call-sticky{ display:inline-flex; position:fixed; left:50%; transform:translateX(-50%);
    bottom:calc(14px + env(safe-area-inset-bottom)); z-index:80; box-shadow:0 12px 32px rgba(13,8,56,.28); }
  .call-sticky:active{ transform:translateX(-50%) scale(.98); }
}


/* ============================================================
   THANK-YOU
   ============================================================ */
.tk-hero{ position:relative; min-height:100svh; display:flex; flex-direction:column; overflow:hidden; padding:calc(var(--header-h) + 40px) 0 44px; }
.tk-hero > .container{ flex:1; width:100%; display:flex; flex-direction:column; }
.tk-inner{ margin-block:auto; text-align:center; display:grid; justify-items:center; gap:22px; max-width:720px; margin-inline:auto; padding-block:clamp(32px,6vh,72px); }
.tk-mark.t-contour{ position:static; width:clamp(96px,12vw,128px); height:auto; color:var(--sun); }
.tk-inner h1{ color:#fff; }
.tk-inner .body-lg{ max-width:46ch; margin-inline:auto; }
.tk-actions{ display:flex; flex-wrap:wrap; justify-content:center; gap:16px; margin-top:10px; }
/* the glass mark rises out of the lower-right corner; a pattern fragment sits behind it */
.tk-render{ right:-3%; bottom:-10%; width:clamp(200px,24vw,380px); opacity:.95; }
@media (max-width:767px){ .tk-render{ right:-22%; bottom:-6%; opacity:.5; } }


/* ============================================================
   TERMS / PRIVACY — the legal document
   ============================================================ */
.doc{ position:relative; padding:calc(var(--header-h) + clamp(44px,6vw,72px)) 0 var(--pad-section); }
.doc .num{ font-weight:300; }
.doc-crumb{ margin-top:0; margin-bottom:clamp(40px,5vw,64px); }
.doc-head h1{ margin-bottom:16px; }
.doc-meta{ display:flex; align-items:baseline; gap:10px; font-size:14px; color:var(--ink-1); margin:0 0 clamp(48px,6vw,80px); }
.doc-meta .num{ letter-spacing:.04em; }
.doc-grid{ display:grid; grid-template-columns:minmax(230px,320px) minmax(0,680px); gap:clamp(40px,7vw,120px); align-items:start; }
.doc-grid--plain{ grid-template-columns:minmax(0,680px); }
.doc-toc{ position:sticky; top:110px; }
.toc-cap{ display:block; font-size:11px; letter-spacing:.12em; color:var(--ink-2); padding-bottom:12px; }
.doc-toc .toc-row{ display:flex; align-items:baseline; gap:12px; padding:11px 2px; text-decoration:none; font-size:14px; color:var(--ink-1);
  border-top:1px solid var(--ink-4); transition:color var(--t-quick) var(--e-out); }
.doc-toc .toc-row .t-idx{ font-size:12px; flex:none; color:var(--ink-2); transition:color var(--t-quick) var(--e-out); }
.doc-toc .toc-row .leader{ min-width:18px; }
.doc-toc .toc-row:hover, .doc-toc .toc-row:focus-visible{ color:var(--ink); }
.doc-toc .toc-row:hover .t-idx{ color:var(--ink); }
.doc-sec{ border-top:1px solid var(--ink-4); padding-top:32px; margin-top:48px; scroll-margin-top:110px; }
.doc-sec:first-of-type{ margin-top:0; }
.doc-lead + .doc-sec{ margin-top:32px; }
.sec-row{ display:flex; align-items:baseline; gap:16px; margin-bottom:18px; }
.sec-row .s-idx{ font-size:14px; color:var(--ink-2); flex:none; }
.sec-row h2{ font-weight:700; font-size:clamp(17px,1.8vw,21px); letter-spacing:.08em; margin:0; }
.doc-body p, .doc-body ul, .doc-body ol{ font-size:15.5px; line-height:1.75; color:var(--ink-1); max-width:68ch; }
.doc-body ul, .doc-body ol{ padding-left:20px; }
.doc-body h3{ font-size:17px; margin:28px 0 10px; }
.doc-body a{ color:var(--ink); }
.doc-body a.u-sweep{ color:var(--ink); }
.doc-body .link{ margin-top:6px; display:inline-flex; }
.doc-close{ margin-top:clamp(56px,8vw,96px); }
@media (max-width:900px){
  .doc-grid{ grid-template-columns:1fr; }
  .doc-toc{ position:static; }
}


/* ============================================================
   BLOG — listing (blog page, categories)
   ============================================================ */
.arch-head{ padding-top:var(--header-h); padding-bottom:calc(var(--pad-section)*.45); }
.arch-head .rule{ margin-top:0; margin-bottom:clamp(36px,5vw,64px); }
.head-wrap{ position:relative; display:inline-block; padding:clamp(14px,2vw,24px) clamp(20px,3vw,34px); }
.arch-sub{ margin:18px 0 0; color:var(--ink-1); max-width:52ch; }
.chips-row{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:clamp(30px,4vw,48px); }
.chips-row .tn-chips{ gap:10px; margin:0; } /* wraps on desktop (wp.css), scrolls sideways on phones (main.css) */
.chips-row .count{ font-family:var(--f-display); font-weight:300; font-size:13px; color:var(--ink-2); margin-left:6px; }
.chip[aria-current="page"] .arw{ width:12px; }
/* featured — 7/5 split, glass caption bar over the photo */
.blog-feat{ padding-top:0; }
.feat-card{ display:grid; grid-template-columns:7fr 5fr; gap:clamp(26px,4vw,64px); align-items:center; text-decoration:none; }
@media (max-width:900px){ .feat-card{ grid-template-columns:1fr; } }
.feat-card:hover{ transform:none; box-shadow:none; }
.feat-card .crop{ aspect-ratio:7/5; }
.feat-bar{ position:absolute; left:0; right:0; bottom:0; display:flex; align-items:center; gap:14px; padding:13px 20px; color:#fff; }
.feat-bar .fb-label{ font-family:var(--f-geo); font-weight:700; font-size:11px; color:var(--sun); }
.feat-bar .fb-date{ margin-left:auto; font-family:var(--f-display); font-weight:300; font-size:12.5px; }
.feat-body h2{ margin-bottom:14px; font-size:clamp(20px,2.1vw,29px); line-height:1.22; }
.feat-body .excerpt{ color:var(--ink-1); }
.feat-meta{ display:flex; align-items:baseline; gap:12px; max-width:300px; margin:18px 0 22px; }
.feat-meta .b-date{ font-family:var(--f-display); font-weight:300; font-size:13px; color:var(--ink-2); }
.feat-meta .rt{ font-size:13.5px; color:var(--ink-1); }
/* the grid — four across on the blog page (the homepage and related rows keep three) */
.blog-list{ padding-top:0; }
.blog-list .blog-grid{ grid-template-columns:repeat(4,1fr); row-gap:clamp(40px,5vw,64px); }
@media (max-width:1240px){ .blog-list .blog-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:660px){ .blog-list .blog-grid{ grid-template-columns:1fr; } }


/* ============================================================
   PROJECTS ARCHIVE
   ============================================================ */
.arc{ padding-top:var(--header-h); padding-bottom:0; }
.arc-rule{ margin:0 0 clamp(30px,4.5vw,56px); }
.arc-head{ display:grid; gap:18px; margin-bottom:clamp(22px,3vw,40px); }
.arc-lede{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,64px); align-items:start; }
@media (max-width:860px){ .arc-lede{ grid-template-columns:1fr; } }
.arc-stats{ display:grid; gap:22px; }
.arc .stat{ display:flex; align-items:baseline; gap:14px; }
.arc .stat .n{ font-family:var(--f-display); font-weight:800; font-size:clamp(36px,4.2vw,60px); line-height:1; color:var(--ink); }
.arc .stat .l{ font-family:var(--f-geo); font-size:11.5px; color:var(--ink-2); max-width:18ch; line-height:1.6; font-weight:700; }
/* the open slot — the roster's next place */
.tn-slot{ overflow:hidden; padding-block:clamp(46px,6vw,76px); }
.tn-slot .btn{ margin-top:6px; }
.slot{ position:relative; aspect-ratio:1/1; display:grid; place-items:center; text-align:center; padding:34px; }
.slot-in{ display:grid; gap:16px; justify-items:center; }
.slot .lbl{ font-family:var(--f-geo); font-size:11px; color:var(--sun); font-weight:700; }
.slot-mark{ width:64px; height:43px; fill:rgba(255,255,255,.45); }
.slot-rule{ color:#fff; margin-top:clamp(28px,4vw,52px); }


/* ============================================================
   PROJECT PAGE — image-led, not a spec sheet
   ============================================================ */

/* hero: type sits on the photograph under a scrim */
.pj-hero{ position:relative; min-height:100svh; display:flex; align-items:flex-end; overflow:hidden;
  padding:calc(var(--header-h) + 40px) 0 clamp(44px,7vh,86px); background:var(--ink); }
.pj-hero-bg{ position:absolute; inset:0; z-index:0; overflow:hidden; }
.pj-hero-bg img{ width:100%; height:100%; object-fit:cover; object-position:50% 58%; display:block; }
.pj-hero-bg::after{ content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(13,8,56,.42) 0%, rgba(13,8,56,.12) 34%, rgba(13,8,56,.62) 76%, rgba(13,8,56,.88) 100%); }
.pj-hero-in{ position:relative; z-index:1; }
.pj-status{ display:block; font-family:var(--f-geo); font-weight:700; font-size:11px; color:var(--sun); margin-bottom:18px; }
.pj-hero h1{ color:#fff; margin:0; }
.pj-place{ margin:18px 0 0; font-size:clamp(14px,1.15vw,16px); color:rgba(255,255,255,.8); }

/* statement */
.pj-statement{ padding-block:clamp(64px,8vw,120px); }
.pj-say{ margin:0 0 clamp(40px,5vw,72px); max-width:24ch; font-weight:350; font-size:clamp(26px,3.6vw,52px); line-height:1.24; letter-spacing:-.004em; color:var(--ink); }
.pj-say .fill-word{ opacity:.16; will-change:opacity; }
.pj-strip{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:0 clamp(28px,4vw,72px); border-top:1px solid var(--ink-4); }
.pj-strip li{ display:grid; gap:7px; padding:22px 0; }
.pj-strip .k{ font-family:var(--f-geo); font-weight:700; font-size:10.5px; color:var(--ink-2); }
.pj-strip .v{ font-family:var(--f-display); font-weight:500; font-size:clamp(17px,1.7vw,23px); color:var(--ink); }
.pj-strip .v.cream{ font-family:var(--f-geo); font-weight:500; font-size:16px; color:var(--ink-1); }
.pj-statement + .pj-content-sec{ padding-top:0; }
.pj-content.prose{ margin-inline:0; }

/* split: the image bleeds to the page edge, copy holds the other side */
.pj-split{ display:grid; grid-template-columns:1fr 1fr; align-items:stretch; overflow:hidden; }
.pj-split-media{ position:relative; min-height:clamp(420px,62vw,760px); overflow:hidden; }
.pj-split-media img{ width:100%; height:100%; object-fit:cover; display:block; }
.pj-split-copy{ display:flex; flex-direction:column; justify-content:center; padding:clamp(46px,6vw,96px) clamp(26px,5vw,88px); }
.pj-split-copy h2{ margin:0 0 clamp(20px,2.4vw,30px); }
.pj-split-copy p{ margin:0 0 16px; max-width:44ch; font-size:clamp(15px,1.2vw,17px); line-height:1.55; }
.pj-split.on-ink .pj-split-copy p{ color:rgba(255,255,255,.82); }
.pj-split--rev .pj-split-media{ order:2; }
@media (max-width:900px){
  .pj-split{ grid-template-columns:1fr; }
  .pj-split-media{ min-height:clamp(300px,64vw,460px); }
  .pj-split--rev .pj-split-media{ order:0; }
  .pj-split-copy{ padding:clamp(34px,7vw,56px) var(--margin); }
}

/* location: the figures read off the aerial */
.pj-map{ position:relative; overflow:hidden; display:flex; align-items:flex-end; min-height:clamp(520px,72vh,760px);
  padding:clamp(56px,8vw,110px) 0 clamp(40px,5vw,70px); background:var(--ink); }
.pj-map-bg{ position:absolute; inset:0; z-index:0; overflow:hidden; }
.pj-map-bg img{ width:100%; height:100%; object-fit:cover; display:block; }
.pj-map-bg::after{ content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(13,8,56,.55) 0%, rgba(13,8,56,.34) 40%, rgba(13,8,56,.86) 100%); }
.pj-map-in{ position:relative; z-index:1; }
.pj-map h2{ color:#fff; margin:0 0 clamp(30px,4vw,52px); }
.pj-dist{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(16px,2.4vw,40px); }
@media (max-width:820px){ .pj-dist{ grid-template-columns:1fr 1fr; gap:26px 20px; } }
.pj-dist > div{ border-top:1.5px solid var(--sun); padding-top:18px; }
.pj-dist .n{ display:block; font-family:var(--f-display); font-weight:800; line-height:1; font-size:clamp(30px,3.6vw,52px); color:#fff; }
.pj-dist .l{ display:block; margin-top:10px; font-family:var(--f-geo); font-size:10.5px; color:rgba(255,255,255,.72); line-height:1.4; max-width:18ch; font-weight:700; }

/* amenities */
.pj-h{ margin:0 0 clamp(26px,3vw,42px); }
.pj-tiles{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(16px,2vw,28px); }
@media (max-width:760px){ .pj-tiles{ grid-template-columns:1fr; } }
.pj-tiles figure, .pj-gal figure{ margin:0; }
.pj-tiles .crop{ aspect-ratio:4/3; }
.pj-tiles figcaption{ display:block; margin-top:12px; font-family:var(--f-geo); font-size:10.5px; color:var(--ink-2); font-weight:700; }
.pj-more{ list-style:none; margin:clamp(30px,3.4vw,48px) 0 0; padding:0; display:flex; flex-wrap:wrap; gap:0 clamp(24px,3vw,52px); border-top:1px solid var(--ink-4); }
.pj-more li{ padding:15px 0; font-size:15px; color:var(--ink-1); }

/* unit mix */
.pj-mix{ margin:0 0 22px; }
.pj-mix > div{ display:flex; align-items:baseline; gap:16px; padding:15px 0; border-top:1px solid var(--ink-4); }
.pj-mix dt{ font-family:var(--f-geo); font-weight:700; font-size:12.5px; }
.pj-mix dd{ margin:0 0 0 auto; font-family:var(--f-display); font-weight:500; font-size:17px; color:var(--ink-1); }
/* the one departure from the static design: there the areas were ink-on-ink (≈1.6:1) */
.on-ink .pj-mix dd{ color:rgba(255,255,255,.82); }
.pj-note{ font-size:14.5px; color:var(--ink-2); }

/* the kicker that names whose voice a section is in */
.pj-kicker{ display:block; margin-bottom:16px; font-family:var(--f-geo); font-weight:700; font-size:11px; color:var(--sun); }

/* our read on a project fact */
.pj-angle{ margin:clamp(26px,3vw,40px) 0 0; display:flex; flex-wrap:wrap; align-items:baseline; gap:14px; padding-top:18px;
  border-top:1px solid rgba(255,255,255,.18); font-size:15px; line-height:1.5; color:rgba(255,255,255,.82); max-width:62ch; }
.pj-angle span{ font-family:var(--f-geo); font-weight:700; font-size:10.5px; color:var(--sun); flex:none; }
.pj-split .pj-split-copy .pj-angle{ margin-bottom:0; }
.pj-split:not(.on-ink) .pj-angle{ border-top-color:var(--ink-4); color:var(--ink-1); }
.pj-split:not(.on-ink) .pj-angle span{ color:var(--ink-2); }

/* mandate */
.pj-mandate{ overflow:hidden; }
.pj-mandate .watermark{ right:-14%; bottom:-24%; width:48%; min-width:400px; }
.pj-mandate-in{ position:relative; z-index:2; }
.pj-role{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(22px,3vw,56px); }
@media (max-width:820px){ .pj-role{ grid-template-columns:1fr; gap:0; } }
.pj-role > div{ border-top:1px solid rgba(255,255,255,.18); padding-top:22px; }
@media (max-width:820px){ .pj-role > div{ padding-bottom:22px; } }
.pj-role .i{ display:block; font-family:var(--f-display); font-weight:800; font-size:14px; color:var(--sun); }
.pj-role .v{ display:block; margin-top:12px; font-family:var(--f-geo); font-weight:700; font-size:clamp(15px,1.5vw,19px); color:#fff; }
.pj-role p{ margin:10px 0 0; font-size:15px; line-height:1.5; color:rgba(255,255,255,.72); max-width:30ch; }
.pj-role-note{ margin:clamp(30px,3.4vw,46px) 0 0; max-width:46ch; color:rgba(255,255,255,.82); }

/* gallery */
.pj-gallery-sec{ padding-top:0; }
.pj-gal{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(14px,1.6vw,22px); }
@media (max-width:900px){ .pj-gal{ grid-template-columns:1fr 1fr; } }
.pj-gal .crop{ aspect-ratio:1/1; }
.pj-gal figcaption{ display:block; margin-top:11px; font-family:var(--f-geo); font-size:10px; color:var(--ink-2); font-weight:700; }
.pj-site{ margin:clamp(26px,3vw,40px) 0 0; }

/* next */
.pd-next{ position:relative; overflow:hidden; }
.pd-next-link{ display:block; text-decoration:none; color:inherit; padding:clamp(56px,8vw,120px) 0; }
.pd-next-arrow{ position:absolute; right:var(--margin); top:50%; translate:0 -50%; width:clamp(90px,12vw,180px); height:auto;
  color:var(--sun); fill:currentColor; transition:transform var(--t-base) var(--e-out); }
.pd-next-link:hover .pd-next-arrow{ transform:translateX(10px); }
.pd-next-top{ display:flex; align-items:baseline; gap:14px; margin-bottom:14px; }
.pd-next-top .lbl{ font-family:var(--f-geo); font-size:10.5px; color:var(--sun); font-weight:700; }
.pd-next-top .loc{ font-size:14px; color:var(--ink-3); }
.pd-next h2{ color:#fff; margin:0; }
