/* =============================================================================
   Clinically Sustainable: one stylesheet for the whole site.

   Direction: the visual language of a life cycle assessment. Inventory tables,
   system boundaries, process flows, and a single "hotspot" colour reserved for
   the one thing worth looking at. Type is IBM Plex (the font from the original
   WordPress site), light at display sizes, with Plex Serif italic for the
   human voice of client quotes.
   ============================================================================= */

:root {
  /* Palette */
  --pine: #1e3b2f;        /* brand, headings, dark bands */
  --pine-2: #2b4f3f;      /* hover on pine */
  --scrub: #22706a;       /* links, primary actions (surgical teal) */
  --scrub-2: #185852;     /* link hover */
  --hotspot: #e3a21a;     /* the one highlight: diagram + focus */
  --paper: #f6f8f6;       /* cool clinical white, alternate sections */
  --white: #ffffff;
  --rule: #d3dcd6;        /* hairlines and table rules */
  --ink: #1c2621;         /* body text */
  --ink-2: #4b5a52;       /* secondary text (AA on white and paper) */

  /* Kept so older inline styles and data still resolve */
  --cs-primary: var(--pine);
  --cs-primary-dark: var(--pine);
  --cs-primary-light: var(--paper);
  --cs-accent: var(--scrub);
  --cs-accent-light: #e6efeb;
  --cs-text-main: var(--ink);
  --cs-text-light: var(--ink-2);
  --cs-border: var(--rule);
  --cs-white: var(--white);
  --cs-surface: var(--paper);

  /* Type: modular scale, ratio ~1.25 from a 18px body */
  --font: "IBM Plex Sans", -apple-system, "Segoe UI", Roboto, sans-serif;
  --serif: "IBM Plex Serif", Georgia, serif;
  --t-sm: .875rem;
  --t-base: 1.125rem;
  --t-md: 1.375rem;
  --t-lg: 1.75rem;
  --t-xl: 2.25rem;
  --t-2xl: clamp(2.4rem, 5.2vw, 3.6rem);

  --measure: 66ch;
  --gutter: 24px;
  --section: clamp(64px, 9vw, 112px);
  --radius: 3px;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 90px; }
body { margin: 0; font-family: var(--font); font-size: var(--t-base); line-height: 1.6; color: var(--ink); background: var(--white); font-feature-settings: "kern", "liga"; }
img { max-width: 100%; height: auto; }
h1, h2, h3, h4, h5 { color: var(--pine); line-height: 1.2; margin: 0 0 .6em; font-weight: 500; letter-spacing: -.01em; }
h1 { font-size: var(--t-2xl); font-weight: 300; letter-spacing: -.025em; line-height: 1.08; }
h2 { font-size: var(--t-xl); font-weight: 300; letter-spacing: -.02em; }
h3 { font-size: var(--t-md); }
h4 { font-size: var(--t-base); font-weight: 600; }
p { margin: 0 0 1em; }
a { color: var(--scrub); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--scrub-2); text-decoration-thickness: 2px; }
strong { font-weight: 600; }
:focus-visible { outline: 3px solid var(--hotspot); outline-offset: 2px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.cs-container { max-width: 1160px; margin: 0 auto; padding: 0 var(--gutter); }
.cs-container.wide { max-width: 1320px; }
.skip-link { position: absolute; left: -999px; top: 0; background: var(--pine); color: #fff; padding: 8px 12px; z-index: 100; }
.skip-link:focus { left: 8px; }

/* ---------- Header ---------- */
.site-header { background: var(--white); border-bottom: 1px solid var(--rule); position: sticky; top: 0; z-index: 50; }
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 76px; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--pine); font-weight: 600; font-size: 1rem; letter-spacing: -.005em; }
.brand:hover { color: var(--pine); }
.brand img { width: 58px; height: auto; }
.nav-toggle { display: none; background: none; border: 1px solid var(--rule); border-radius: var(--radius); padding: 8px 14px; font: inherit; font-size: var(--t-sm); color: var(--pine); cursor: pointer; }
.site-nav > ul { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 2px; }
.site-nav li { position: relative; }
.site-nav a { display: block; padding: 10px 12px; text-decoration: none; color: var(--ink); font-weight: 500; font-size: .95rem; }
.site-nav > ul > li > a { border-bottom: 2px solid transparent; }
.site-nav > ul > li > a:hover { color: var(--pine); border-bottom-color: var(--rule); }
.site-nav > ul > li.active > a { color: var(--pine); border-bottom-color: var(--pine); }
.site-nav .has-children > a::after { content: ""; display: inline-block; width: 6px; height: 6px; margin-left: 7px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-3px) rotate(45deg); }
.submenu { list-style: none; margin: 0; padding: 8px 0; position: absolute; top: 100%; left: 0; min-width: 300px; background: #fff; border: 1px solid var(--rule); border-top: 2px solid var(--pine); display: none; }
.has-children:hover > .submenu, .has-children:focus-within > .submenu { display: block; }
.submenu a { font-weight: 400; padding: 9px 18px; }
.submenu a:hover, .submenu a[aria-current] { background: var(--paper); color: var(--pine); }
.site-nav .nav-cta { margin-left: 12px; }
.site-nav .nav-cta .cs-btn { padding: 10px 18px; font-size: .95rem; }

@media (max-width: 960px) {
  .nav-toggle { display: block; }
  .site-nav { display: none; position: absolute; top: 100%; left: 0; right: 0; background: #fff; border-bottom: 1px solid var(--rule); padding: 8px var(--gutter) 20px; max-height: calc(100vh - 76px); overflow-y: auto; }
  .site-nav.open { display: block; }
  .site-nav > ul { flex-direction: column; align-items: stretch; }
  .site-nav > ul > li > a { border-bottom: 1px solid var(--rule); padding: 14px 0; }
  .submenu { display: block; position: static; border: 0; padding: 0 0 8px 16px; min-width: 0; }
  .submenu a { padding: 8px 0; }
  .site-nav .has-children > a::after { display: none; }
  .site-nav .nav-cta { margin: 16px 0 0; }
  .site-nav .nav-cta .cs-btn { width: 100%; }
  .brand span { font-size: .92rem; }
}

/* ---------- Buttons ---------- */
.cs-btn { display: inline-block; padding: 14px 24px; border-radius: var(--radius); font-family: inherit; font-weight: 500; font-size: 1rem; line-height: 1.2; text-decoration: none; text-align: center; cursor: pointer; background: var(--scrub); color: #fff !important; border: 1.5px solid var(--scrub); transition: background-color .15s ease, border-color .15s ease; }
.cs-btn:hover { background: var(--scrub-2); border-color: var(--scrub-2); text-decoration: none; }
.cs-btn-outline { background: transparent; color: var(--pine) !important; border-color: var(--pine); }
.cs-btn-outline:hover { background: var(--pine); border-color: var(--pine); color: #fff !important; }
.cs-btn-sm { padding: 8px 14px; font-size: .9rem; }
.cs-buttons { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }

/* Inline text links used as "read more" */
.cs-card-link { font-weight: 500; color: var(--scrub); text-decoration: underline; text-underline-offset: 3px; }
.cs-link-btn { background: none; border: 0; color: var(--scrub); font: inherit; font-weight: 500; cursor: pointer; text-decoration: underline; padding: 0; }

/* ---------- Section rhythm ---------- */
.cs-section { padding: var(--section) 0; }
.cs-section.alt { background: var(--paper); }
.cs-section-title { font-size: var(--t-xl); margin: 0 0 .5em; }
.cs-section-sub { color: var(--ink-2); max-width: var(--measure); margin: 0 0 48px; }
/* Some templates set inline margins on titles; keep spacing consistent */
.cs-section-title[style] { margin-bottom: 40px !important; }

/* Section heading with a rule, used by the home page lists */
.cs-section > .cs-container > .cs-section-title { padding-top: 18px; border-top: 2px solid var(--pine); max-width: 100%; }

/* ---------- Heroes ---------- */
.cs-hero { padding: clamp(56px, 8vw, 104px) 0; background: var(--white); border-bottom: 1px solid var(--rule); }
.cs-hero h1 { max-width: 18ch; margin-bottom: 28px; }
.cs-hero .subtitle { font-size: var(--t-md); line-height: 1.5; color: var(--ink-2); max-width: 58ch; margin: 0 0 36px; font-weight: 300; }
.cs-hero h1 + .subtitle { margin-top: -6px; }
.hero-split { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); gap: clamp(32px, 6vw, 88px); align-items: center; }
.hero-copy h1 { max-width: 16ch; }

/* Inner page header */
.cs-page-header { padding: clamp(48px, 7vw, 88px) 0 clamp(36px, 5vw, 56px); border-bottom: 1px solid var(--rule); background: var(--white); }
.cs-page-header h1 { font-size: clamp(2.2rem, 4.6vw, 3.1rem); margin: 0 0 18px; max-width: 22ch; }
.cs-page-header .lead { font-size: var(--t-md); font-weight: 300; line-height: 1.5; color: var(--ink-2); max-width: 60ch; margin: 0; }

/* ---------- Signature: life cycle system boundary ---------- */
.lc { margin: 0; }
.lc-boundary { position: relative; border: 2px dashed var(--hotspot); border-radius: 6px; padding: 34px 26px 22px; }
.lc-boundary-label { position: absolute; top: -12px; left: 18px; background: var(--white); padding: 0 8px; font-size: var(--t-sm); font-weight: 500; color: #8a5f00; }
.lc-stages { list-style: none; margin: 0; padding: 0; counter-reset: stage; position: relative; }
/* the flow line connecting the stages */
.lc-stages::before { content: ""; position: absolute; left: 15px; top: 16px; bottom: 16px; width: 2px; background: var(--pine); transform-origin: top; animation: lc-draw 1.1s cubic-bezier(.6,.05,.3,1) .25s both; }
.lc-stages li { counter-increment: stage; position: relative; padding: 0 0 18px 52px; }
.lc-stages li:last-child { padding-bottom: 0; }
.lc-stages li::before { content: counter(stage); position: absolute; left: 0; top: 0; width: 32px; height: 32px; border-radius: 50%; background: var(--white); border: 2px solid var(--pine); color: var(--pine); font-weight: 600; font-size: .9rem; display: grid; place-items: center; animation: lc-node .35s ease-out both; }
.lc-stages li:nth-child(1)::before { animation-delay: .25s; }
.lc-stages li:nth-child(2)::before { animation-delay: .45s; }
.lc-stages li:nth-child(3)::before { animation-delay: .65s; }
.lc-stages li:nth-child(4)::before { animation-delay: .85s; }
.lc-stages li:nth-child(5)::before { animation-delay: 1.05s; }
.lc-stages strong { display: block; color: var(--pine); font-weight: 600; font-size: 1.05rem; line-height: 32px; }
.lc-stages span { display: block; color: var(--ink-2); font-size: .95rem; line-height: 1.45; }
.lc figcaption { margin-top: 16px; font-size: var(--t-sm); color: var(--ink-2); max-width: 46ch; }
@keyframes lc-draw { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes lc-node { from { opacity: 0; transform: scale(.6); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .lc-stages::before, .lc-stages li::before { animation: none; }
}

/* ---------- Credentials inventory ---------- */
.cs-proof { padding: clamp(48px, 7vw, 80px) 0; background: var(--paper); border-bottom: 1px solid var(--rule); }
.proof-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(28px, 6vw, 80px); align-items: start; }
.proof-h { font-size: var(--t-lg); margin: 0 0 14px; }
.cs-proof-line { color: var(--ink-2); max-width: 44ch; margin: 0; }
.inventory { width: 100%; border-collapse: collapse; border-top: 2px solid var(--pine); border-bottom: 2px solid var(--pine); font-variant-numeric: tabular-nums; }
.inventory th, .inventory td { padding: 13px 0; border-bottom: 1px solid var(--rule); text-align: left; vertical-align: baseline; }
.inventory tr:last-child th, .inventory tr:last-child td { border-bottom: 0; }
.inventory th { font-weight: 400; color: var(--ink-2); padding-right: 24px; }
.inventory td { font-weight: 600; color: var(--pine); text-align: right; font-size: 1.15rem; }
.cs-logos { display: flex; flex-wrap: wrap; align-items: center; gap: 40px; }
.cs-logos img { max-height: 64px; max-width: 170px; width: auto; object-fit: contain; }
.cs-logos-sm { margin-top: clamp(36px, 5vw, 56px); padding-top: 28px; border-top: 1px solid var(--rule); gap: 44px; justify-content: space-between; }
.cs-logos-sm img { max-height: 46px; max-width: 150px; filter: grayscale(1); opacity: .75; }
@media (max-width: 860px) { .proof-grid { grid-template-columns: 1fr; } .cs-logos-sm { justify-content: flex-start; gap: 28px 36px; } }

/* ---------- Lists of things (replaces boxed cards) ---------- */
.cs-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 44px 40px; }
.cs-grid.two { grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); }
.cs-card { border-top: 1px solid var(--rule); padding-top: 22px; background: none; }
.cs-card.flex { display: flex; flex-direction: column; }
.cs-card.center { text-align: left; }
.cs-card h3 { font-size: var(--t-md); margin: 0 0 10px; }
.cs-card p { color: var(--ink-2); }
.cs-card > .cs-card-link, .cs-card > .cs-btn { margin-top: auto; align-self: flex-start; }
.cs-icon { display: none; } /* emoji icons are kept in the data but not shown */
a.cs-card-click { display: block; text-decoration: none; color: inherit; border-top: 2px solid var(--pine); }
a.cs-card-click:hover h3, a.cs-card-click:focus-visible h3 { color: var(--scrub); }
a.cs-card-click:hover .cs-card-link { text-decoration-thickness: 2px; }

.cs-badge { display: inline-block; font-size: var(--t-sm); font-weight: 500; color: var(--scrub); margin-bottom: 8px; }
.cs-client { font-weight: 500; color: var(--pine); margin: -4px 0 12px; }
.cs-highlights, .cs-checks { list-style: none; padding: 0; margin: 0 0 20px; }
.cs-highlights li, .cs-checks li { position: relative; padding: 8px 0 8px 22px; border-bottom: 1px solid var(--rule); }
.cs-highlights li:last-child, .cs-checks li:last-child { border-bottom: 0; }
.cs-highlights li::before, .cs-checks li::before { content: ""; position: absolute; left: 0; top: 18px; width: 10px; height: 2px; background: var(--scrub); }

/* ---------- Quotes (the human voice: serif italic) ---------- */
.cs-testimonial { margin: 0; border-top: 1px solid var(--rule); padding-top: 24px; }
.cs-testimonial-text, .cs-quote, .cs-side-quote { font-family: var(--serif); font-style: italic; font-weight: 300; font-size: 1.2rem; line-height: 1.6; color: var(--ink); }
.cs-testimonial blockquote { margin: 0 0 18px; }
.cs-testimonial-author { font-weight: 600; color: var(--pine); margin: 0; font-size: 1rem; }
.cs-testimonial-author small { display: block; font-weight: 400; color: var(--ink-2); font-size: .95rem; }
.cs-quote { margin: 0; padding-left: 20px; border-left: 2px solid var(--pine); }
.cs-rating { display: none; }

/* ---------- Two-column feature (bio teaser, speaking intro) ---------- */
.cs-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 6vw, 80px); align-items: center; }
.cs-two-col h2 { margin-bottom: 20px; }
.cs-two-col p { color: var(--ink-2); max-width: var(--measure); }
.cs-photo { width: 100%; display: block; border-radius: 4px; margin-bottom: 24px; aspect-ratio: 4/3; object-fit: cover; object-position: center 25%; }
.cs-vision-box { border-left: 2px solid var(--pine); padding: 4px 0 4px 20px; }

/* ---------- Dark band (recognition) ---------- */
.cs-band { background: var(--pine); color: #fff; padding: clamp(44px, 6vw, 64px) 0; }
.cs-band p { color: rgba(255,255,255,.88); max-width: var(--measure); }
.cs-tags { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 0 40px; }
.cs-tags li { padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.18); font-weight: 400; color: rgba(255,255,255,.94); }

/* ---------- Closing call to action ---------- */
.cs-cta { padding: var(--section) 0; background: var(--paper); border-top: 1px solid var(--rule); }
.cs-cta h2 { font-size: var(--t-xl); max-width: 22ch; margin: 0 0 14px; }
.cs-cta p { color: var(--ink-2); font-size: var(--t-md); font-weight: 300; max-width: 52ch; margin: 0 0 30px; }

/* ---------- Prose ---------- */
.cs-prose { padding-top: 56px; padding-bottom: 72px; max-width: calc(var(--measure) + 2 * var(--gutter)); margin-left: 0; }
.cs-prose p, .cs-prose li { max-width: var(--measure); }
.cs-prose h2 { margin-top: 1.6em; font-size: var(--t-lg); }
.cs-prose img { border-radius: 4px; }
.cs-container.cs-prose { margin-left: auto; margin-right: auto; max-width: 1160px; }
.cs-container.cs-prose > * { max-width: var(--measure); }

/* ---------- Services page ---------- */
.cs-jump { display: flex; flex-wrap: wrap; gap: 6px 22px; margin-top: 28px; }
.cs-jump a { font-weight: 500; font-size: .98rem; }
.cs-service { padding: clamp(40px, 6vw, 64px) 0; border-top: 2px solid var(--pine); }
.cs-service:first-child { border-top: 0; padding-top: 8px; }
.cs-service-head { margin-bottom: 26px; }
.cs-service-head h2 { margin: 0 0 8px; font-size: var(--t-xl); }
.cs-service-tagline { margin: 0; font-size: var(--t-md); font-weight: 300; color: var(--ink-2); }
.cs-service-body { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 64px); }
.cs-service-body h3 { font-size: 1rem; font-weight: 600; color: var(--pine); margin: 22px 0 8px; }
.cs-service-body h3:first-child { margin-top: 0; }
.cs-service-body p { max-width: var(--measure); }
.cs-service-meta { display: flex; flex-wrap: wrap; gap: 8px 28px; color: var(--ink-2); margin-top: 16px; }
.cs-service-side { display: grid; gap: 28px; align-content: start; }
.cs-side-case { background: var(--paper); padding: 24px; border-top: 2px solid var(--scrub); }
.cs-side-case h4 { margin: 0 0 10px; font-size: 1.05rem; }
.cs-side-quote { margin: 0; font-size: 1.08rem; }
.cs-side-quote cite { display: block; font-family: var(--font); font-style: normal; font-weight: 600; font-size: .92rem; color: var(--pine); margin-top: 12px; }

/* ---------- Case studies page ---------- */
.cs-case { padding: clamp(40px, 6vw, 64px) 0; border-top: 2px solid var(--pine); }
.cs-case:first-child { border-top: 0; padding-top: 0; }
.cs-case h2 { font-size: var(--t-xl); max-width: 26ch; margin: 0 0 20px; }
.cs-result-strip { list-style: none; padding: 0; margin: 0 0 32px; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.cs-result-strip li { padding: 16px 20px 16px 0; font-weight: 500; color: var(--pine); }
.cs-result-strip li + li { padding-left: 20px; border-left: 1px solid var(--rule); }
.cs-breakdown { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; margin-bottom: 32px; }
.cs-breakdown h3 { font-size: 1rem; font-weight: 600; color: var(--pine); margin: 0 0 8px; }
.cs-breakdown p { margin: 0; color: var(--ink-2); }
.cs-case blockquote { margin: 0 0 32px; padding-left: 20px; border-left: 2px solid var(--pine); max-width: 72ch; }
.cs-case blockquote .cs-testimonial-text { margin-bottom: 12px; }

/* ---------- About ---------- */
.cs-about-header { padding: clamp(48px, 7vw, 88px) 0; }
.cs-about-grid { display: grid; grid-template-columns: 240px 1fr; gap: clamp(28px, 5vw, 64px); align-items: center; }
.cs-headshot { width: 240px; height: 300px; object-fit: cover; object-position: top; border-radius: 4px; display: block; }
.cs-pubs { max-width: 860px; margin: 0; padding: 0; list-style: none; counter-reset: pub; border-top: 1px solid var(--rule); }
.cs-pubs li { counter-increment: pub; padding: 16px 0 16px 44px; border-bottom: 1px solid var(--rule); position: relative; }
.cs-pubs li::before { content: counter(pub); position: absolute; left: 0; top: 16px; color: var(--ink-2); font-variant-numeric: tabular-nums; }
.cs-pubs a { font-weight: 500; text-decoration: none; color: var(--pine); }
.cs-pubs a:hover { text-decoration: underline; }
.cs-pub-meta { display: block; color: var(--ink-2); font-size: .95rem; margin-top: 2px; }
.cs-pub-take { display: block; margin-top: 4px; }
.cs-media { max-width: 800px; }
@media (max-width: 700px) {
  .cs-about-grid { grid-template-columns: 1fr; }
  .cs-headshot { width: 180px; height: 220px; }
}

/* ---------- Resources featured box ---------- */
.cs-featured { background: var(--pine); color: #fff; padding: clamp(28px, 5vw, 48px); margin: 48px 0; border-radius: 4px; }
.cs-featured h2 { color: #fff; margin: 0 0 12px; }
.cs-featured p { color: rgba(255,255,255,.9); max-width: var(--measure); }
.cs-featured .cs-btn { background: #fff; color: var(--pine) !important; border-color: #fff; }
.cs-featured .cs-btn:hover { background: var(--paper); }
.cs-social-grid { display: flex; flex-wrap: wrap; gap: 10px 26px; list-style: none; padding: 0; margin: 0; }
.cs-social-grid a { font-weight: 500; }

/* ---------- Consult box (free tools to services) ---------- */
.cs-consult-box { display: grid; grid-template-columns: minmax(0, 1.6fr) auto; gap: 32px; align-items: center; background: var(--pine); color: #fff; border-radius: 4px; padding: clamp(28px, 4vw, 44px); margin: 48px 0 72px; }
.cs-consult-box h2 { color: #fff; font-size: var(--t-lg); margin: 0 0 10px; }
.cs-consult-box p { margin: 0; color: rgba(255,255,255,.88); max-width: 60ch; }
.cs-consult-actions { display: flex; flex-direction: column; gap: 10px; }
.cs-consult-box .cs-btn { background: #fff; border-color: #fff; color: var(--pine) !important; }
.cs-consult-box .cs-btn:hover { background: var(--paper); }
.cs-consult-box .cs-btn-outline { background: transparent; color: #fff !important; border-color: rgba(255,255,255,.7); }
.cs-consult-box .cs-btn-outline:hover { background: rgba(255,255,255,.1); }
@media (max-width: 800px) { .cs-consult-box { grid-template-columns: 1fr; } .cs-consult-actions { flex-direction: row; flex-wrap: wrap; } }

/* ---------- Speaking ---------- */
.cs-schedule-list { border-top: 2px solid var(--pine); }
.cs-schedule-item { display: grid; grid-template-columns: 200px 1fr auto; gap: 24px; align-items: baseline; padding: 20px 0; border-bottom: 1px solid var(--rule); }
.cs-schedule-date { font-weight: 600; color: var(--pine); font-variant-numeric: tabular-nums; }
.cs-schedule-item h3 { margin: 0 0 4px; font-size: 1.15rem; }
.cs-schedule-meta { color: var(--ink-2); font-size: .98rem; display: flex; gap: 6px 18px; flex-wrap: wrap; }
.cs-schedule-role { font-weight: 500; color: var(--scrub); }
.cs-schedule-empty { color: var(--ink-2); padding: 20px 0; }
.cs-past { margin-top: 28px; }
.cs-past summary { cursor: pointer; font-weight: 500; color: var(--scrub); }
.cs-past ul { color: var(--ink-2); }
.cs-topic { padding: 32px 0; border-top: 1px solid var(--rule); max-width: 860px; }
.cs-topic:first-of-type { border-top: 2px solid var(--pine); }
.cs-topic h3 { margin: 0 0 8px; }
.cs-topic-meta { color: var(--ink-2); margin-bottom: 14px; }
.cs-topic-hook { font-family: var(--serif); font-style: italic; font-size: 1.12rem; color: var(--ink); padding-left: 18px; border-left: 2px solid var(--hotspot); margin-bottom: 18px; }
.cs-topic-hook strong { font-family: var(--font); font-style: normal; font-weight: 600; color: var(--pine); }
.cs-topic h4 { margin: 0 0 6px; }
.cs-topic ul { margin: 0; padding-left: 1.2em; }
.cs-topic li { margin-bottom: 6px; }

/* ---------- Opportunity finder ---------- */
.cs-filter-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 16px; background: var(--paper); border-top: 2px solid var(--pine); padding: 22px; margin: 32px 0 14px; }
.cs-filter-grid label { display: block; font-weight: 500; font-size: .92rem; color: var(--pine); margin-bottom: 6px; }
.cs-filter-grid select, .cs-filter-grid input { width: 100%; padding: 10px; border: 1px solid #b9c6be; border-radius: var(--radius); font: inherit; font-size: 1rem; background: #fff; color: var(--ink); }
.cs-finder-status { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; color: var(--ink-2); }
.cs-legend { font-size: .95rem; color: var(--ink-2); margin: 0 0 18px; line-height: 2; }
.cs-table-wrapper { overflow-x: auto; border-top: 2px solid var(--pine); border-bottom: 2px solid var(--pine); }
.cs-table { width: 100%; border-collapse: collapse; font-size: .97rem; }
.cs-table th { text-align: left; padding: 12px 14px 12px 0; color: var(--pine); font-weight: 600; border-bottom: 1px solid var(--pine); white-space: nowrap; background: #fff; position: sticky; top: 0; }
.cs-table td { padding: 13px 14px 13px 0; border-bottom: 1px solid var(--rule); vertical-align: top; }
.cs-table tbody tr:hover { background: var(--paper); }
.cs-table td a { font-weight: 500; }
.badge { display: inline-block; min-width: 24px; text-align: center; font-size: .8rem; font-weight: 600; padding: 1px 6px; border-radius: 2px; margin: 1px; background: #e2ede8; color: var(--pine); font-variant-numeric: tabular-nums; }
.badge.comm { background: #e4ecf3; color: #22435e; }
.badge-time { display: inline-block; font-size: .8rem; font-weight: 500; padding: 1px 8px; border-radius: 2px; background: #fbedcc; color: #6b4a00; margin-left: 4px; }
.cs-update-block { display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap; border-top: 1px solid var(--rule); padding: 28px 0 0; margin: 36px 0 0; }
.cs-update-block h2 { font-size: var(--t-md); font-weight: 500; margin: 0 0 6px; }
.cs-update-block p { margin: 0; color: var(--ink-2); max-width: 64ch; }

/* ---------- Insights ---------- */
.cs-post { border-top: 1px solid var(--rule); }
.cs-post-img { width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 3px; margin-bottom: 14px; }
.cs-post-date { color: var(--ink-2); font-size: var(--t-sm); font-variant-numeric: tabular-nums; }
.cs-post h3 { font-size: 1.2rem; margin: 6px 0 10px; }
.cs-post h3 a { color: var(--pine); text-decoration: none; }
.cs-post h3 a:hover { color: var(--scrub); text-decoration: underline; }

/* ---------- Forms ---------- */
.cs-form { display: grid; gap: 18px; }
.cs-form label { font-weight: 500; color: var(--pine); display: block; margin-bottom: 6px; font-size: .98rem; }
.cs-form input, .cs-form textarea, .cs-form select { width: 100%; padding: 12px; border: 1px solid #b9c6be; border-radius: var(--radius); font: inherit; font-size: 1rem; background: #fff; color: var(--ink); }
.cs-form input:focus, .cs-form textarea:focus, .cs-form select:focus, .cs-filter-grid select:focus, .cs-filter-grid input:focus { outline: 3px solid var(--hotspot); outline-offset: 1px; border-color: var(--pine); }
.cs-form .req { color: #a3361c; }
.cs-form .hp { display: none; }
.cs-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.cs-form-card { background: var(--paper); border-top: 2px solid var(--pine); padding: clamp(24px, 4vw, 36px); }
.cs-form-card h2 { font-size: var(--t-lg); margin: 0 0 18px; }
.cs-contact-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); gap: clamp(32px, 6vw, 72px); padding: 56px var(--gutter) 88px; }
.cs-contact-grid h2 { font-size: var(--t-lg); }
.cs-contact-grid h3 { font-size: 1.05rem; font-weight: 600; margin-top: 28px; }
.cs-contact-grid ol, .cs-contact-grid ul { padding-left: 1.2em; color: var(--ink-2); }
.cs-contact-grid li { margin-bottom: 6px; }
@media (max-width: 600px) { .cs-form-row { grid-template-columns: 1fr; } }

.cs-embed { width: 100%; border: 0; display: block; min-height: 850px; }

/* ---------- Footer ---------- */
.site-footer { background: var(--pine); color: rgba(255,255,255,.82); padding: 56px 0 40px; font-size: .97rem; }
.site-footer a { color: #fff; text-decoration: none; }
.site-footer a:hover { text-decoration: underline; color: #fff; }
.footer-inner { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(0, 1fr)); gap: 32px 48px; align-items: start; }
.footer-logo { background: #fff; padding: 6px; border-radius: 3px; width: 66px; height: auto; margin-bottom: 14px; }
.footer-id p { margin: 0; line-height: 1.7; }
.footer-h { color: #fff; font-size: 1rem; font-weight: 600; margin: 0 0 12px; letter-spacing: 0; }
.site-footer ul { list-style: none; margin: 0; padding: 0; line-height: 2; }
.footer-copy { grid-column: 1 / -1; margin: 16px 0 0; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.18); color: rgba(255,255,255,.65); font-size: var(--t-sm); }

/* ---------- Responsive ---------- */
@media (max-width: 900px) {
  .hero-split { grid-template-columns: 1fr; }
  .lc { max-width: 520px; }
}
@media (max-width: 800px) {
  :root { --gutter: 18px; }
  body { font-size: 1.0625rem; }
  .cs-two-col, .cs-contact-grid { grid-template-columns: 1fr; }
  .cs-grid.two { grid-template-columns: 1fr; }
  .cs-breakdown { grid-template-columns: 1fr; gap: 20px; }
  .cs-service-body { grid-template-columns: 1fr; }
  .cs-schedule-item { grid-template-columns: 1fr; gap: 6px; }
  .cs-result-strip li + li { border-left: 0; padding-left: 0; border-top: 1px solid var(--rule); }
  .footer-inner { grid-template-columns: 1fr 1fr; }
  .footer-id { grid-column: 1 / -1; }
}
