/* Vestry — Unified Site Shared Styles (consulting + product) */

:root {
  /* Ink (consulting baseline) */
  --ink: #14110F;
  --ink-soft: #3A342E;
  --ink-muted: #6B6358;
  --ink-faint: #A39B90;

  /* Warm neutrals */
  --parchment: #F7F3EC;
  --parchment-2: #F1EADD;
  --parchment-3: #EADFC9;
  --bone: #EDE5D5;
  --hair: #D6CDB9;
  --hair-soft: rgba(20,17,15,0.08);

  /* 5-color brand palette */
  --coral:       #E68B71;   /* Product */
  --coral-light: #FBE4DB;
  --coral-deep:  #C56548;
  --sun:         #E8C466;   /* Services */
  --sun-light:   #F8EDC9;
  --sun-deep:    #B08A2E;
  --sage:        #82A78E;   /* Insights */
  --sage-light:  #DCE8DF;
  --sage-deep:   #4F6F5C;
  --brass:       #9A7B3E;   /* About */
  --brass-light: #E9DCC0;
  --brass-deep:  #7A5F2C;
  --moss:        #3D5A4A;
  --clay:        #B5573A;

  /* Current section accent (override per page via data-section) */
  --accent:       var(--ink);
  --accent-light: var(--parchment-2);
  --accent-deep:  var(--ink-soft);

  /* Type */
  --serif: "Fraunces", "Tiempos Headline", Georgia, serif;
  --sans:  "Inter Tight", "Söhne", -apple-system, system-ui, sans-serif;
  --mono:  "JetBrains Mono", "IBM Plex Mono", ui-monospace, monospace;

  --container: 1200px;
  --radius: 2px;
}

/* Section accent assignment (set on <body data-section="…">) */
body[data-section="home"]      { --accent: var(--coral);      --accent-light: var(--coral-light);      --accent-deep: var(--coral-deep); }
body[data-section="services"]  { --accent: var(--sun-deep);   --accent-light: var(--sun-light);   --accent-deep: var(--sun-deep); }
body[data-section="product"]   { --accent: var(--coral-deep); --accent-light: var(--coral-light); --accent-deep: var(--coral-deep); }
body[data-section="insights"]  { --accent: var(--sage-deep);  --accent-light: var(--sage-light);  --accent-deep: var(--sage-deep); }
body[data-section="about"]     { --accent: var(--brass);      --accent-light: var(--brass-light); --accent-deep: var(--brass-deep); }
body[data-section="contact"]   { --accent: var(--ink);        --accent-light: var(--parchment-2); --accent-deep: var(--ink-soft); }

* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  margin: 0;
  background: var(--parchment);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.5;
  text-rendering: optimizeLegibility;
}

a { color: inherit; text-decoration: none; }

/* ------------ 5-color top strip ------------ */
.color-strip {
  position: sticky;
  top: 0;
  z-index: 60;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  height: 6px;
  width: 100%;
}
.color-strip > div { transition: flex-basis 0.3s; }
.color-strip .s-coral  { background: var(--coral); }
.color-strip .s-sun    { background: var(--sun); }
.color-strip .s-sage   { background: var(--sage); }
.color-strip .s-brass  { background: var(--brass); }
.color-strip .s-ink    { background: var(--ink); }
/* The section's color gets a subtle glow */
body[data-section="home"]     .color-strip .s-coral,
body[data-section="product"]  .color-strip .s-coral,
body[data-section="services"] .color-strip .s-sun,
body[data-section="insights"] .color-strip .s-sage,
body[data-section="about"]    .color-strip .s-brass,
body[data-section="contact"]  .color-strip .s-ink {
  box-shadow: inset 0 -2px 0 rgba(20,17,15,0.25);
}

/* ------------ Typography ------------ */
.display {
  font-family: var(--serif);
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 0.98;
  font-variation-settings: "SOFT" 30, "WONK" 0, "opsz" 144;
}
.display-italic { font-style: italic; font-variation-settings: "SOFT" 100, "WONK" 1, "opsz" 144; }
.h1 { font-size: clamp(48px, 7vw, 96px); }
.h2 { font-size: clamp(36px, 5vw, 64px); }
.h3 { font-size: clamp(24px, 3vw, 36px); }
.h4 { font-size: 22px; letter-spacing: -0.01em; line-height: 1.2; }

/* Accent italic helper: colors an <em> in the section accent */
em.accent,
.display em.accent {
  font-style: italic;
  color: var(--accent);
  font-variation-settings: "SOFT" 100, "WONK" 1, "opsz" 144;
}

.eyebrow {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-muted);
  font-weight: 500;
}
.eyebrow-accent { color: var(--accent-deep); }

/* On colored pages (not home/contact which are naturally ink), tint eyebrows w/ section color */
body[data-section="services"] section:not(.process):not(.benefits):not(.bg-ink) .eyebrow,
body[data-section="insights"] section:not(.process):not(.benefits):not(.bg-ink) .eyebrow,
body[data-section="about"]    section:not(.process):not(.benefits):not(.bg-ink) .eyebrow,
body[data-section="product"]  section:not(.benefits):not(.bg-ink) .eyebrow {
  color: var(--accent-deep);
}

.lede {
  font-family: var(--serif);
  font-weight: 300;
  font-size: clamp(20px, 2vw, 26px);
  line-height: 1.35;
  letter-spacing: -0.01em;
  color: var(--ink-soft);
}

.body-lg    { font-size: 18px; line-height: 1.55; color: var(--ink-soft); }
.body       { font-size: 15px; line-height: 1.6; color: var(--ink-soft); }
.small      { font-size: 13px; color: var(--ink-muted); }
.mono-label { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-muted); }

/* ------------ Layout ------------ */
.container        { max-width: var(--container); margin: 0 auto; padding: 0 32px; }
.container-wide   { max-width: 1400px; margin: 0 auto; padding: 0 32px; }
.container-narrow { max-width: 860px;  margin: 0 auto; padding: 0 32px; }

section { position: relative; }
.section-pad    { padding: 120px 0; }
.section-pad-sm { padding: 72px 0; }

.hairline      { border: 0; border-top: 1px solid var(--hair); margin: 0; }
.hairline-soft { border: 0; border-top: 1px solid var(--hair-soft); margin: 0; }

/* ------------ Nav ------------ */
.nav {
  position: sticky;
  top: 6px; /* under color-strip */
  z-index: 50;
  background: rgba(247, 243, 236, 0.92);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--hair-soft);
}
.nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 32px;
  max-width: 1400px;
  margin: 0 auto;
}

/* Alt A — Horizontal Framed V lockup */
.brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  line-height: 1;
  color: inherit;
}
.brand-lockup {
  display: block;
  height: 30px;
  width: auto;
}
.footer .brand-lockup { height: 36px; }
/* Legacy CSS-built mark (kept for any pages still using span-based markup) */
.brand-box {
  width: 36px; height: 36px;
  border: 1px solid currentColor;
  position: relative;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  color: transparent;
  font-size: 0;
}
.brand-box::before,
.brand-box::after {
  content: 'V';
  position: absolute;
  top: 50%;
  left: 50%;
  font-family: var(--serif);
  font-style: normal;
  font-weight: 400;
  font-variation-settings: "opsz" 144, "SOFT" 0, "WONK" 0;
  font-size: 24px;
  line-height: 1;
  color: currentColor;
}
.brand-box::before { transform: translate(-58%, -50%); }
.brand-box::after  { transform: translate(-38%, -50%); opacity: 0.32; font-weight: 300; }
.brand-wordmark {
  font-family: var(--serif);
  font-style: normal;
  font-weight: 400;
  font-size: 16px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  line-height: 1;
  padding-left: 0.1em;
}
.brand-dot { display: none; }

.nav-links {
  display: flex;
  gap: 32px;
  align-items: center;
  font-size: 14px;
}
.nav-links a {
  color: var(--ink-soft);
  position: relative;
  padding: 4px 0;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.nav-links a:hover { color: var(--ink); }
.nav-links a.active { color: var(--ink); }

/* Color-dot before each nav link */
.nav-dot {
  width: 8px; height: 8px; border-radius: 50%; display: inline-block;
  flex-shrink: 0;
  opacity: 0.55;
  transition: opacity 0.15s, transform 0.15s;
}
.nav-links a:hover .nav-dot,
.nav-links a.active .nav-dot { opacity: 1; transform: scale(1.15); }

.nav-links a.active::after {
  content: '';
  position: absolute; left: 16px; right: 0; bottom: -2px;
  height: 1.5px; background: var(--accent);
}

/* Product link — slight coral tint badge style */
.nav-links a.is-product {
  font-weight: 500;
}

/* ------------ Buttons ------------ */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 22px;
  font-family: var(--sans);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.01em;
  border-radius: 999px;
  border: 1px solid var(--ink);
  background: var(--ink);
  color: var(--parchment);
  cursor: pointer;
  transition: all 0.2s ease;
}
.btn:hover { background: var(--ink-soft); }
.btn-ghost {
  background: transparent;
  color: var(--ink);
  border-color: var(--ink);
}
.btn-ghost:hover { background: var(--ink); color: var(--parchment); }
.btn-accent {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--parchment);
}
body[data-section="home"]     .btn-accent,
body[data-section="product"]  .btn-accent,
body[data-section="services"] .btn-accent,
body[data-section="insights"] .btn-accent,
body[data-section="about"]    .btn-accent { color: var(--ink); }
.btn-accent:hover { background: var(--accent-deep); border-color: var(--accent-deep); color: var(--parchment); }

.btn-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
  border-bottom: 1px solid var(--ink);
  padding-bottom: 2px;
  transition: gap 0.2s;
}
.btn-link:hover { gap: 12px; }
.btn-link-accent { color: var(--accent-deep); border-color: var(--accent-deep); }
.btn-link .arrow { transition: transform 0.2s; }
.btn-link:hover .arrow { transform: translateX(2px); }

/* ------------ Section-accent atoms ------------ */
.accent-rule {
  display: inline-block;
  width: 40px; height: 2px;
  background: var(--accent);
  margin: 0 14px 6px 0;
  vertical-align: middle;
}
.accent-dot {
  display: inline-block;
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--accent);
  margin-right: 8px; vertical-align: middle;
}

/* Blob backgrounds for heroes (section-aware) */
.hero-blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(0.5px);
  pointer-events: none;
  z-index: 0;
}
.hero-blob-accent {
  background: radial-gradient(circle, var(--accent-light) 0%, transparent 70%);
}
.hero-blob-sage  { background: radial-gradient(circle, var(--sage-light)  0%, transparent 70%); }
.hero-blob-sun   { background: radial-gradient(circle, var(--sun-light)   0%, transparent 70%); }
.hero-blob-coral { background: radial-gradient(circle, var(--coral-light) 0%, transparent 70%); }
.hero-blob-brass { background: radial-gradient(circle, var(--brass-light) 0%, transparent 70%); }

/* Auto-warmed page-head for subpages: a soft section-colored blob */
.page-head,
.hero {
  position: relative;
}
.page-head::before {
  content: '';
  position: absolute;
  top: -100px; right: -150px;
  width: 520px; height: 520px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--accent-light) 0%, transparent 70%);
  opacity: 0.9;
  z-index: 0;
  pointer-events: none;
}
.page-head::after {
  content: '';
  position: absolute;
  bottom: -180px; left: -120px;
  width: 360px; height: 360px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--accent-light) 0%, transparent 70%);
  opacity: 0.5;
  z-index: 0;
  pointer-events: none;
}
.page-head > * { position: relative; z-index: 1; }
/* Home hero: coral blobs, one top-right, one bottom-left */
body[data-section="home"] .hero::before {
  content: '';
  position: absolute;
  top: -80px; right: -180px;
  width: 560px; height: 560px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--coral-light) 0%, transparent 70%);
  opacity: 0.85;
  z-index: 0;
  pointer-events: none;
}
body[data-section="home"] .hero > * { position: relative; z-index: 1; }

/* Page-intro eyebrow with dot, serves as section-identifier */
.section-tag {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent-deep);
}
.section-tag::before {
  content: ''; width: 8px; height: 8px; border-radius: 50%;
  background: var(--accent);
}

/* ------------ Image placeholders ------------ */
.img-placeholder {
  position: relative;
  background-color: var(--bone);
  background-image: repeating-linear-gradient(
    135deg,
    rgba(20,17,15,0.04) 0px,
    rgba(20,17,15,0.04) 1px,
    transparent 1px,
    transparent 12px
  );
  display: flex;
  align-items: flex-end;
  justify-content: flex-start;
  padding: 20px;
  overflow: hidden;
}
.img-placeholder::before {
  content: '';
  position: absolute; inset: 0;
  border: 1px solid var(--hair);
}
.img-placeholder-label {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-muted);
  background: var(--parchment);
  padding: 4px 8px;
  border: 1px solid var(--hair);
  position: relative;
  z-index: 1;
}

/* Numbered list markers */
.num {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--ink-muted);
  letter-spacing: 0.1em;
}

/* ------------ Footer ------------ */
.footer {
  background: var(--ink);
  color: var(--parchment);
  padding: 80px 0 36px;
}
.footer a { color: rgba(247,243,236,0.6); }
.footer a:hover { color: var(--parchment); }
.footer-grid {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1fr 1fr;
  gap: 40px;
  margin-bottom: 64px;
}
.footer-col h5 {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(247,243,236,0.4);
  margin: 0 0 16px;
  font-weight: 500;
  display: inline-flex; align-items: center; gap: 8px;
}
.footer-col h5 .dot { width: 6px; height: 6px; border-radius: 50%; display: inline-block; }
.footer-col ul { list-style: none; padding: 0; margin: 0; }
.footer-col li { margin-bottom: 10px; font-size: 14px; }
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 28px;
  border-top: 1px solid rgba(247,243,236,0.1);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  color: rgba(247,243,236,0.4);
  text-transform: uppercase;
}
.footer-colorstrip { display: grid; grid-template-columns: repeat(5, 1fr); height: 4px; margin-bottom: 56px; }
.footer-colorstrip div:nth-child(1) { background: var(--coral); }
.footer-colorstrip div:nth-child(2) { background: var(--sun); }
.footer-colorstrip div:nth-child(3) { background: var(--sage); }
.footer-colorstrip div:nth-child(4) { background: var(--brass); }
.footer-colorstrip div:nth-child(5) { background: var(--parchment); opacity: 0.6; }

/* ------------ Utility ------------ */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.grid-12 { display: grid; grid-template-columns: repeat(12, 1fr); gap: 24px; }
.col-span-4 { grid-column: span 4; }
.col-span-5 { grid-column: span 5; }
.col-span-6 { grid-column: span 6; }
.col-span-7 { grid-column: span 7; }
.col-span-8 { grid-column: span 8; }
.col-span-12 { grid-column: span 12; }

.text-ink   { color: var(--ink); }
.text-soft  { color: var(--ink-soft); }
.text-muted { color: var(--ink-muted); }
.text-brass { color: var(--brass); }
.text-sun   { color: var(--sun-deep); }
.text-sage  { color: var(--sage-deep); }
.text-coral { color: var(--coral-deep); }
.text-moss  { color: var(--moss); }
.text-accent{ color: var(--accent-deep); }

.bg-parchment { background: var(--parchment); }
.bg-parchment-2 { background: var(--parchment-2); }
.bg-bone      { background: var(--bone); }
.bg-ink       { background: var(--ink); color: var(--parchment); }
.bg-accent-light { background: var(--accent-light); }

.divider-dot {
  display: inline-block;
  width: 4px; height: 4px;
  background: var(--ink-faint);
  border-radius: 50%;
  margin: 0 10px;
  vertical-align: middle;
}

/* Fade in */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}
.fade-in { animation: fadeUp 0.8s cubic-bezier(0.22,1,0.36,1) both; }
.fade-in-delay-1 { animation-delay: 0.08s; }
.fade-in-delay-2 { animation-delay: 0.16s; }
.fade-in-delay-3 { animation-delay: 0.24s; }
.fade-in-delay-4 { animation-delay: 0.32s; }

/* Responsive */
@media (max-width: 900px) {
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; gap: 32px; }
  .grid-12 { grid-template-columns: repeat(6, 1fr); gap: 16px; }
  .col-span-4, .col-span-5, .col-span-6, .col-span-7, .col-span-8 { grid-column: span 6; }
  .section-pad { padding: 72px 0; }
  .section-pad-sm { padding: 48px 0; }
  .nav-links { display: none; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
  .container, .container-wide, .container-narrow { padding: 0 20px; }
}
