/* ===========================================================
   Case study pages — shared layout
   =========================================================== */

/* Reading progress bar */
.progress { position: fixed; top: 0; left: 0; height: 3px; width: 0; z-index: 200; background: linear-gradient(90deg, var(--amber), var(--coral), var(--magenta)); transition: width .1s linear; }

/* back link inside nav area */
.cs-back { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14.5px; color: var(--ink-soft); }
.cs-back:hover { color: var(--accent-ink); }
.cs-back .arrow { transition: transform .3s var(--ease); }
.cs-back:hover .arrow { transform: translateX(-4px); }

/* ---------- Hero ---------- */
.cs-hero { padding-top: 150px; padding-bottom: clamp(40px, 6vw, 70px); position: relative; overflow: hidden; }
.cs-hero .sunset { opacity: .5; }
.cs-hero-inner { position: relative; z-index: 1; }
.cs-kicker { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.cs-chip { font-size: 12.5px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; padding: 7px 14px; border-radius: 100px; background: var(--halo); color: var(--accent-ink); }
.cs-chip.alt { background: var(--surface-2); color: var(--ink-soft); }
.cs-hero h1 { font-family: var(--serif); font-weight: 400; font-size: clamp(40px, 7vw, 86px); line-height: .98; letter-spacing: -.015em; margin: 24px 0 0; max-width: 17ch; }
.cs-hero h1 em { font-style: italic; background: linear-gradient(105deg, var(--coral), var(--magenta) 65%, var(--violet)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.cs-hero .lead { margin-top: 26px; max-width: 60ch; }

.cs-meta { margin-top: 46px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; padding: 28px; border-radius: var(--r-lg); background: var(--surface); border: 1px solid var(--line-soft); box-shadow: var(--shadow-sm); }
.cs-meta .m span { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.cs-meta .m b { display: block; font-size: 16px; margin-top: 7px; color: var(--ink); font-weight: 600; }

/* big banner image under hero */
.cs-banner { margin-top: 44px; border-radius: var(--r-xl); overflow: hidden; box-shadow: var(--shadow-lg); border: 1px solid var(--line-soft); position: relative; z-index: 1; }
.cs-banner img { width: 100%; display: block; }

/* ---------- Prose section ---------- */
.cs-section { padding-block: clamp(54px, 8vw, 96px); }
.cs-section.tint { background: var(--bg-2); border-block: 1px solid var(--line-soft); }
.cs-grid { display: grid; grid-template-columns: 280px 1fr; gap: clamp(30px, 5vw, 70px); align-items: start; }
.cs-grid .side { position: sticky; top: 110px; }
.cs-grid .side .eyebrow { margin-bottom: 14px; }
.cs-grid .side h2 { font-family: var(--serif); font-weight: 400; font-size: clamp(28px, 3.6vw, 44px); line-height: 1.04; }
.cs-prose { font-size: clamp(16.5px, 1.6vw, 18.5px); color: var(--ink-soft); max-width: 68ch; }
.cs-prose > * + * { margin-top: 20px; }
.cs-prose h3 { font-size: 21px; color: var(--ink); margin-top: 38px; font-weight: 600; }
.cs-prose strong { color: var(--ink); font-weight: 600; }
.cs-prose .hl { color: var(--accent-ink); font-weight: 600; }
.cs-prose ul { display: grid; gap: 12px; margin-top: 8px; }
.cs-prose ul li { display: flex; gap: 12px; }
.cs-prose ul li::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); margin-top: 10px; flex: none; }

/* one big centered statement */
.cs-statement { max-width: 1000px; margin-inline: auto; text-align: center; }
.cs-statement p { font-family: var(--serif); font-weight: 400; font-size: clamp(26px, 4vw, 48px); line-height: 1.24; letter-spacing: -.01em; }
.cs-statement p .hl { background: linear-gradient(100deg, var(--coral), var(--magenta)); -webkit-background-clip: text; background-clip: text; color: transparent; }

/* ---------- Stat row ---------- */
.cs-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
.cs-stats .st { padding: 6px 0; }
.cs-stats .st b { font-family: var(--serif); font-weight: 400; font-size: clamp(46px, 6vw, 72px); line-height: 1; background: linear-gradient(120deg, var(--coral), var(--magenta)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.cs-stats .st span { display: block; margin-top: 10px; color: var(--ink-soft); font-size: 14.5px; max-width: 22ch; }

/* ---------- Images ---------- */
.cs-figure { border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line-soft); box-shadow: var(--shadow-md); background: var(--surface); }
.cs-figure img { width: 100%; display: block; }
.cs-figure.pad { padding: clamp(14px, 2.5vw, 30px); background: var(--bg-2); }
figure.cs-figure figcaption, .cs-cap { font-size: 13.5px; color: var(--muted); margin-top: 14px; text-align: center; }
.cs-two { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; align-items: center; }
.cs-two.text-left { grid-template-columns: 1fr 1.2fr; }
.cs-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.cs-gallery.two { grid-template-columns: repeat(2, 1fr); }

.cs-block-head { max-width: 760px; margin-bottom: 40px; }
.cs-block-head .eyebrow { margin-bottom: 14px; }
.cs-block-head h2 { font-family: var(--serif); font-weight: 400; font-size: clamp(30px, 4.6vw, 54px); line-height: 1.02; }
.cs-block-head p { margin-top: 16px; color: var(--ink-soft); font-size: clamp(16px,1.6vw,18px); }

/* feature row (icon + text) */
.cs-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.cs-feature { background: var(--surface); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 24px; transition: transform .4s var(--ease), border-color .3s; }
.cs-feature:hover { transform: translateY(-4px); border-color: var(--accent); }
.cs-feature .ic { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--halo); color: var(--accent-ink); margin-bottom: 14px; }
.cs-feature h4 { font-size: 17px; } .cs-feature p { font-size: 14px; color: var(--muted); margin-top: 8px; }

/* quote */
.cs-quote { max-width: 880px; margin-inline: auto; text-align: center; }
.cs-quote blockquote { font-family: var(--serif); font-weight: 400; font-size: clamp(24px, 3.6vw, 40px); line-height: 1.28; }
.cs-quote .mark { font-family: var(--serif); font-size: 80px; line-height: .5; color: var(--accent); opacity: .5; }
.cs-quote cite { display: block; margin-top: 22px; font-style: normal; font-size: 14.5px; color: var(--muted); }

/* process steps */
.cs-steps { display: grid; gap: 16px; }
.cs-step { display: grid; grid-template-columns: 64px 1fr; gap: 22px; align-items: start; padding: 24px; border: 1px solid var(--line-soft); border-radius: var(--r); background: var(--surface); }
.cs-step .n { font-family: var(--serif); font-size: 40px; line-height: 1; color: var(--accent); }
.cs-step h4 { font-size: 18px; } .cs-step p { font-size: 14.5px; color: var(--ink-soft); margin-top: 8px; }
.cs-step .tags { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 8px; }
.cs-step .tags span { font-size: 12px; padding: 4px 11px; border-radius: 100px; background: var(--bg-2); border: 1px solid var(--line-soft); color: var(--muted); }

/* color swatches */
.swatches { display: flex; gap: 14px; flex-wrap: wrap; }
.swatch { text-align: center; }
.swatch .sw { width: 84px; height: 84px; border-radius: 18px; box-shadow: var(--shadow-sm); border: 1px solid oklch(0.5 0 0 / .1); }
.swatch span { display: block; font-size: 12px; color: var(--muted); margin-top: 8px; }
.swatch code { display: block; font-family: var(--mono); font-size: 11px; color: var(--ink-soft); }

/* persona card */
.persona { display: grid; grid-template-columns: 240px 1fr; gap: 30px; padding: 30px; border: 1px solid var(--line-soft); border-radius: var(--r-lg); background: var(--surface); box-shadow: var(--shadow-sm); }
.persona .pp { aspect-ratio: 1; border-radius: var(--r); background: linear-gradient(150deg, var(--amber), var(--violet)); display: grid; place-content: center; color: #fff; }
.persona h3 { font-family: var(--serif); font-weight: 400; font-size: 40px; }
.persona .quote-line { font-style: italic; color: var(--muted); margin-top: 6px; }
.persona-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 32px; margin-top: 20px; }
.persona-cols h5 { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--accent-ink); margin-bottom: 8px; }
.persona-cols p, .persona-cols li { font-size: 14px; color: var(--ink-soft); }
.persona-cols ul { display: grid; gap: 6px; }
.persona-cols ul li { display: flex; gap: 8px; } .persona-cols ul li::before { content:"—"; color: var(--accent); }

/* ---------- Next project ---------- */
.cs-next { border-top: 1px solid var(--line-soft); }
.cs-next a { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 30px; padding-block: clamp(40px, 6vw, 70px); }
.cs-next .lbl { font-size: 13px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.cs-next h3 { font-family: var(--serif); font-weight: 400; font-size: clamp(32px, 6vw, 64px); line-height: 1; margin-top: 12px; transition: color .3s; }
.cs-next a:hover h3 { color: var(--accent-ink); }
.cs-next .circle { width: 76px; height: 76px; border-radius: 50%; border: 1.5px solid var(--line); display: grid; place-items: center; flex: none; transition: background .3s, color .3s, transform .5s var(--ease); }
.cs-next a:hover .circle { background: var(--accent); color: var(--on-accent); transform: scale(1.08); }

@media (max-width: 900px) {
  .cs-grid { grid-template-columns: 1fr; } .cs-grid .side { position: static; }
  .cs-meta { grid-template-columns: repeat(2, 1fr); }
  .cs-stats { grid-template-columns: repeat(2, 1fr); }
  .cs-two, .cs-two.text-left { grid-template-columns: 1fr; }
  .cs-gallery, .cs-gallery.two { grid-template-columns: 1fr 1fr; }
  .cs-features { grid-template-columns: 1fr; }
  .persona { grid-template-columns: 1fr; } .persona .pp { max-width: 200px; }
  .persona-cols { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .cs-meta { grid-template-columns: 1fr; } .cs-stats { grid-template-columns: 1fr 1fr; }
  .cs-gallery, .cs-gallery.two { grid-template-columns: 1fr; }
  .cs-next a { grid-template-columns: 1fr; } .cs-next .circle { display: none; }
}
