:root {
  --paper:#FAF6EE; --ink:#14110F; --ink-soft:#4A4540;
  --teal:#0F4C5C; --rust:#C9522A; --highlight:#F2EBDB;
  --rule: rgba(20,17,15,.18);
  --rule-soft: rgba(20,17,15,.10);
  --link-underline: rgba(15,76,92,.45);
  --serif:"Fraunces","Iowan Old Style",Georgia,serif;
  --sans:"IBM Plex Sans","Helvetica Neue",Arial,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  --pad: clamp(20px, 5vw, 56px);
  color-scheme: light;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --paper:#15110D;
    --ink:#EDE4D2;
    --ink-soft:#9D9483;
    --teal:#5DB3C6;
    --rust:#E2785A;
    --highlight:#1F1812;
    --rule: rgba(237,228,210,.16);
    --rule-soft: rgba(237,228,210,.08);
    --link-underline: rgba(93,179,198,.45);
    color-scheme: dark;
  }
}

:root[data-theme="dark"] {
  --paper:#15110D;
  --ink:#EDE4D2;
  --ink-soft:#9D9483;
  --teal:#5DB3C6;
  --rust:#E2785A;
  --highlight:#1F1812;
  --rule: rgba(237,228,210,.16);
  --rule-soft: rgba(237,228,210,.08);
  --link-underline: rgba(93,179,198,.45);
  color-scheme: dark;
}

body, .approach-inner, a { transition: background-color .25s ease, color .2s ease, border-color .25s ease; }

*,*::before,*::after { box-sizing: border-box; }
html,body { margin:0; padding:0; }
body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern","liga","onum";
}
::selection { background: var(--teal); color: var(--paper); }

a {
  color: var(--teal);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  text-decoration-color: var(--link-underline);
  transition: text-decoration-color .15s, color .15s;
}
a:hover { text-decoration-color: currentColor; color: var(--rust); }

/* Layout */
.page { max-width: 1080px; margin: 0 auto; padding: 0 var(--pad); }
hr.rule { border:0; border-top: 1px solid var(--rule); margin: 0; }
hr.ink  { border:0; border-top: 1px solid var(--ink); margin: 0; }

/* Type primitives */
.eyebrow {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--rust);
  font-weight: 500;
  margin: 0;
}
.eyebrow .ink { color: var(--ink-soft); }
.eyebrow .dot { color: var(--ink-soft); padding: 0 .5em; }

.display {
  font-family: var(--serif);
  font-weight: 500;
  font-variation-settings: "opsz" 144;
  letter-spacing: -.025em;
  line-height: .96;
  color: var(--ink);
  margin: 0;
  text-wrap: balance;
}
.display em { font-style: italic; color: var(--teal); font-weight: 500; }

.serif-h {
  font-family: var(--serif);
  font-weight: 500;
  font-variation-settings: "opsz" 96;
  letter-spacing: -.018em;
  line-height: 1.05;
  color: var(--ink);
  margin: 0;
}
.serif-h em { font-style: italic; color: var(--teal); }

/* ---------- Masthead ---------- */
.masthead { padding-top: clamp(28px, 5vw, 48px); padding-bottom: clamp(36px, 6vw, 64px); }
.masthead-top {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px 32px;
  flex-wrap: wrap;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--ink);
}
.masthead-top .right {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink-soft);
  display: inline-flex;
  align-items: baseline;
  gap: 18px;
}

.theme-toggle {
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: var(--rust);
  background: transparent;
  border: 0;
  padding: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  transition: color .15s;
}
.theme-toggle:hover { color: var(--teal); }
.theme-toggle:focus-visible {
  outline: 1px solid var(--teal);
  outline-offset: 4px;
}
.theme-toggle .glyph {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--ink);
  border: 1px solid var(--ink);
  position: relative;
  overflow: hidden;
}
.theme-toggle .glyph::after {
  content: "";
  position: absolute;
  inset: 0 0 0 50%;
  background: var(--paper);
}
.wordmark {
  font-family: var(--serif);
  font-weight: 500;
  font-variation-settings: "opsz" 144;
  font-size: clamp(54px, 10.5vw, 132px);
  line-height: .94;
  letter-spacing: -.035em;
  color: var(--ink);
  margin: clamp(28px, 4vw, 44px) 0 clamp(20px, 3vw, 32px);
  white-space: nowrap;
}
@media (max-width: 520px) {
  .wordmark { white-space: normal; }
}
.wordmark em { font-style: italic; color: var(--teal); font-weight: 500; }
.wordmark .amp { font-style: italic; color: var(--rust); font-weight: 500; }

.masthead-foot {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px 32px;
  flex-wrap: wrap;
  padding-top: 12px;
  border-top: 1px solid var(--ink);
}
.masthead-foot .tag {
  font-family: var(--serif);
  font-style: italic;
  font-variation-settings: "opsz" 24;
  color: var(--ink-soft);
  font-size: 15.5px;
  margin: 0;
}
.masthead-foot .vol {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--rust);
}

/* ---------- Hero ---------- */
.hero { padding: clamp(56px, 9vw, 120px) 0 clamp(48px, 7vw, 88px); }
.hero h1 {
  font-family: var(--serif);
  font-weight: 500;
  font-variation-settings: "opsz" 144;
  font-size: clamp(40px, 7vw, 96px);
  line-height: 1.02;
  letter-spacing: -.022em;
  color: var(--ink);
  margin: 0;
  max-width: 17ch;
  text-wrap: balance;
}
.hero h1 em { font-style: italic; color: var(--teal); font-weight: 500; }
.hero-foot {
  margin-top: clamp(40px, 6vw, 64px);
  padding-top: 22px;
  border-top: 1px solid var(--rule);
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 28px 56px;
  align-items: start;
}
.hero-foot p {
  margin: 0;
  max-width: 56ch;
  color: var(--ink-soft);
  font-size: 17px;
  line-height: 1.65;
}
.hero-foot p em {
  font-family: var(--serif);
  font-style: italic;
  color: var(--ink);
  font-variation-settings: "opsz" 24;
  font-size: 1.05em;
}
.hero-foot .stand {
  text-align: right;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink-soft);
  line-height: 1.9;
}
.hero-foot .stand b { color: var(--rust); font-weight: 500; }

/* ---------- Sections ---------- */
section {
  padding: clamp(56px, 8vw, 96px) 0;
  border-top: 1px solid var(--rule);
}
.sec-head {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: clamp(20px, 4vw, 56px);
  align-items: baseline;
  margin-bottom: clamp(36px, 6vw, 56px);
}
.sec-head .label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--rust);
  padding-top: .55em;
}
.sec-head .label .num {
  display: block;
  margin-top: 6px;
  color: var(--rust);
  letter-spacing: .14em;
}
.sec-head h2 {
  font-family: var(--serif);
  font-weight: 500;
  font-variation-settings: "opsz" 96;
  font-size: clamp(28px, 3.6vw, 48px);
  line-height: 1.05;
  letter-spacing: -.018em;
  margin: 0;
  max-width: 22ch;
  text-wrap: balance;
}
.sec-head h2 em { font-style: italic; color: var(--teal); font-weight: 500; }

/* ---------- Services ---------- */
.services { display: grid; grid-template-columns: 1fr; gap: 0; }
.service {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: clamp(20px, 4vw, 56px);
  padding: clamp(28px, 4vw, 40px) 0;
  border-top: 1px solid var(--rule);
  align-items: start;
}
.service:first-child { border-top: 1px solid var(--ink); }
.service:last-child { border-bottom: 1px solid var(--ink); }
.service .marker {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--rust);
  padding-top: .8em;
}
.service .marker .num {
  display: block;
  font-size: 13px;
  margin-bottom: 6px;
  color: var(--rust);
  letter-spacing: .14em;
}
.service h3 {
  font-family: var(--serif);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  font-size: clamp(26px, 3vw, 36px);
  line-height: 1.08;
  letter-spacing: -.018em;
  margin: 0 0 12px;
  text-wrap: balance;
}
.service h3 em { font-style: italic; color: var(--teal); }
.service .lead {
  margin: 0;
  color: var(--ink);
  max-width: 58ch;
  font-size: 18px;
  line-height: 1.5;
  font-family: var(--serif);
  font-style: italic;
  font-variation-settings: "opsz" 24;
  color: var(--ink-soft);
}
.service ul {
  list-style: none;
  margin: 22px 0 0;
  padding: 0;
  max-width: 60ch;
  border-top: 1px solid var(--rule-soft);
}
.service li {
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 10px;
  padding: 12px 0;
  border-bottom: 1px solid var(--rule-soft);
  color: var(--ink);
  font-size: 15.5px;
  line-height: 1.55;
}
.service li::before {
  content: "—";
  color: var(--rust);
  font-family: var(--mono);
  font-size: 13px;
  padding-top: 2px;
}
.service li b {
  font-family: var(--mono);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ink-soft);
  display: block;
  margin-bottom: 2px;
}

/* ---------- Approach (manifesto) ---------- */
.approach-inner {
  background: var(--highlight);
  padding: clamp(36px, 5vw, 64px) clamp(24px, 4vw, 56px);
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
}
.manifesto {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: princ;
  display: grid;
  gap: clamp(28px, 4vw, 40px);
}
.manifesto li {
  counter-increment: princ;
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: clamp(16px, 3vw, 32px);
  align-items: baseline;
  padding-bottom: clamp(20px, 3vw, 28px);
  border-bottom: 1px solid var(--rule);
}
.manifesto li:last-child { border-bottom: 0; padding-bottom: 0; }
.manifesto li::before {
  content: "§ 0" counter(princ);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--rust);
  padding-top: .7em;
}
.manifesto p {
  font-family: var(--serif);
  font-weight: 400;
  font-variation-settings: "opsz" 96;
  font-size: clamp(22px, 2.8vw, 32px);
  line-height: 1.22;
  letter-spacing: -.012em;
  color: var(--ink);
  margin: 0;
  max-width: 28ch;
  text-wrap: balance;
}
.manifesto p em { font-style: italic; color: var(--teal); font-weight: 500; }

/* ---------- About ---------- */
.about-body {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: clamp(20px, 4vw, 56px);
  align-items: start;
}
.about-body .label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--rust);
  padding-top: .8em;
}
.about-body .label .name {
  display: block;
  color: var(--ink-soft);
  margin-top: 6px;
}
.about-prose {
  font-family: var(--serif);
  font-style: normal;
  font-weight: 400;
  font-variation-settings: "opsz" 60;
  font-size: clamp(20px, 2.2vw, 24px);
  line-height: 1.5;
  color: var(--ink);
  margin: 0;
  max-width: 46ch;
  letter-spacing: -.005em;
  text-wrap: pretty;
}
.about-prose em { font-style: italic; color: var(--teal); }
.about-prose a { color: var(--teal); }
.about-prose::first-letter {
  font-weight: 500;
  font-size: 3.6em;
  line-height: .85;
  float: left;
  padding: .08em .12em 0 0;
  color: var(--rust);
  font-variation-settings: "opsz" 144;
}

/* ---------- Contact ---------- */
.contact-grid {
  display: grid;
  grid-template-columns: 160px 1fr 1fr;
  gap: clamp(20px, 4vw, 56px);
  align-items: start;
}
.contact-grid .label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--rust);
  padding-top: .55em;
}
.contact-block dt {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--rust);
  margin: 0 0 6px;
}
.contact-block dd {
  margin: 0 0 26px;
  font-family: var(--serif);
  font-variation-settings: "opsz" 60;
  font-size: 22px;
  line-height: 1.35;
  color: var(--ink);
}
.contact-block dd:last-child { margin-bottom: 0; }
.contact-block dd.mono {
  font-family: var(--mono);
  font-size: 13.5px;
  line-height: 1.6;
  letter-spacing: .04em;
  color: var(--ink);
  text-transform: none;
  font-variation-settings: normal;
}
.contact-block dd a { color: var(--teal); }
.contact-block dd em { font-style: italic; color: var(--teal); }
.contact-cta {
  margin-top: 8px;
  font-family: var(--serif);
  font-style: italic;
  font-variation-settings: "opsz" 24;
  font-size: 17px;
  color: var(--ink-soft);
  line-height: 1.5;
}
.contact-cta a {
  font-family: var(--serif);
  font-style: italic;
  color: var(--teal);
}

/* ---------- Footer ---------- */
footer {
  padding: 22px 0 clamp(28px, 4vw, 44px);
  margin-top: clamp(40px, 6vw, 64px);
  border-top: 1px solid var(--ink);
}
.foot-row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 24px;
  align-items: center;
}
.foot-left, .foot-right {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.foot-right { text-align: right; }
.foot-center {
  font-family: var(--serif);
  font-style: italic;
  font-variation-settings: "opsz" 24;
  font-size: 14px;
  color: var(--ink);
  text-align: center;
  letter-spacing: -.005em;
}

/* ---------- Responsive ---------- */
@media (max-width: 760px) {
  body { font-size: 16px; }
  .sec-head,
  .service,
  .about-body,
  .contact-grid {
    grid-template-columns: 1fr;
    gap: 14px;
  }
  .sec-head .label,
  .service .marker,
  .about-body .label,
  .contact-grid .label { padding-top: 0; }
  .hero-foot { grid-template-columns: 1fr; gap: 20px; }
  .hero-foot .stand { text-align: left; }
  .manifesto li {
    grid-template-columns: 1fr;
    gap: 6px;
  }
  .manifesto li::before { padding-top: 0; }
  .foot-row {
    grid-template-columns: 1fr;
    gap: 8px;
    text-align: left;
  }
  .foot-right, .foot-center { text-align: left; }
  .masthead-top .right { display: none; }
}
