/* ==========================================================================
   Keys & Curb Co.
   Bottle green and warm bone, with brass as the accent. The monochrome logo
   takes the colour of whatever ground it sits on, so it never fights the palette.
   Didone is confined to the lockup — everything you read is set in a sans.
   ========================================================================== */

:root {
  --paper:      #F4F1E8;
  --paper-2:    #EAE6D9;
  --surface:    #FCFAF4;
  --ink:        #0C2A20;
  --ink-2:      #123626;
  --ink-soft:   #4A6355;
  --ink-faint:  #7E9184;
  --on-ink:     #F4F1E8;
  --on-ink-s:   #9DB4A5;
  --rule:       #D6D0BF;
  --rule-soft:  #E6E1D3;
  --rule-dark:  #224635;

  --brass:       #9C6C22;
  --brass-bright:#C68F3E;
  --brass-glow:  #E0B061;

  --shadow-sm: 0 1px 2px rgba(12,42,32,.05);
  --shadow:    0 2px 4px rgba(12,42,32,.04), 0 16px 44px rgba(12,42,32,.08);

  --wide:   78rem;
  --mid:    58rem;
  --narrow: 42rem;

  --ease: cubic-bezier(.2,.7,.2,1);

  /* the mark, inlined so it works from file:// and caches with the stylesheet */
  --kc-logo: url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201342.000000%20592.000000'><g%20fill='black'%20transform='translate(0.000000,592.000000)%20scale(0.200000,-0.200000)'><path%20d=%22M4210%202943%20c-4%20-1%20-24%20-5%20-45%20-8%20-107%20-17%20-222%20-83%20-285%20-161%20-98%20-123%20-112%20-293%20-34%20-422%2043%20-73%2098%20-119%20332%20-277%20225%20-153%20273%20-194%20301%20-254%2053%20-116%20-5%20-257%20-133%20-322%20-206%20-106%20-512%2021%20-547%20228%20-26%20147%20146%20216%20255%20102%2025%20-27%2046%20-71%2046%20-97%200%20-9%203%20-12%2010%20-12%209%200%2010%203%2010%2062%200%2082%20-2%2090%20-24%20100%20-94%2046%20-205%2045%20-292%20-1%20-110%20-57%20-141%20-188%20-71%20-304%209%20-15%2016%20-29%2016%20-30%20-1%20-1%20-20%20-11%20-43%20-22%20-51%20-26%20-102%20-74%20-123%20-117%20-22%20-44%20-23%20-130%20-2%20-173%2060%20-123%20215%20-149%20342%20-58%20l10%208%20-1%20-349%20c-1%20-337%20-2%20-350%20-12%20-398%20-48%20-218%20-228%20-378%20-440%20-391%20-150%20-10%20-250%2084%20-294%20276%20-21%2089%20-21%20111%20-20%20608%201%20474%202%20478%2012%20492%2017%2022%2033%2032%2061%2035%2025%203%2026%204%2026%2018%200%2012%20-2%2014%20-15%2014%20-23%200%20-53%2017%20-66%2039%20l-11%2019%20-2%20258%20-1%20259%2038%2074%20c49%2092%20242%20453%20261%20485%208%2013%2033%2059%2056%20103%2059%20110%2086%20137%20154%20153%2013%203%2021%208%2020%2012%20-3%209%20-214%2011%20-214%201%200%20-4%2010%20-9%2023%20-13%2025%20-7%2047%20-29%2047%20-48%200%20-7%20-13%20-35%20-29%20-64%20-42%20-71%20-158%20-285%20-266%20-487%20-78%20-147%20-100%20-182%20-100%20-161%200%203%20-105%20224%20-167%20353%20-162%20332%20-170%20348%20-165%20367%203%2018%2022%2034%2045%2038%2010%202%2017%206%2017%2010%200%206%20-37%207%20-230%207%20-222%200%20-230%200%20-230%20-9%200%20-8%205%20-11%2024%20-13%2031%20-5%2060%20-19%2080%20-39%2016%20-17%2034%20-52%20268%20-516%20l133%20-264%20-1%20-251%20c-1%20-232%20-2%20-252%20-11%20-269%20-11%20-23%20-33%20-37%20-67%20-44%20-35%20-8%20-38%20-27%20-5%20-31%2023%20-4%2040%20-15%2056%20-36%2010%20-14%2011%20-19%2013%20-502%20l3%20-488%2013%20-50%20c50%20-184%20178%20-304%20371%20-349%2071%20-17%20203%20-16%20269%202%20161%2044%20297%20173%20352%20336%2026%2077%2027%2087%2027%20474%20l0%20360%2023%2029%2023%2030%2018%20-15%20c10%20-9%2033%20-28%2051%20-43%2054%20-45%20128%20-77%20163%20-71%20l12%203%200%20-510%20c0%20-458%20-1%20-511%20-8%20-529%20-10%20-24%20-31%20-37%20-69%20-43%20-18%20-2%20-23%20-5%20-22%20-11%203%20-14%20454%20-15%20454%20-2%200%208%20-5%2011%20-22%2013%20-30%205%20-53%2018%20-64%2038%20-9%2017%20-9%2048%20-9%20686%20l0%20668%2067%204%20c106%205%20241%200%20270%20-11%2093%20-33%20152%20-195%20141%20-387%20-10%20-184%20-84%20-287%20-211%20-294%20-45%20-2%20-47%20-3%20-47%20-14%200%20-10%203%20-11%2034%20-13%2061%20-4%20104%20-36%20131%20-97%2026%20-56%2031%20-95%2035%20-269%204%20-180%206%20-190%2040%20-242%2047%20-70%20132%20-106%20238%20-100%2073%205%20169%2044%20151%2062%20-6%206%20-10%206%20-29%20-3%20-43%20-19%20-94%20-9%20-111%2021%20-5%209%20-7%2055%20-10%20184%20-3%20189%20-4%20201%20-36%20268%20-43%2090%20-137%20159%20-255%20185%20-14%203%20-10%204%2027%2014%20225%2060%20345%20241%20292%20444%20-26%20101%20-117%20195%20-232%20240%20-74%2029%20-96%2032%20-349%2032%20-127%200%20-231%201%20-231%202%200%202%208%206%2019%2010%2049%2017%20143%2084%20177%20126%20122%20151%20110%20337%20-31%20473%20-32%2031%20-113%2091%20-252%20186%20-298%20204%20-348%20258%20-348%20378%200%20194%20186%20318%20384%20254%20146%20-46%20241%20-161%20274%20-331%202%20-8%206%20-11%2015%20-11%20l12%200%200%20178%200%20177%20-12%200%20c-9%200%20-13%20-3%20-13%20-8%200%20-18%20-17%20-43%20-35%20-52%20-34%20-17%20-62%20-11%20-124%2024%20-41%2024%20-90%2044%20-132%2053%20-30%207%20-129%2014%20-144%2011z%20m-429%20-1437%20c81%20-93%20132%20-150%20165%20-184%20l40%20-41%20-31%20-33%20c-90%20-96%20-229%20-79%20-282%2036%20-15%2034%20-15%20113%200%20147%2012%2026%2041%2059%2069%2080%2024%2017%2020%2018%2039%20-5z%20m201%20-44%20c39%20-16%20126%20-33%20185%20-36%20l59%20-3%2010%20-15%20c11%20-20%2014%20-203%203%20-203%20-15%200%20-97%2072%20-185%20161%20-104%20105%20-109%20112%20-72%2096z%22/>%20<path%20d=%22M1389%202886%20c-116%20-1%20-139%20-2%20-139%20-8%200%20-5%208%20-9%2023%20-11%2028%20-4%2049%20-21%2059%20-48%2013%20-34%2010%20-1284%20-3%20-1307%20-11%20-20%20-29%20-32%20-56%20-36%20-13%20-3%20-21%20-7%20-22%20-12%20-2%20-8%2020%20-9%20345%20-9%20l347%200%20-53%20-25%20c-342%20-163%20-514%20-528%20-422%20-895%2075%20-303%20369%20-515%20712%20-515%20196%200%20350%2063%20496%20204%2042%2040%2044%2043%2036%2052%20-8%208%20-11%206%20-58%20-39%20-190%20-180%20-456%20-241%20-634%20-146%20-242%20128%20-363%20524%20-270%20884%2059%20226%20202%20426%20341%20475%20172%2060%20399%20-9%20519%20-159%2029%20-35%2080%20-129%2080%20-147%200%20-7%2022%20-16%2027%20-10%202%201%203%2077%203%20167%20l0%20164%20-14%200%20c-12%200%20-15%20-3%20-18%20-14%20-6%20-34%20-50%20-66%20-90%20-66%20-19%200%20-35%206%20-85%2032%20-75%2040%20-105%2052%20-150%2063%20l-35%208%20-2%20174%20-1%20173%20-13%200%20c-10%200%20-12%20-2%20-12%20-13%200%20-22%20-25%20-88%20-52%20-137%20-35%20-65%20-103%20-134%20-160%20-164%20-85%20-43%20-85%20-43%20-309%20-45%20l-199%20-2%200%20696%200%20695%2012%203%20c30%207%20420%20-1%20451%20-10%20132%20-38%20222%20-135%20252%20-270%207%20-34%2010%20-40%2018%20-40%209%200%2010%206%2011%20171%20l1%20171%20-399%20-1%20c-219%20-1%20-461%20-2%20-537%20-3z%22/>%20<path%20d=%22M940%202878%20c0%20-4%208%20-8%2018%20-10%2022%20-3%2042%20-20%2042%20-36%200%20-15%20-16%20-37%20-85%20-119%20-152%20-183%20-495%20-610%20-495%20-618%200%20-3%2061%20-100%20161%20-257%20197%20-310%20189%20-297%20189%20-323%200%20-20%20-15%20-34%20-42%20-40%20-14%20-4%20-23%20-9%20-23%20-13%200%20-6%2038%20-7%20230%20-7%20216%200%20231%201%20229%209%20-1%206%20-9%209%20-29%2012%20-43%206%20-77%2034%20-108%2087%20-8%2014%20-38%2062%20-66%20107%20-29%2045%20-68%20108%20-86%20138%20-19%2031%20-55%2089%20-81%20130%20-26%2041%20-66%20104%20-88%20140%20-22%2035%20-58%2094%20-80%20129%20-23%2036%20-41%2066%20-41%2068%200%201%2013%2018%2029%2038%20319%20395%20393%20484%20417%20505%2022%2018%2069%2040%20102%2048%2016%203%2027%208%2027%2012%200%206%20-21%207%20-110%207%20-90%200%20-110%20-1%20-110%20-7z%22/>%20<path%20d=%22M15%202873%20c0%20-5%208%20-9%2023%20-11%2027%20-4%2052%20-20%2062%20-40%2012%20-24%2010%20-1288%20-2%20-1311%20-11%20-20%20-24%20-29%20-57%20-36%20-16%20-4%20-26%20-8%20-26%20-13%200%20-6%2033%20-7%20220%20-7%20191%200%20220%201%20220%207%200%204%20-6%209%20-14%2011%20-37%207%20-54%2015%20-65%2031%20l-11%2017%200%20331%20c0%20182%20-1%20471%20-1%20643%20-1%20293%20-1%20314%207%20329%2012%2020%2033%2034%2062%2038%2014%202%2022%206%2022%2011%200%206%20-32%207%20-220%207%20-188%200%20-220%20-1%20-220%20-7z%22/>%20<path%20d=%22M1941%202382%20c-15%20-111%20-103%20-197%20-210%20-205%20-34%20-3%20-41%20-5%20-41%20-12%200%20-7%207%20-9%2045%20-11%20102%20-6%20181%20-75%20203%20-178%204%20-19%207%20-35%207%20-37%200%20-2%205%20-4%2010%20-4%2010%200%2010%203%2010%20243%200%20232%200%20242%20-9%20242%20-8%200%20-10%20-6%20-15%20-38z%22/>%20<path%20d=%22M5895%202357%20c-56%20-9%20-76%20-15%20-102%20-28%20-243%20-120%20-222%20-476%2032%20-551%2035%20-10%20115%20-11%20148%20-1%2027%208%2087%2045%2087%2053%200%203%20-12%20-4%20-26%20-15%20-50%20-37%20-125%20-48%20-178%20-25%20-145%2063%20-173%20378%20-44%20507%2086%2086%20230%2062%20285%20-48%20l13%20-26%200%2062%200%2063%20-11%20-14%20c-13%20-18%20-32%20-18%20-66%20-2%20-41%2018%20-106%2030%20-138%2025z%22/>%20<path%20d=%22M6166%202168%20c-50%20-16%20-97%20-56%20-120%20-103%20-22%20-45%20-20%20-135%203%20-179%2040%20-72%2094%20-103%20181%20-103%2071%200%20106%2013%20149%2057%2099%20101%2069%20271%20-57%20320%20-36%2015%20-122%2019%20-156%208z%20m98%20-13%20c80%20-40%20134%20-201%2097%20-286%20-59%20-135%20-219%20-88%20-258%2076%20-35%20149%2054%20265%20161%20210z%22/>%20<path%20d=%22M6473%201855%20c-35%20-28%201%20-83%2041%20-63%2035%2018%2023%2073%20-16%2073%20-7%200%20-18%20-5%20-25%20-10z%22/>%20<path%20d=%22M5541%201476%20c-62%20-1%20-66%20-2%20-66%20-11%200%20-8%203%20-10%2021%20-10%2028%200%2054%20-13%2066%20-35%2016%20-26%2016%20-1291%201%20-1321%20-12%20-24%20-27%20-33%20-64%20-40%20-22%20-4%20-29%20-8%20-28%20-14%202%20-9%20735%20-14%20832%20-5%20236%2022%20392%20170%20392%20373%200%20186%20-155%20330%20-378%20350%20l-38%204%2042%2013%20c100%2033%20184%2091%20239%20164%20157%20212%2042%20477%20-230%20528%20-39%208%20-537%2010%20-789%204z%20m700%20-32%20c76%20-38%20118%20-136%20123%20-285%206%20-195%20-45%20-320%20-152%20-370%20l-34%20-16%20-107%20-2%20-106%20-2%200%20-12%200%20-12%20129%200%20c147%200%20172%20-4%20217%20-37%20146%20-108%20162%20-446%2028%20-586%20-58%20-61%20-88%20-67%20-334%20-65%20l-167%201%20-2%20695%20c0%20382%200%20697%201%20701%202%205%2040%206%20189%205%20l187%20-1%2028%20-14z%22/></g></svg>");
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --paper:      #081712;
    --paper-2:    #0E241B;
    --surface:    #0C1F18;
    --ink:        #EDEADF;
    --ink-2:      #DCD8CA;
    --ink-soft:   #A2B8AA;
    --ink-faint:  #74897C;
    --on-ink:     #081712;
    --on-ink-s:   #466554;
    --rule:       #1E3A2C;
    --rule-soft:  #162C21;
    --rule-dark:  #D6D0BF;

    --brass:       #D9A257;
    --brass-bright:#E8B96F;
    --brass-glow:  #F2CE8E;

    --shadow-sm: 0 1px 2px rgba(0,0,0,.4);
    --shadow:    0 2px 4px rgba(0,0,0,.3), 0 16px 44px rgba(0,0,0,.45);
  }
}

:root[data-theme="dark"] {
  --paper:      #081712;
  --paper-2:    #0E241B;
  --surface:    #0C1F18;
  --ink:        #EDEADF;
  --ink-2:      #DCD8CA;
  --ink-soft:   #A2B8AA;
  --ink-faint:  #74897C;
  --on-ink:     #081712;
  --on-ink-s:   #466554;
  --rule:       #1E3A2C;
  --rule-soft:  #162C21;
  --rule-dark:  #D6D0BF;

  --brass:       #D9A257;
  --brass-bright:#E8B96F;
  --brass-glow:  #F2CE8E;

  --shadow-sm: 0 1px 2px rgba(0,0,0,.4);
  --shadow:    0 2px 4px rgba(0,0,0,.3), 0 16px 44px rgba(0,0,0,.45);
}

/* ---------- reset ---------- */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Instrument Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 17.5px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img, svg { max-width: 100%; height: auto; display: block; }

/* ---------- type ---------- */

h1, h2, h3 {
  font-family: "Bricolage Grotesque", "Instrument Sans", sans-serif;
  font-weight: 700;
  letter-spacing: -.028em;
  line-height: 1.05;
  text-wrap: balance;
  margin: 0;
}

h1 { font-size: clamp(2.7rem, 7vw, 5.4rem); font-weight: 800; letter-spacing: -.035em; }
h2 { font-size: clamp(1.95rem, 4.6vw, 3.4rem); font-weight: 700; }
h3 { font-size: clamp(1.25rem, 2.2vw, 1.6rem); font-weight: 700; letter-spacing: -.015em; line-height: 1.14; }

h4 {
  font-family: "Instrument Sans", sans-serif;
  font-size: .68rem; font-weight: 600;
  letter-spacing: .22em; text-transform: uppercase;
  margin: 0;
}

p { margin: 0 0 1.15rem; }
p:last-child { margin-bottom: 0; }

.lede {
  font-size: clamp(1.08rem, 1.7vw, 1.28rem);
  line-height: 1.55;
  color: var(--ink-soft);
  text-wrap: pretty;
}

a { color: inherit; text-underline-offset: 3px; text-decoration-thickness: 1px; }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

.label {
  font-family: "Instrument Sans", sans-serif;
  font-size: .66rem;
  font-weight: 600;
  letter-spacing: .26em;
  text-transform: uppercase;
}

.serif { font-family: "Bodoni Moda", Didot, serif; }  /* lockup only */
.italic { font-style: italic; }

/* ---------- the lockup ---------- */
/* The real mark, traced to vector. Painted as a CSS mask rather than an <img>
   so it inherits the surrounding text colour — one file serves the bone header
   and the green footer, and both themes, with no second export.
   Set font-size on .kc; the mark is sized in em and follows. */

.kc {
  display: inline-block;
  line-height: 0;
  text-decoration: none;
  color: inherit;
  font-size: 1rem;              /* override per use */
}

.kc-mark {
  display: block;
  height: 2.05em;
  aspect-ratio: 1342 / 592;
  background-color: currentColor;
  -webkit-mask: var(--kc-logo) no-repeat center / contain;
          mask: var(--kc-logo) no-repeat center / contain;
}

/* Very old browsers with no mask support get the wordmark as text
   rather than a solid rectangle. */
@supports not ((-webkit-mask-image: url("#")) or (mask-image: url("#"))) {
  .kc-mark {
    background: none;
    height: auto;
    aspect-ratio: auto;
    font-family: Didot, "Bodoni MT", "Times New Roman", serif;
    font-weight: 700;
    font-size: .95em;
    line-height: 1.1;
    letter-spacing: -.02em;
  }
  .kc-mark::before { content: "KEYS & CURB Co."; }
}

/* ---------- kerb stripe ---------- */

.kerb {
  height: 7px; width: 100%;
  background: repeating-linear-gradient(90deg, var(--brass) 0 32px, transparent 32px 64px);
  opacity: .55;
}

/* ---------- layout ---------- */

.wrap    { width: 100%; max-width: var(--wide);   margin-inline: auto; padding-inline: 1.6rem; }
.wrap-mid{ width: 100%; max-width: var(--mid);    margin-inline: auto; padding-inline: 1.6rem; }
.wrap-nr { width: 100%; max-width: var(--narrow); margin-inline: auto; padding-inline: 1.6rem; }

section { padding-block: clamp(4rem, 9vw, 7.5rem); position: relative; }
section.tight { padding-block: clamp(2.5rem, 5vw, 4rem); }

.mx-auto { margin-inline: auto; }
.center { text-align: center; }

/* ---------- header ---------- */

.site-header {
  position: sticky; top: 0; z-index: 60;
  background: color-mix(in srgb, var(--paper) 84%, transparent);
  backdrop-filter: blur(14px) saturate(1.3);
  border-bottom: 1px solid var(--rule-soft);
}
.header-inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1.5rem; min-height: 4.6rem;
}
.header-inner .kc { font-size: 1rem; }

.nav { display: flex; align-items: center; gap: 1.8rem; }
.nav > a:not(.btn) {
  font-size: .82rem; font-weight: 500;
  letter-spacing: .08em; text-transform: uppercase;
  text-decoration: none; color: var(--ink-soft);
  position: relative; padding-block: .25rem;
}
.nav > a:not(.btn)::after {
  content: ""; position: absolute; left: 0; bottom: 0;
  height: 1px; width: 0; background: var(--ink);
  transition: width .3s var(--ease);
}
.nav > a:not(.btn):hover { color: var(--ink); }
.nav > a:not(.btn):hover::after { width: 100%; }
@media (prefers-reduced-motion: reduce) { .nav > a::after { transition: none; } }

@media (max-width: 58rem) { .nav .nav-hide-sm { display: none; } }
@media (max-width: 36rem) { .nav { gap: 1.1rem; } .nav .nav-hide-xs { display: none; } }

/* ---------- buttons ---------- */

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .6rem;
  padding: .85rem 1.5rem;
  font-family: "Instrument Sans", sans-serif;
  font-size: .74rem; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase;
  text-decoration: none; border: 1px solid transparent;
  cursor: pointer; white-space: nowrap;
  transition: background .22s, color .22s, border-color .22s, transform .16s var(--ease);
}
@media (prefers-reduced-motion: reduce) { .btn { transition: none; } }
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }

.btn-solid { background: var(--ink); color: var(--on-ink); }
.btn-solid:hover { background: var(--ink-2); }

.btn-line { border-color: var(--ink); color: var(--ink); }
.btn-line:hover { background: var(--ink); color: var(--on-ink); }

.btn-invert { background: var(--on-ink); color: var(--ink); }
.btn-invert:hover { background: var(--paper-2); }

.btn-brass { background: var(--brass-bright); color: #17120A; }
.btn-brass:hover { background: var(--brass-glow); box-shadow: 0 8px 28px color-mix(in srgb, var(--brass) 40%, transparent); }

.btn-line-invert { border-color: color-mix(in srgb, var(--on-ink) 45%, transparent); color: var(--on-ink); }
.btn-line-invert:hover { background: var(--on-ink); color: var(--ink); border-color: var(--on-ink); }

/* ---------- hero ---------- */

.hero { padding-block: clamp(4rem, 11vw, 9rem) clamp(3rem, 7vw, 5.5rem); position: relative; overflow: hidden; isolation: isolate; }

.hero h1 { max-width: 19ch; }
.hero .lede { max-width: 46ch; margin-top: 2rem; }
.hero-actions { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 2.6rem; }

.hero-rule {
  margin-top: 4rem; padding-top: 2.2rem;
  border-top: 1px solid var(--rule);
  display: flex; flex-wrap: wrap; gap: 3rem;
}
.hero-rule > div { min-width: 8.5rem; }
.hero-rule .label { color: var(--ink-faint); display: block; margin-bottom: .55rem; }
.hero-rule strong {
  font-family: "Bricolage Grotesque", sans-serif;
  font-size: 1.2rem; font-weight: 700; letter-spacing: -.02em;
  color: var(--ink);
}

/* oversized outlined watermark */
.watermark {
  position: absolute; right: -1.5vw; bottom: -6vw;
  font-family: "Bricolage Grotesque", sans-serif;
  font-weight: 800; font-size: 30vw; line-height: .72;
  letter-spacing: -.05em;
  color: transparent;
  -webkit-text-stroke: 1.5px color-mix(in srgb, var(--brass) 38%, transparent);
  opacity: .85;
  z-index: -1; pointer-events: none; user-select: none;
}

/* ---------- rule band (the "creative thinking / measurable results" strip) ---------- */

.strip {
  background: var(--ink); color: var(--on-ink);
  padding-block: 1.15rem;
  text-align: center;
}
.strip .label { letter-spacing: .3em; font-size: .68rem; }
.strip .label b { font-weight: 700; }

/* ---------- section heading ---------- */

.sec-head { margin-bottom: 3.2rem; max-width: 46rem; }
.sec-head .label { color: var(--brass); display: block; margin-bottom: 1.3rem; }
.sec-head h2 + p { margin-top: 1.4rem; }


/* ---------- marquee ---------- */

.marquee {
  background: var(--brass-bright);
  color: #17120A;
  overflow: hidden;
  padding-block: .8rem;
  border-block: 1px solid color-mix(in srgb, #17120A 18%, transparent);
}
.marquee-track { display: flex; width: max-content; animation: slide 42s linear infinite; }
.marquee span {
  font-family: "Bricolage Grotesque", sans-serif;
  font-weight: 700; font-size: .92rem;
  letter-spacing: -.005em; text-transform: uppercase;
  padding-inline: 1.5rem; white-space: nowrap;
  display: inline-flex; align-items: center; gap: 1.5rem;
}
.marquee span::after { content: "◆"; font-size: .48rem; opacity: .55; }
@keyframes slide { from { transform: translateX(0); } to { transform: translateX(-50%); } }
/* The strip is a deliberate exception to prefers-reduced-motion: it scrolls for
   everyone, including visitors whose device asks for reduced motion. That is a
   considered choice, not an oversight — every OTHER animation on the site still
   honours the setting (scroll behaviour, reveals, hero rise, hover transitions).
   Because this one opts out, it must offer a way to stop it: it pauses on hover,
   on keyboard focus, and while touched. WCAG 2.2.2 asks for exactly that from
   anything that moves for more than five seconds.
   If you ever want it to honour the setting again, wrap the animation line in
   @media (prefers-reduced-motion: no-preference). */
.marquee:hover .marquee-track,
.marquee:focus-within .marquee-track,
.marquee:active .marquee-track { animation-play-state: paused; }

/* ---------- cards ---------- */

.grid { display: grid; gap: 1.15rem; }
.grid-2 { grid-template-columns: repeat(auto-fit, minmax(19.5rem, 1fr)); }
.grid-3 { grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); }

.card {
  background: var(--surface);
  border: 1px solid var(--rule);
  border-radius: 5px;
  padding: 1.8rem 1.6rem 1.5rem;
  display: flex; flex-direction: column; gap: .7rem;
  text-decoration: none; color: inherit;
  position: relative; overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: border-color .25s var(--ease), transform .25s var(--ease), box-shadow .25s var(--ease);
}
.card::before {
  content: ""; position: absolute; left: 0; top: 0;
  width: 3px; height: 0; background: var(--brass-bright);
  transition: height .32s var(--ease);
}
a.card:hover {
  border-color: color-mix(in srgb, var(--brass) 55%, var(--rule));
  transform: translateY(-3px); box-shadow: var(--shadow);
}
a.card:hover::before { height: 100%; }
@media (prefers-reduced-motion: reduce) {
  .card, .card::before { transition: none; }
  a.card:hover { transform: none; }
}
.card .label { color: var(--brass); }
.card h3 { margin-bottom: .1rem; }
.card p { color: var(--ink-soft); font-size: .95rem; margin: 0; }
.card .more {
  margin-top: auto; padding-top: 1rem;
  font-size: .82rem; font-weight: 600;
  letter-spacing: .1em; text-transform: uppercase;
  color: var(--brass); text-decoration: none;
}

/* ---------- audit panel ---------- */
/* Deliberately not a card: inverted, full width, its own button.
   It sits below the service grid and must not read as a seventh service. */

.audit {
  margin-top: 1.15rem;
  background: var(--ink);
  color: var(--on-ink);
  border-radius: 5px;
  padding: 2.2rem 2.2rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2.5rem;
  flex-wrap: wrap;
  position: relative;
  overflow: hidden;
}
/* brass kerb stripe along the top edge, tying it to the section rules */
.audit::before {
  content: "";
  position: absolute; inset-inline: 0; top: 0; height: 5px;
  background: repeating-linear-gradient(90deg, var(--brass-bright) 0 26px, transparent 26px 52px);
  opacity: .8;
}
.audit-copy { flex: 1 1 26rem; }
.audit .label { color: var(--brass-glow); display: block; margin-bottom: .8rem; }
.audit h3 {
  color: var(--on-ink);
  font-size: clamp(1.4rem, 2.6vw, 1.95rem);
  margin-bottom: .7rem;
}
.audit p { color: var(--on-ink-s); font-size: .97rem; margin: 0; max-width: 52ch; }
.audit-action { flex: 0 0 auto; }

@media (max-width: 40rem) {
  .audit { padding: 1.8rem 1.5rem; gap: 1.6rem; }
  .audit-action .btn { width: 100%; }
}

/* ---------- case cards ---------- */

.cases { display: grid; gap: 1.15rem; grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); }
.case {
  background: var(--surface);
  border: 1px solid var(--rule);
  border-radius: 5px;
  padding: 1.9rem 1.6rem;
  display: flex; flex-direction: column; gap: .65rem;
  box-shadow: var(--shadow-sm);
}
.case .stat {
  font-family: "Bricolage Grotesque", sans-serif;
  font-size: clamp(2.4rem, 5.5vw, 3.4rem);
  font-weight: 800; letter-spacing: -.045em; line-height: .9;
  color: var(--brass); font-variant-numeric: tabular-nums;
  margin-bottom: .3rem;
}
.case .what { font-weight: 600; font-size: 1rem; }
.case p { color: var(--ink-soft); font-size: .93rem; margin: 0; }

/* ---------- service list (editorial rows, kept for inner pages) ---------- */


.svc-list { border-top: 1px solid var(--rule); }
.svc {
  display: grid;
  grid-template-columns: 4.5rem 1fr auto;
  gap: 2rem;
  align-items: baseline;
  padding: 2.1rem 0;
  border-bottom: 1px solid var(--rule);
  text-decoration: none;
  color: inherit;
  position: relative;
  transition: padding-left .3s var(--ease);
}
.svc::before {
  content: ""; position: absolute; inset: 0 -1.5rem;
  background: var(--paper-2); opacity: 0; z-index: -1;
  transition: opacity .3s var(--ease);
}
.svc:hover { padding-left: .8rem; }
.svc:hover::before { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  .svc, .svc::before { transition: none; }
  .svc:hover { padding-left: 0; }
}
.svc-num {
  font-family: "Instrument Sans", sans-serif;
  font-size: .68rem; font-weight: 600; letter-spacing: .2em;
  color: var(--brass); font-variant-numeric: tabular-nums;
}
.svc-body h3 { margin-bottom: .55rem; }
.svc-body p { color: var(--ink-soft); font-size: .96rem; margin: 0; max-width: 54ch; }
.svc-go {
  font-size: .72rem; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase;
  color: var(--ink-faint); white-space: nowrap;
}
.svc:hover .svc-go { color: var(--brass); }

@media (max-width: 44rem) {
  .svc { grid-template-columns: 3rem 1fr; gap: 1.2rem; }
  .svc-go { grid-column: 2; margin-top: .6rem; }
}

/* ---------- stats ---------- */

.stats { display: grid; gap: 0; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); border-top: 1px solid var(--rule); }
.stat-cell { padding: 2.4rem 2rem 2.4rem 0; border-bottom: 1px solid var(--rule); }
.stat-cell .n {
  color: var(--brass);
  font-family: "Bricolage Grotesque", sans-serif;
  font-size: clamp(2.8rem, 6vw, 4.2rem);
  font-weight: 800; letter-spacing: -.04em; line-height: .9;
  display: block; margin-bottom: .9rem;
  font-variant-numeric: tabular-nums;
}
.stat-cell .what {
  font-size: .72rem; font-weight: 600; letter-spacing: .18em;
  text-transform: uppercase; color: var(--ink-faint);
  display: block; margin-bottom: .8rem;
}
.stat-cell p { color: var(--ink-soft); font-size: .94rem; margin: 0; max-width: 34ch; }

/* placeholder marker — deliberately visible */
.fill {
  background: repeating-linear-gradient(-45deg, var(--rule) 0 2px, transparent 2px 6px);
  outline: 1px dashed var(--ink-faint);
  outline-offset: 2px;
  padding: 0 .25em;
  color: var(--ink);
}

/* ---------- steps ---------- */

.steps { counter-reset: step; }
.step {
  counter-increment: step;
  display: grid; grid-template-columns: 4.5rem 1fr; gap: 2rem;
  padding: 2rem 0; border-top: 1px solid var(--rule);
}
.step:last-child { border-bottom: 1px solid var(--rule); }
.step::before {
  content: counter(step, decimal-leading-zero);
  font-family: "Bricolage Grotesque", sans-serif;
  font-size: 1.6rem; font-weight: 700; letter-spacing: -.03em;
  color: var(--brass); font-variant-numeric: tabular-nums;
}
.step h3 { margin-bottom: .55rem; }
.step p { color: var(--ink-soft); margin: 0; max-width: 54ch; }
@media (max-width: 36rem) { .step { grid-template-columns: 1fr; gap: .5rem; } }

/* ---------- inverted band ---------- */

.band { background: var(--ink); color: var(--on-ink); }
.band h2, .band h3 { color: var(--on-ink); }
.band .lede, .band p { color: var(--on-ink-s); }
.band .label { color: var(--brass-glow); }
.band .step { border-color: var(--rule-dark); }
.band .step:last-child { border-bottom-color: var(--rule-dark); }
.band .step::before { color: var(--brass-glow); }
.band .fill { background: repeating-linear-gradient(-45deg, var(--rule-dark) 0 2px, transparent 2px 6px); outline-color: var(--on-ink-s); color: var(--on-ink); }

/* ---------- prose ---------- */

.prose { max-width: var(--narrow); }
.prose h2 { margin-top: 3.2rem; margin-bottom: 1.1rem; font-size: clamp(1.6rem, 3.2vw, 2.2rem); }
.prose h2:first-child { margin-top: 0; }
.prose h3 { margin-top: 2.2rem; margin-bottom: .65rem; }
.prose ul, .prose ol { margin: 0 0 1.15rem; padding-left: 1.35rem; color: var(--ink-soft); }
.prose li { margin-bottom: .55rem; }
.prose p { color: var(--ink-soft); }
.prose strong { color: var(--ink); font-weight: 600; }

/* ---------- ticks ---------- */

.ticks { list-style: none; padding: 0; margin: 0 0 1.2rem; }
.ticks li {
  display: grid; grid-template-columns: 1.1rem 1fr; gap: 1rem;
  align-items: start; color: var(--ink-soft); font-size: .97rem;
  padding: .75rem 0; border-bottom: 1px solid var(--rule-soft);
}
.ticks li:first-child { border-top: 1px solid var(--rule-soft); }
.ticks li::before {
  content: "—"; color: var(--brass); font-size: .85rem; line-height: 1.7;
}
.ticks strong { color: var(--ink); font-weight: 600; }
.band .ticks li { border-color: var(--rule-dark); color: var(--on-ink-s); }
.band .ticks li:first-child { border-top-color: var(--rule-dark); }
.band .ticks strong { color: var(--on-ink); }
.band .ticks li::before { color: var(--brass-glow); }

/* ---------- note ---------- */

.note-box {
  border: 1px solid var(--rule);
  border-left: 3px solid var(--brass);
  background: var(--surface);
  padding: 1.2rem 1.4rem;
  font-size: .93rem; color: var(--ink-soft);
}
.note-box strong { color: var(--ink); }

/* ---------- form ---------- */

.form { display: flex; flex-direction: column; gap: 1.2rem; max-width: 34rem; }
.field { display: flex; flex-direction: column; gap: .45rem; }
.field label { font-size: .68rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-faint); }
.field input, .field textarea, .field select {
  font-family: inherit; font-size: 1rem; color: var(--ink);
  background: transparent;
  border: 0; border-bottom: 1px solid var(--rule);
  padding: .6rem 0; width: 100%; border-radius: 0;
}
.field textarea { min-height: 7rem; resize: vertical; }
.field input:focus, .field textarea:focus, .field select:focus {
  border-bottom-color: var(--ink); outline: none;
}
.field select { cursor: pointer; }

/* ---------- form status ---------- */

.form-status {
  font-size: .93rem;
  padding: .85rem 1.05rem;
  border-left: 3px solid var(--rule);
  background: var(--surface);
  margin-top: .4rem;
}
.form-status:empty { display: none; }
.form-status.pending { border-left-color: var(--ink-faint); color: var(--ink-soft); }
.form-status.ok      { border-left-color: var(--brass); color: var(--ink); font-weight: 600; }
.form-status.err     { border-left-color: #A0392C; color: #A0392C; }
:root[data-theme="dark"] .form-status.err { color: #E28B7A; border-left-color: #E28B7A; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .form-status.err { color: #E28B7A; border-left-color: #E28B7A; }
}

/* ---------- contact rows ---------- */

.contact-rows { border-top: 1px solid var(--rule); }
.contact-row {
  display: grid; grid-template-columns: 8rem 1fr; gap: 1.2rem;
  padding: 1.1rem 0; border-bottom: 1px solid var(--rule); font-size: .97rem;
}
.contact-row dt {
  font-size: .64rem; font-weight: 600; letter-spacing: .2em;
  text-transform: uppercase; color: var(--ink-faint); padding-top: .35rem;
}
.contact-row dd { margin: 0; }
@media (max-width: 36rem) { .contact-row { grid-template-columns: 1fr; gap: .25rem; } }

/* ---------- chips ---------- */

.chips { display: flex; flex-wrap: wrap; gap: .5rem .55rem; }
.chip {
  font-size: .8rem; letter-spacing: .04em;
  padding: .4rem .85rem;
  border: 1px solid var(--rule); color: var(--ink-soft);
  text-decoration: none; transition: border-color .2s, color .2s;
}
a.chip:hover { border-color: var(--ink); color: var(--ink); }
@media (prefers-reduced-motion: reduce) { .chip { transition: none; } }

/* ---------- footer ---------- */

.site-footer { background: var(--ink); color: var(--on-ink-s); padding-block: 4.5rem 2.5rem; font-size: .92rem; }
.site-footer .kc { font-size: 1.6rem; color: var(--on-ink); }
.footer-grid {
  display: grid; gap: 3rem;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  padding-bottom: 3rem; border-bottom: 1px solid var(--rule-dark);
}
.footer-grid h4 { color: var(--on-ink); margin-bottom: 1.2rem; }
.footer-grid ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .65rem; }
.footer-grid a { text-decoration: none; color: var(--on-ink-s); transition: color .2s; }
.footer-grid a:hover { color: var(--on-ink); }
.footer-bottom {
  padding-top: 1.9rem; display: flex; flex-wrap: wrap; gap: 1rem;
  justify-content: space-between; font-size: .8rem;
  letter-spacing: .06em;
}
.site-footer .fill { background: repeating-linear-gradient(-45deg, var(--rule-dark) 0 2px, transparent 2px 6px); outline-color: var(--on-ink-s); color: var(--on-ink); }

/* ---------- reveal ---------- */

.reveal { opacity: 0; transform: translateY(20px); }
.reveal.in { opacity: 1; transform: none; transition: opacity .8s var(--ease), transform .8s var(--ease); }
@media (prefers-reduced-motion: reduce) { .reveal, .reveal.in { opacity: 1; transform: none; transition: none; } }
.no-js .reveal { opacity: 1; transform: none; }

@media (prefers-reduced-motion: no-preference) {
  .rise { animation: rise .9s var(--ease) both; }
  .rise-1 { animation-delay: .05s; }
  .rise-2 { animation-delay: .17s; }
  .rise-3 { animation-delay: .29s; }
  .rise-4 { animation-delay: .41s; }
  @keyframes rise { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
}

/* ---------- misc ---------- */

.skip {
  position: absolute; left: -9999px; top: 0;
  background: var(--ink); color: var(--on-ink);
  padding: .7rem 1.2rem; z-index: 100; font-weight: 600;
}
.skip:focus { left: 0; }
hr.rule { border: 0; border-top: 1px solid var(--rule); margin: 0; }
