/* ==========================================================================
   Clay Stafford — Homepage styles (Concept B, "Quiet Modern")
   Everything is scoped under .cs-home so it cannot affect the rest of the site.
   Change the brand colors in one place: the variables right below.
   ========================================================================== */

.cs-home {
  --cs-bg: #F7F5F1;          /* page background (warm off-white) */
  --cs-tint: #EFEAE1;        /* alternate section background */
  --cs-ink: #1B1A18;         /* main text / dark sections */
  --cs-ink-2: #4A4640;       /* body copy */
  --cs-muted: #6B665E;       /* captions, small labels */
  --cs-line: #E2DED6;        /* hairlines */
  --cs-accent: #7E2A26;      /* oxblood accent */
  --cs-accent-dark: #5A1C19;
  --cs-accent-on-dark: #E3A8A2;
  --cs-serif: "Instrument Serif", Georgia, "Times New Roman", serif;
  --cs-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --cs-wrap: 1240px;
  --cs-radius: 10px;

  background: var(--cs-bg);
  color: var(--cs-ink);
  font-family: var(--cs-sans);
  font-size: 18px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

/* ---- Reset Divi's default spacing inside our block ---- */
.cs-home *, .cs-home *::before, .cs-home *::after { box-sizing: border-box; }
.cs-home h1, .cs-home h2, .cs-home h3, .cs-home h4, .cs-home p,
.cs-home ul, .cs-home figure, .cs-home blockquote {
  margin: 0; padding: 0; border: 0; quotes: none;
}
.cs-home h1, .cs-home h2, .cs-home h3 { color: inherit; line-height: 1.1; font-weight: 400; }
.cs-home p + p { margin-top: 1em; }
.cs-home img { max-width: 100%; height: auto; display: block; }
.cs-home a { color: var(--cs-accent); transition: color .2s, background-color .2s, border-color .2s; }
.cs-home a:hover { color: var(--cs-accent-dark); }
.cs-home strong { font-weight: 600; color: var(--cs-ink); }
.cs-home :focus-visible { outline: 2px solid var(--cs-accent); outline-offset: 3px; }

/* ---- Layout helpers ---- */
.cs-wrap { max-width: var(--cs-wrap); margin: 0 auto; padding: 0 24px; }
.cs-narrow { max-width: 820px; }
.cs-center { text-align: center; }
.cs-section { padding: clamp(72px, 9vw, 120px) 0; }
.cs-section--tint { background: var(--cs-tint); }
.cs-section--rule { border-top: 1px solid var(--cs-line); }
.cs-mt { margin-top: 40px !important; }

.cs-split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(40px, 6vw, 80px); }
.cs-split--center { align-items: center; }
.cs-split--top { align-items: start; }
.cs-split__media img { width: 100%; border-radius: var(--cs-radius); }
.cs-home .cs-split__text > * + * { margin-top: 1em; }
.cs-home .cs-split__text > .cs-btn, .cs-home .cs-split__text > .cs-link { margin-top: 1.75em; display: inline-flex; }

/* ---- Type ---- */
.cs-display {
  font-family: var(--cs-serif);
  font-size: clamp(52px, 6.5vw, 92px);
  line-height: 1 !important;
  letter-spacing: -0.02em;
}
.cs-display em, .cs-h2 em { color: var(--cs-accent); font-style: italic; }
.cs-display--md { font-size: clamp(40px, 5vw, 68px); }
.cs-h2 {
  font-family: var(--cs-serif);
  font-size: clamp(38px, 4.4vw, 58px);
  line-height: 1.05 !important;
  letter-spacing: -0.01em;
}
.cs-h3 {
  font-family: var(--cs-serif);
  font-size: clamp(24px, 2.4vw, 30px);
  line-height: 1.25 !important;
  color: var(--cs-ink);
}
.cs-lede { font-size: 21px; color: var(--cs-ink); }
.cs-eyebrow {
  font-family: var(--cs-serif);
  font-size: 22px;
  color: var(--cs-muted);
}
.cs-split__text p, .cs-narrow p { color: var(--cs-ink-2); }

/* ---- Buttons & links ---- */
.cs-btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px; padding: 12px 26px;
  border-radius: 6px; border: 1px solid transparent;
  font-family: var(--cs-sans); font-size: 16px; font-weight: 600; line-height: 1.2;
  text-decoration: none !important;
}
.cs-btn--solid { background: var(--cs-accent); color: #fff !important; }
.cs-btn--solid:hover { background: var(--cs-accent-dark); }
.cs-btn--ghost { border-color: var(--cs-ink); color: var(--cs-ink) !important; background: transparent; }
.cs-btn--ghost:hover { background: var(--cs-ink); color: var(--cs-bg) !important; }
.cs-btn--light { background: var(--cs-bg); color: var(--cs-ink) !important; }
.cs-btn--light:hover { background: #fff; }
.cs-link {
  font-weight: 600; text-decoration: underline; text-underline-offset: 5px;
  text-decoration-thickness: 1px;
}
.cs-link::after { content: " →"; }
.cs-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 36px !important; }

/* ---- Hero ---- */
.cs-hero { padding: clamp(48px, 7vw, 96px) 0 clamp(56px, 7vw, 104px); }
.cs-hero__grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: clamp(40px, 6vw, 88px); align-items: center; }
.cs-home .cs-hero__text > * + * { margin-top: 1.1em; }
.cs-hero__sub {
  font-family: var(--cs-sans) !important;
  font-size: 15px !important; font-weight: 600 !important;
  letter-spacing: .12em; text-transform: uppercase; line-height: 1.5 !important;
  color: var(--cs-accent) !important;
  margin-top: 28px !important;
}
.cs-hero__text p { color: var(--cs-ink-2); max-width: 580px; }
.cs-hero__question { font-family: var(--cs-serif); font-size: 28px; line-height: 1.2; }
.cs-hero__question strong { font-weight: 400; }
.cs-signature { width: 170px; margin-top: 8px !important; }
.cs-home .cs-hero__media img {
  width: 100%; border-radius: 0; background: none;
  /* soften the cropped bottom and left edges of the cut-out photo */
  -webkit-mask-image: linear-gradient(to bottom, #000 82%, transparent 100%), linear-gradient(to right, transparent 0, #000 9%);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(to bottom, #000 82%, transparent 100%), linear-gradient(to right, transparent 0, #000 9%);
  mask-composite: intersect;
}

/* ---- KN / KNM / KNU strip ---- */
.cs-kn-strip { border-top: 1px solid var(--cs-ink); border-bottom: 1px solid var(--cs-line); background: var(--cs-bg); }
.cs-kn-strip__row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cs-kn-strip a {
  display: flex; align-items: baseline; gap: 14px;
  padding: 26px 24px 26px 0; min-height: 44px;
  color: var(--cs-ink); text-decoration: none;
  font-family: var(--cs-serif); font-size: clamp(20px, 2vw, 26px); line-height: 1.2;
}
.cs-kn-strip a + a { padding-left: 24px; border-left: 1px solid var(--cs-line); }
.cs-kn-strip a:hover { color: var(--cs-accent); }
.cs-num { font-size: 16px; color: var(--cs-muted); flex: none; }

/* ---- Quotes ---- */
.cs-home .cs-quotes { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); column-gap: 24px; row-gap: 0; margin-top: 56px; }
/* Quote bubbles: white speech bubble with a tail, attribution underneath */
.cs-home .cs-quote { grid-column: span 2; grid-row: span 2; display: grid; grid-template-rows: subgrid; align-content: start; }
.cs-home .cs-quote--lead { grid-column: span 3; }
.cs-home .cs-quotes .cs-quote blockquote {
  position: relative; flex: 1;
  background: #FFFFFF;
  border-radius: 18px;
  padding: 34px 34px 30px;
  font-family: var(--cs-serif); font-size: 24px; line-height: 1.3; color: var(--cs-ink);
  box-shadow: 0 1px 2px rgba(27, 26, 24, .05), 0 10px 28px rgba(27, 26, 24, .07);
}
.cs-home .cs-quotes .cs-quote blockquote::after {
  content: ""; position: absolute; left: 44px; bottom: -17px;
  width: 26px; height: 18px; background: #FFFFFF;
  clip-path: polygon(0 0, 100% 0, 0 100%);
}
.cs-home .cs-quotes .cs-quote--lead blockquote { font-size: clamp(26px, 2.6vw, 34px); padding: 40px 40px 34px; }
.cs-home .cs-quotes .cs-quote figcaption {
  margin-top: 26px; margin-bottom: 36px; padding-left: 44px;
  font-size: 14px; line-height: 1.5; color: var(--cs-muted);
}
.cs-home .cs-quote--inline { border-top: 1px solid var(--cs-line); padding-top: 20px; gap: 8px; }
.cs-home .cs-quote--inline blockquote { font-family: var(--cs-serif); font-size: 26px; line-height: 1.3; color: var(--cs-ink); }
.cs-home .cs-quote--inline figcaption { font-size: 14px; color: var(--cs-muted); }

/* ---- Dark sections ---- */
.cs-section--dark { background: var(--cs-ink); color: var(--cs-bg); }
.cs-section--dark .cs-split__text p, .cs-section--dark .cs-h3, .cs-section--dark strong { color: #D9D4CB; }
.cs-section--dark .cs-h2, .cs-section--dark .cs-h3 { color: var(--cs-bg); }
.cs-section--dark .cs-eyebrow { color: #A49E94; }
.cs-section--dark a:not(.cs-btn) { color: var(--cs-bg); }
.cs-section--dark a:not(.cs-btn):hover { color: var(--cs-accent-on-dark); }
.cs-kn-logo img { max-width: 520px; margin: 0 auto; border-radius: 0; }

/* ---- Magazine covers ---- */
.cs-home .cs-covers {
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(160px, 1fr);
  gap: 20px; margin-top: 56px; overflow-x: auto; padding-bottom: 12px;
  scroll-snap-type: x mandatory;
}
.cs-covers a { scroll-snap-align: start; display: block; }
.cs-covers img { width: 100%; aspect-ratio: 1080 / 1398; object-fit: cover; border-radius: 4px; background: var(--cs-tint); box-shadow: 0 1px 2px rgba(0,0,0,.08); transition: transform .25s; }
.cs-covers a:hover img { transform: translateY(-4px); }

/* ---- KNU ---- */
.cs-home .cs-narrow > * + * { margin-top: 1em; }
.cs-knu-logo { width: 100%; max-width: min(420px, 100%) !important; margin: 8px auto 12px !important; }
.cs-home .cs-narrow .cs-btn { margin-top: 1.75em; }

/* ---- Newsletter ---- */
.cs-portrait img { aspect-ratio: 3 / 4; object-fit: cover; max-width: 520px; background: var(--cs-tint); }
.cs-checks { list-style: none !important; }
.cs-checks li { position: relative; padding-left: 30px; color: var(--cs-ink-2); }
.cs-home .cs-checks li + li { margin-top: 8px; }
.cs-checks li::before { content: ""; position: absolute; left: 2px; top: .55em; width: 14px; height: 8px; border-left: 2px solid var(--cs-accent); border-bottom: 2px solid var(--cs-accent); transform: rotate(-45deg); }
.cs-signup { margin-top: 28px !important; padding: 24px; background: var(--cs-tint); border-radius: var(--cs-radius); }
/* auto-style whatever newsletter form gets pasted in */
.cs-signup form { display: flex; flex-wrap: wrap; gap: 10px; align-items: stretch; margin: 0; }
.cs-signup label { width: 100%; font-size: 14px; font-weight: 600; color: var(--cs-ink); }
.cs-signup input[type="email"], .cs-signup input[type="text"] {
  flex: 1 1 220px; min-width: 0; min-height: 48px; padding: 12px 16px;
  font: inherit; font-size: 16px; color: var(--cs-ink);
  background: #fff; border: 1px solid #C9C3B8; border-radius: 6px;
}
.cs-signup button, .cs-signup input[type="submit"] {
  min-height: 48px; padding: 12px 24px; cursor: pointer;
  font: inherit; font-size: 16px; font-weight: 600;
  color: #fff; background: var(--cs-accent); border: 0; border-radius: 6px;
}
.cs-signup button:hover, .cs-signup input[type="submit"]:hover { background: var(--cs-accent-dark); }

/* ---- Head row ---- */
.cs-head-row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 16px 32px; margin-bottom: 48px; }

/* ---- Post cards (from [cs_latest_posts]) ---- */
.cs-posts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.cs-post a { color: var(--cs-ink); text-decoration: none; display: block; }
.cs-post__img { aspect-ratio: 8 / 5; border-radius: var(--cs-radius); overflow: hidden; background: var(--cs-tint); }
.cs-post__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.cs-post a:hover img { transform: scale(1.03); }
.cs-post__date { margin-top: 20px !important; font-size: 14px; color: var(--cs-muted); }
.cs-post h3 { margin-top: 8px !important; font-family: var(--cs-serif); font-size: 28px; line-height: 1.15; }
.cs-post a:hover h3 { color: var(--cs-accent); }
.cs-post__excerpt { margin-top: 12px !important; font-size: 16px; color: var(--cs-ink-2); }

/* ---- Podcast ---- */
.cs-podcast-cover img { max-width: 460px; aspect-ratio: 1; object-fit: cover; background: #2E2C29; }
.cs-platforms { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 28px !important; }
.cs-platforms a { display: flex; align-items: center; justify-content: center; min-height: 48px; padding: 6px; background: #fff; border-radius: 6px; }
.cs-platforms img { max-height: 36px; width: auto; }
.cs-episodes { list-style: none !important; border-top: 1px solid #3A3834; margin-top: 16px !important; }
.cs-episodes li { padding: 20px 0; border-bottom: 1px solid #3A3834; }
.cs-episodes li + li { margin-top: 0; }
.cs-episodes a { font-family: var(--cs-serif); font-size: 24px; line-height: 1.2; text-decoration: none; }
.cs-episodes p { margin-top: 8px !important; font-size: 15px; color: #B5AFA5 !important; }

/* ---- In the media ---- */
.cs-home .cs-media-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 48px; border-top: 1px solid var(--cs-ink); }
.cs-media { padding: 28px 28px 32px 0; border-bottom: 1px solid var(--cs-line); display: flex; flex-direction: column; gap: 10px; }
.cs-media h3 { font-family: var(--cs-serif); font-size: 26px; line-height: 1.15; }
.cs-media h3 a { color: var(--cs-ink); text-decoration: none; }
.cs-media h3 a:hover { color: var(--cs-accent); }
.cs-media p { color: var(--cs-ink-2); font-size: 16px; flex: 1; }
.cs-media .cs-link { font-size: 15px; }

/* ---- Events ---- */
.cs-home .cs-events { margin-top: 48px; border-top: 1px solid var(--cs-ink); }
.cs-event { display: grid; grid-template-columns: 240px minmax(0, 1fr) auto; gap: 16px 40px; padding: 32px 0; border-bottom: 1px solid #D6D0C5; align-items: start; }
.cs-event__date { font-family: var(--cs-serif); font-size: 26px; line-height: 1.2; color: var(--cs-ink); }
.cs-home .cs-event__when p:not(.cs-event__date) { color: var(--cs-muted); font-size: 16px; margin-top: 4px; }
.cs-event h3 { font-family: var(--cs-sans); font-size: 21px; font-weight: 600; line-height: 1.3; }
.cs-home .cs-event__body p { color: var(--cs-ink-2); font-size: 16px; margin-top: 10px; }
.cs-home .cs-details { margin-top: 16px; }
.cs-details summary { cursor: pointer; font-weight: 600; color: var(--cs-accent); min-height: 44px; display: flex; align-items: center; list-style: none; }
.cs-details summary::-webkit-details-marker { display: none; }
.cs-details summary::after { content: "+"; margin-left: 10px; font-size: 20px; font-weight: 400; }
.cs-details[open] summary::after { content: "–"; }

/* ---- Closing ---- */
.cs-closing { padding: clamp(80px, 10vw, 140px) 0; background: var(--cs-tint); }
.cs-home .cs-closing h2 + h2 { margin-top: 8px; }
.cs-closing em { color: var(--cs-accent); }

/* ==========================================================================
   Tablet & phone
   ========================================================================== */
@media (max-width: 980px) {
  .cs-hero__grid, .cs-split { grid-template-columns: minmax(0, 1fr); }
  .cs-hero__media { max-width: 560px; }
  .cs-home .cs-quotes { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .cs-home .cs-quote, .cs-home .cs-quote--lead { grid-column: span 1; }
  .cs-home .cs-quote--lead { grid-column: span 2; }
  .cs-posts, .cs-home .cs-media-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .cs-home .cs-event { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  .cs-home { font-size: 17px; }
  .cs-kn-strip__row { grid-template-columns: minmax(0, 1fr); }
  .cs-kn-strip a { padding: 18px 0; }
  .cs-kn-strip a + a { padding-left: 0; border-left: 0; border-top: 1px solid var(--cs-line); }
  .cs-home .cs-quotes, .cs-posts, .cs-home .cs-media-grid { grid-template-columns: minmax(0, 1fr); }
  .cs-home .cs-quote--lead { grid-column: span 1; }
  .cs-home .cs-quotes .cs-quote blockquote, .cs-home .cs-quotes .cs-quote--lead blockquote { padding: 26px 24px 24px; }
  .cs-media { padding-right: 0; }
  .cs-platforms { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cs-covers { grid-auto-columns: 46%; }
  .cs-actions .cs-btn { flex: 1 1 auto; }
}
@media (prefers-reduced-motion: reduce) {
  .cs-home * { transition: none !important; }
}

/* breathing room after lists and headings */
.cs-home .cs-split__text > ul + p, .cs-home .cs-split__text > figure, .cs-home .cs-split__text > figure + p { margin-top: 1.5em; }
.cs-home .cs-split__text > .cs-h2 + p:not(.cs-h3) { margin-top: 1.25em; }
