

:root {
  --ink:#2B1717;
  --oxblood:#641F28;
  --cream:#F4EEE3;
  --paper:#FFFDF8;
  --muted:#756A64;
  --line:#D6C9BA;
  --gold:#6B4610;
  --white:#FFF;
  --black:#170D0D;
  --success:#2F5A43;
  --danger:#9C302E;
  --shell:1320px;
  --gutter:clamp(1rem, 4vw, 4.75rem);
  --rhythm:clamp(4.5rem, 10vw, 10rem);
  --space-1:.35rem;
  --space-2:.65rem;
  --space-3:1rem;
  --space-4:1.35rem;
  --space-5:1.8rem;
  --space-6:2.4rem;
  --space-7:3.2rem;
  --space-8:4.25rem;
  --space-9:6rem;
  --space-10:8rem;
  --text-xs:clamp(.68rem, .67rem + .08vw, .75rem);
  --text-sm:clamp(.82rem, .8rem + .12vw, .94rem);
  --text-base:clamp(.96rem, .92rem + .18vw, 1.08rem);
  --text-lg:clamp(1.22rem, 1.1rem + .5vw, 1.55rem);
  --text-xl:clamp(1.55rem, 1.2rem + 1.25vw, 2.35rem);
  --text-2xl:clamp(2rem, 1.45rem + 2.2vw, 4rem);
  --text-3xl:clamp(2.45rem, 1.65rem + 3.8vw, 6.25rem);
  --text-4xl:clamp(3rem, 2rem + 5vw, 8rem);
  --leading-tight:1.04;
  --leading-snug:1.2;
  --leading-body:1.72;
  --leading-loose:1.9;
  --tracking-tight:-.035em;
  --tracking-wide:.12em;
  --ease-out:cubic-bezier(.2,.75,.25,1);
  --ease-in-out:cubic-bezier(.65,0,.35,1);
  --ease-snap:cubic-bezier(.16,1,.3,1);
  --duration-fast:160ms;
  --duration:280ms;
  --duration-slow:650ms;
  --shadow-soft:0 1.25rem 3rem rgba(43,23,23,.1);

  --shadow-deep:0 1.5rem 4rem rgba(43,23,23,.18);
  --border:1px solid var(--line);
}


* { box-sizing: border-box; }
html { min-width: 320px; scroll-behavior: smooth; scroll-padding-block-start: var(--header-compact, 4.75rem); background: var(--cream); }
body { min-width: 320px; margin: 0; color: var(--ink); background: var(--cream); font-family: "Manrope", sans-serif; font-size: var(--text-base); line-height: var(--leading-body); text-rendering: optimizeLegibility; }
body, button, input, select, textarea { font-family: "Manrope", sans-serif; }
img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
button, input, select, textarea { font: inherit; color: inherit; }
button, a, summary, select { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
a { color: inherit; text-decoration-thickness: .08em; text-underline-offset: .18em; }
a:hover { color: var(--oxblood); }
::selection { color: var(--paper); background: var(--oxblood); }
:focus { outline: none; }
:focus-visible { outline: 3px solid var(--gold); outline-offset: 4px; }


h1, h2, h3, h4, p, figure, blockquote, ul, ol { margin-top: 0; }
h1, h2, h3, h4 { margin-bottom: var(--space-4); font-family: "DM Serif Display", Georgia, serif; font-weight: 400; line-height: var(--leading-tight); letter-spacing: var(--tracking-tight); color: var(--oxblood); }
h1 { font-size: var(--text-3xl); max-width: 11ch; }
h2 { font-size: var(--text-2xl); max-width: 18ch; }
h3 { font-size: var(--text-xl); }
h4 { font-size: var(--text-lg); }
p { max-width: 68ch; margin-bottom: var(--space-5); }
strong { font-weight: 700; }
small { font-size: var(--text-sm); }
ul, ol { padding-left: 1.35rem; }
li + li { margin-top: .55rem; }
blockquote { margin-left: 0; padding: var(--space-5) 0 var(--space-5) var(--space-5); border-left: 2px solid var(--gold); font-family: "DM Serif Display", Georgia, serif; font-size: var(--text-xl); line-height: 1.25; color: var(--oxblood); }
hr { height: 1px; margin: var(--space-7) 0; border: 0; background: var(--line); }
pre, code, kbd, .mono { font-family: "IBM Plex Mono", monospace; }
code { padding: .12em .3em; background: var(--paper); border: 1px solid var(--line); font-size: .9em; }


.skip-link { position: fixed; z-index: 100; top: .75rem; left: .75rem; padding: .75rem 1rem; color: var(--paper); background: var(--oxblood); transform: translateY(-150%); transition: transform var(--duration-fast) var(--ease-out); }
.skip-link:focus { transform: translateY(0); }
.shell { width: min(100% - (var(--gutter) * 2), var(--shell)); margin-inline: auto; }
.section { padding-block: var(--rhythm); }
.section--tight { padding-block: clamp(3.2rem, 7vw, 6rem); }
.section--paper { background: var(--paper); }
.section--dark { color: var(--cream); background: var(--oxblood); }
.section--dark h1, .section--dark h2, .section--dark h3, .section--dark h4 { color: var(--cream); }
.section--ink { color: var(--cream); background: var(--ink); }
.section--ink h1, .section--ink h2, .section--ink h3, .section--ink h4 { color: var(--cream); }
.stack > * + * { margin-top: var(--space-5); }
.cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3) var(--space-5); }
.grid { display: grid; gap: var(--space-7); min-width: 0; }
.grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); min-width: 0; }
.prose { max-width: 74ch; }
.prose > * + * { margin-top: var(--space-4); }

.prose h2 { margin-top: var(--space-8); }
.prose h3 { margin-top: var(--space-6); }
.prose a { color: var(--oxblood); font-weight: 600; }
.label, .eyebrow, .meta { font-family: "IBM Plex Mono", monospace; font-size: var(--text-xs); font-weight: 500; line-height: 1.4; letter-spacing: var(--tracking-wide); text-transform: uppercase; }
.eyebrow { color: var(--gold); }
.meta { color: var(--muted); }
.rule { border-top: 1px solid var(--line); }
.icon { width: 1.15em; height: 1.15em; flex: 0 0 auto; fill: currentColor; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }
.no-js-only { display: none; }
.no-js .no-js-only { display: block; }
.js-only { display: none; }

.js .js-only { display: block; }


@media (max-width: 760px) {
  .grid--2, .grid--3, .split { grid-template-columns: 1fr; }
  .section { padding-block: clamp(4.5rem, 16vw, 6.5rem); }
  h1 { max-width: 14ch; }
}
@media (max-width: 420px) {
  :root { --gutter: 1rem; }
  blockquote { padding-left: 1rem; }
}


@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .001ms !important; }
}


@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
  ::view-transition-old(root), ::view-transition-new(root) { animation-duration: var(--duration); animation-timing-function: var(--ease-in-out); }
  ::view-transition-old(site-header), ::view-transition-new(site-header), ::view-transition-old(site-logo), ::view-transition-new(site-logo), ::view-transition-old(service-image), ::view-transition-new(service-image) { animation-duration: 360ms; animation-timing-function: var(--ease-snap); }
}


.table-wrap { max-width: 100%; overflow-x: auto; }
.table-wrap table { min-width: 38rem; }
address { font-style: normal; }
fieldset { min-width: 0; padding: 0; border: 0; }
legend { padding: 0; }
