:root{
  --stone:#F3EFE6;
  --stone-deep:#EAE4D6;
  --ink:#1D1C18;
  --ink-soft:#3A3833;
  --slate:#6E6A5E;
  --line: rgba(29,28,24,0.11);
  --line-strong: rgba(29,28,24,0.2);
  --clay:#B5693F;
  --blue:#4C5A66;
  --error:#8A3B2E;
  --font-serif: 'Canela Fallback','Iowan Old Style','Georgia','Times New Roman',serif;
  --font-sans: -apple-system,'Inter','Helvetica Neue',Arial,sans-serif;
  --max: 1160px;
  --header-h: 76px;
  /* The palette is light by design: tell browsers not to apply their own dark theme */
  color-scheme: only light;
}
*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--stone);
  color:var(--ink);
  font-family:var(--font-sans);
  -webkit-font-smoothing:antialiased;
  font-size:16px;
  line-height:1.5;
  overflow-x:hidden;
}
::selection{ background:var(--clay); color:#fff; }
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
.wrap{ max-width:var(--max); margin:0 auto; padding:0 48px; }
h1,h2,h3,h4{ font-family:var(--font-serif); font-weight:500; letter-spacing:-0.01em; margin:0; }
p{ margin:0; }
[hidden]{ display:none !important; }
[id]{ scroll-margin-top:calc(var(--header-h) + 24px); }
:focus-visible{ outline:2px solid var(--clay); outline-offset:3px; }
.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

/* ---------- Nav ---------- */
header.nav{
  position:fixed; top:0; left:0; right:0; z-index:100;
  background:rgba(243,239,230,0.94);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.nav-inner{
  max-width:var(--max); margin:0 auto; padding:0 48px;
  height:var(--header-h); display:flex; align-items:center; justify-content:space-between; gap:24px;
}
.logo{ font-family:var(--font-serif); font-size:18px; letter-spacing:0.01em; display:inline-flex; align-items:baseline; white-space:nowrap; }
.logo-mark{ height:0.72em; width:auto; margin-right:0.4em; align-self:baseline; }
.nav-links{ display:flex; gap:34px; font-size:13px; letter-spacing:0.02em; align-items:center; }
.nav-links a{ opacity:0.72; transition:opacity .2s ease; padding:6px 0; }
.nav-links a:hover, .nav-links a[aria-current="page"]{ opacity:1; }
.nav-links a[aria-current="page"]{ box-shadow:inset 0 -1px 0 var(--clay); }
.nav-cta{ font-size:13px; border-bottom:1px solid var(--ink); padding-bottom:3px; white-space:nowrap; }
@media (max-width:860px){
  :root{ --header-h: 84px; }
  .wrap{ padding:0 24px; }
  .nav-inner{ height:auto; min-height:var(--header-h); padding:12px 24px 0; flex-wrap:wrap; row-gap:2px; }
  .nav-links{ order:3; width:100%; gap:22px; padding:2px 0 6px; overflow-x:auto; }
  .nav-links a{ padding:8px 0; white-space:nowrap; }
}
@media (max-width:400px){
  .nav-cta{ display:none; }
  .nav-links{ gap:18px; font-size:12.5px; }
}

section{ padding:110px 0; }
@media (max-width:860px){ section{ padding:72px 0; } }

.eyebrow{ font-size:11.5px; font-weight:600; letter-spacing:0.16em; text-transform:uppercase; color:var(--slate); }

.btn-line{
  font-size:13.5px; letter-spacing:0.03em; text-transform:uppercase;
  border-bottom:1px solid var(--ink); padding-bottom:5px;
  transition:opacity .2s ease;
}
.btn-line:hover{ opacity:0.6; }
.btn-solid{
  background:var(--ink); color:var(--stone);
  padding:15px 28px; font-size:13.5px; letter-spacing:0.03em; text-transform:uppercase;
  transition:background .2s ease;
  display:inline-block;
}
.btn-solid:hover{ background:var(--clay); }

/* ---------- Page header (used on interior pages) ---------- */
.page-head{ padding:168px 0 0; }
.page-head h1{ font-size:clamp(32px,5vw,52px); line-height:1.1; max-width:760px; margin-top:14px; }
.page-head p{ margin-top:20px; font-size:17px; color:var(--ink-soft); max-width:620px; font-family:var(--font-serif); line-height:1.55; }
@media (max-width:860px){ .page-head{ padding-top:136px; } }

.section-head{ display:grid; grid-template-columns:220px 1fr; gap:32px; margin-bottom:48px; }
.section-head .eyebrow{ padding-top:4px; }
.section-head h2{ font-size:clamp(24px,3.2vw,36px); max-width:600px; }
@media (max-width:760px){ .section-head{ grid-template-columns:1fr; gap:14px; } }

/* ---------- Homepage capability rows ---------- */
.cap-list{ border-top:1px solid var(--line-strong); }
.cap-row{
  position:relative;
  border-bottom:1px solid var(--line-strong);
  transition:background .3s ease;
}
.cap-row a.cap-row-link{ display:block; padding:34px 0; }
.cap-row a.cap-row-link:focus-visible{ outline-offset:-2px; }
.cap-row-inner{
  display:grid; grid-template-columns:50px 1fr 1fr auto; gap:28px; align-items:center;
}
.cap-row .n{ font-family:var(--font-serif); font-size:13px; color:var(--slate); transition:color .3s ease; }
.cap-row h3{ font-size:clamp(21px,2.6vw,28px); transition:color .3s ease; }
.cap-desc{
  font-size:14.5px; color:var(--ink-soft); line-height:1.6; max-width:360px;
  transition:color .3s ease;
}
.cap-arrow{ font-size:13px; letter-spacing:0.03em; text-transform:uppercase; white-space:nowrap; opacity:0; transition:opacity .3s ease; }
.cap-row:hover, .cap-row:focus-within{ background:var(--ink); }
.cap-row:hover h3, .cap-row:focus-within h3{ color:var(--stone); }
.cap-row:hover .n, .cap-row:focus-within .n{ color:#a9a596; }
.cap-row:hover .cap-desc, .cap-row:focus-within .cap-desc{ color:var(--stone); }
.cap-row:hover .cap-arrow, .cap-row:focus-within .cap-arrow{ opacity:1; color:var(--stone); }
@media (max-width:800px){
  .cap-row-inner{ grid-template-columns:32px 1fr; gap:0 16px; }
  .cap-desc{ grid-column:2; max-width:100%; margin-top:8px; font-size:14px; }
  .cap-arrow{ grid-column:2; opacity:1; margin-top:10px; display:block; }
}

/* ---------- Capabilities page: expandable sections ---------- */
.cap-section{ padding:56px 0 110px; }
.cap-items{ border-top:1px solid var(--line-strong); }
.cap-item{ border-bottom:1px solid var(--line-strong); }
.cap-head{
  display:grid; grid-template-columns:50px 1fr auto; gap:28px; align-items:start;
  padding:36px 0;
}
.cap-head .n{ font-family:var(--font-serif); font-size:14px; color:var(--slate); padding-top:8px; }
.cap-head h2{ font-size:clamp(22px,2.8vw,30px); line-height:1.2; }
.cap-summary{ margin-top:10px; font-size:16px; line-height:1.6; color:var(--ink-soft); max-width:580px; }
.cap-toggle{
  display:inline-flex; align-items:center; gap:12px;
  background:transparent; color:var(--ink); border:1px solid var(--ink);
  padding:12px 18px; margin-top:2px;
  font-family:var(--font-sans); font-size:12.5px; letter-spacing:0.04em; text-transform:uppercase;
  cursor:pointer; white-space:nowrap;
  transition:background .2s ease, color .2s ease;
}
.cap-toggle:hover{ background:var(--stone-deep); }
.cap-toggle[aria-expanded="true"]{ background:var(--ink); color:var(--stone); }
.cap-toggle-icon{ position:relative; width:10px; height:10px; flex-shrink:0; }
.cap-toggle-icon::before, .cap-toggle-icon::after{
  content:''; position:absolute; left:0; top:4.5px; width:10px; height:1px; background:currentColor;
  transition:transform .3s ease;
}
.cap-toggle-icon::after{ transform:rotate(90deg); }
.cap-toggle[aria-expanded="true"] .cap-toggle-icon::after{ transform:rotate(0deg); }

.cap-panel{
  display:grid; grid-template-rows:1fr;
  transition:grid-template-rows .45s ease, visibility 0s;
}
.cap-panel-inner{ overflow:hidden; min-height:0; }
.cap-panel-body{ padding:0 0 44px 78px; }
.cap-cols{
  display:grid; grid-template-columns:repeat(3,1fr); gap:36px;
  border-top:1px solid var(--line); padding-top:28px;
}
.cap-cols h3{ font-size:18px; line-height:1.3; }
.cap-cols p{ margin-top:10px; font-size:15px; line-height:1.65; color:var(--ink-soft); }

/* Collapsed state only applies once the script is running */
.js .cap-item:not(.open) .cap-panel{
  grid-template-rows:0fr; visibility:hidden;
  transition:grid-template-rows .45s ease, visibility 0s linear .45s;
}
html:not(.js) .cap-toggle, .js-fallback .cap-toggle{ display:none; }
.js.js-fallback .cap-item .cap-panel{ grid-template-rows:1fr; visibility:visible; }
.cap-instant .cap-panel, .cap-instant .cap-toggle-icon::after{ transition:none !important; }

.cap-closing{ margin-top:48px; }

@media (max-width:800px){
  .cap-section{ padding:40px 0 72px; }
  .cap-head{ grid-template-columns:32px 1fr; gap:0 16px; padding:28px 0; }
  .cap-head .n{ padding-top:6px; }
  .cap-toggle{ grid-column:2; justify-self:start; margin-top:18px; }
  .cap-panel-body{ padding:0 0 32px 48px; }
  .cap-cols{ grid-template-columns:1fr; gap:22px; padding-top:22px; }
}
@media (max-width:480px){
  .cap-panel-body{ padding-left:0; }
}

/* ---------- How we work (homepage, dark band) ---------- */
.evidence{ background:var(--ink); color:var(--stone); }
.evidence-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:rgba(243,239,230,0.14); }
.evidence-cell{ background:var(--ink); padding:52px 32px; text-align:left; }
@media (max-width:800px){ .evidence-grid{ grid-template-columns:1fr; } }

/* ---------- Approach ---------- */
.arrangements{
  display:grid; grid-template-columns:repeat(3,1fr); gap:44px;
  border-top:1px solid var(--line-strong); padding-top:32px;
}
.arrangements h2{ font-size:clamp(22px,2.4vw,26px); }
.arrangements p{ margin-top:12px; font-size:15px; line-height:1.7; color:var(--ink-soft); max-width:360px; }
.prose-rows{ border-top:1px solid var(--line); }
.prose-row{
  display:grid; grid-template-columns:260px 1fr; gap:32px;
  padding:40px 0; border-bottom:1px solid var(--line);
}
.prose-row h2{ font-size:clamp(22px,2.6vw,28px); line-height:1.25; }
.prose-row p{ font-size:16.5px; line-height:1.7; color:var(--ink-soft); max-width:620px; }
.prose-row p + p{ margin-top:16px; }
.section-tight{ padding:64px 0; }
.closing{ padding:0 0 110px; }
@media (max-width:860px){
  .section-tight{ padding:48px 0; }
  .closing{ padding:0 0 72px; }
}
@media (max-width:800px){
  .arrangements{ grid-template-columns:1fr; gap:28px; }
  .prose-row{ grid-template-columns:1fr; gap:14px; padding:32px 0; }
}

/* ---------- People ---------- */
.people-grid{ display:grid; grid-template-columns:1fr 1fr; gap:56px; }
.person-photo{ width:100%; aspect-ratio:4/5; object-fit:cover; filter:saturate(0.94); border-radius:2px; }
.person-name{ font-family:var(--font-serif); font-size:22px; margin-top:22px; }
.person-role{ color:var(--slate); font-size:13.5px; margin-top:4px; }
.person-tag{ font-family:var(--font-serif); font-size:17px; margin-top:16px; line-height:1.4; max-width:340px; }
.person-bio{ font-size:14.5px; color:var(--ink-soft); margin-top:14px; line-height:1.7; max-width:400px; }
.person-focus{ font-size:12.5px; color:var(--slate); margin-top:14px; letter-spacing:0.02em; }
@media (max-width:760px){ .people-grid{ grid-template-columns:1fr; gap:44px; } }

/* ---------- Contact ---------- */
.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:56px; }
.contact-detail{ margin-top:28px; font-size:14.5px; color:var(--ink-soft); line-height:1.8; }
form{ display:flex; flex-direction:column; gap:20px; }
label{ font-size:11.5px; letter-spacing:0.06em; text-transform:uppercase; color:var(--slate); margin-bottom:8px; display:block; }
input, textarea{
  width:100%; padding:0 0 10px; border:none; border-bottom:1px solid var(--line-strong); border-radius:0;
  background:transparent; font-family:var(--font-sans); font-size:16px; color:var(--ink);
}
input:focus, textarea:focus{ outline:none; border-color:var(--clay); box-shadow:0 1px 0 var(--clay); }
input:user-invalid, textarea:user-invalid{ border-color:var(--error); }
textarea{ resize:vertical; min-height:90px; }
button.submit{
  margin-top:8px; align-self:flex-start; background:none; border:1px solid var(--ink); color:var(--ink);
  padding:14px 28px; font-size:13px; letter-spacing:0.03em; text-transform:uppercase; cursor:pointer;
  transition:background .2s ease, color .2s ease;
}
button.submit:hover{ background:var(--ink); color:var(--stone); }
button.submit:disabled{ opacity:0.6; cursor:progress; }
.form-hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.form-status{
  font-size:14.5px; line-height:1.6; color:var(--ink);
  padding:14px 16px; background:var(--stone-deep); border-left:2px solid var(--clay);
}
.form-status.is-error{ border-left-color:var(--error); }
.form-status a{ border-bottom:1px solid currentColor; }
.form-status:focus{ outline:none; }
/* Sits inside .page-head, so override its larger serif paragraph style */
.page-head .form-notice{ margin-top:4px; font-family:var(--font-sans); font-size:13px; line-height:1.6; color:var(--slate); max-width:520px; }
.form-notice a{ color:var(--ink-soft); border-bottom:1px solid var(--line-strong); transition:color .2s ease, border-color .2s ease; }
.form-notice a:hover{ color:var(--ink); border-color:currentColor; }
.contact-section{ padding-bottom:96px; }
@media (max-width:860px){ .contact-section{ padding-bottom:64px; } }
@media (max-width:760px){ .contact-grid{ grid-template-columns:1fr; gap:40px; } }

/* ---------- Thank-you page (shown after a successful contact form submission) ---------- */
.thank-you{ padding-bottom:128px; min-height:calc(100vh - 220px); }
.thank-you-actions{ margin-top:40px; }
@media (max-width:860px){ .thank-you{ padding-bottom:88px; min-height:0; } }

/* ---------- Privacy policy ---------- */
.privacy-head .privacy-meta{ margin-top:22px; font-family:var(--font-sans); font-size:13px; letter-spacing:0.02em; line-height:1.7; color:var(--slate); }
.privacy{ padding:56px 0 128px; }
.privacy-body{ max-width:720px; padding-top:48px; border-top:1px solid var(--line); }
.privacy-body h2{ font-size:clamp(22px,2.6vw,26px); line-height:1.3; margin:52px 0 16px; }
.privacy-body p{ font-size:16.5px; line-height:1.75; color:var(--ink-soft); }
.privacy-body p + p{ margin-top:16px; }
.privacy-body strong{ font-weight:600; color:var(--ink); }
.privacy-meta .nowrap, .privacy-end .nowrap{ white-space:nowrap; }
.privacy-body code{ font-size:0.92em; background:var(--stone-deep); padding:1px 5px; }
.privacy-body a{ color:var(--ink); border-bottom:1px solid var(--clay); overflow-wrap:anywhere; transition:color .2s ease; }
.privacy-body a:hover{ color:var(--clay); }
.privacy-body .privacy-end{ margin-top:56px; padding-top:24px; border-top:1px solid var(--line); font-size:13px; letter-spacing:0.02em; color:var(--slate); }
@media (max-width:860px){
  .privacy{ padding:40px 0 88px; }
  .privacy-body{ padding-top:36px; }
  .privacy-body h2{ margin-top:40px; }
  .privacy-body p{ font-size:16px; }
}

/* ---------- CTA band ---------- */
.cta-band{ padding:120px 0; text-align:center; }
.cta-band h2{ font-size:clamp(28px,4.4vw,46px); max-width:760px; margin:0 auto; line-height:1.2; }
.cta-band .cta-row{ margin-top:36px; display:flex; justify-content:center; gap:16px; flex-wrap:wrap; }
@media (max-width:860px){ .cta-band{ padding:80px 0; } }

/* ---------- Footer (shared across all pages) ---------- */
.site-footer{ border-top:1px solid var(--line); padding:56px 0 32px; font-size:13px; color:var(--slate); }
.footer-grid{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:32px 48px; }
.footer-col{ display:flex; flex-direction:column; align-items:flex-start; gap:8px; }
.footer-logo{ font-family:var(--font-serif); font-size:17px; letter-spacing:0.01em; color:var(--ink); display:inline-flex; align-items:baseline; }
.footer-logo img{ height:0.72em; width:auto; margin-right:0.4em; align-self:baseline; }
.footer-tagline{ font-family:var(--font-serif); font-style:italic; letter-spacing:0.04em; }
.footer-heading{ font-family:var(--font-sans); font-size:11px; font-weight:500; letter-spacing:0.14em; text-transform:uppercase; color:var(--slate); margin-bottom:4px; }
.footer-link{ color:var(--ink-soft); transition:color .2s ease; }
.footer-link:hover{ color:var(--ink); }
.footer-social{ display:inline-flex; align-items:center; gap:9px; }
.footer-social svg{ flex:none; }
.footer-bottom{ margin-top:44px; padding-top:20px; border-top:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px 24px; font-size:12.5px; }
.footer-top{ color:var(--slate); transition:color .2s ease; }
.footer-top:hover{ color:var(--ink); }
.footer-sep{ margin:0 0.6em; }
.footer-legal{ color:var(--slate); transition:color .2s ease; }
.footer-legal:hover, .footer-legal[aria-current="page"]{ color:var(--ink); }
@media (max-width:760px){
  .site-footer{ padding:44px 0 28px; font-size:14px; }
  .footer-grid{ grid-template-columns:1fr; gap:32px; }
  .footer-bottom{ margin-top:36px; }
}

/* ---------- Entrance animation ----------
   Content is only hidden while the script is confirmed to be running,
   so a script or animation failure never leaves anything invisible. */
.js .fade-up{ opacity:0; transform:translateY(16px); transition:opacity .7s ease, transform .7s ease; }
.js .fade-up.in, .js-fallback .fade-up{ opacity:1; transform:none; }

.skip-link{ position:absolute; left:-9999px; }
.skip-link:focus{ left:16px; top:16px; background:#fff; padding:8px 12px; z-index:200; }

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .js .fade-up{ opacity:1; transform:none; transition:none; }
  .cap-panel, .cap-toggle-icon::before, .cap-toggle-icon::after, .cap-row, .cap-row *{ transition:none !important; }
}
