/* Modular layer for JSON-driven pages. The legacy styles.css remains the base visual system. */
.section {
  border-bottom: 1px solid var(--line);
  padding: var(--section-padding) 0;
}

.section-inner {
  width: min(100% - (var(--container-padding) * 2), var(--max-width));
  margin-inline: auto;
}

.section-label {
  display: inline-block;
  margin-bottom: 22px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.12em;
  line-height: 1;
  text-transform: uppercase;
}

.editorial-title {
  max-width: 1180px;
  font-family: var(--display, var(--font-main));
  font-size: var(--title-lg);
  font-weight: 400;
  line-height: var(--line-height-tight);
}

.editorial-text {
  max-width: 780px;
  color: #343430;
  font-size: var(--body-lg);
  line-height: var(--line-height-normal);
}

.kozo-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--grid-gap);
}

.kozo-button,
.kozo-button-secondary {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--ink);
  padding: 0 18px;
  font-size: 14px;
  font-weight: 800;
  line-height: 1;
  transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease;
}

.kozo-button {
  background: var(--ink);
  color: var(--white);
}

.kozo-button:hover,
.kozo-button:focus-visible {
  background: transparent;
  color: var(--ink);
}

.kozo-button-secondary {
  background: transparent;
  color: var(--ink);
}

.kozo-button-secondary:hover,
.kozo-button-secondary:focus-visible {
  background: var(--ink);
  color: var(--white);
}

.service-row {
  display: grid;
  grid-template-columns: minmax(84px, 0.18fr) minmax(220px, 0.52fr) minmax(0, 1fr);
  gap: var(--grid-gap);
  border-top: 1px solid var(--line);
  padding: clamp(24px, 3vw, 44px) 0;
}

.service-row__number,
.case-meta,
.tag-list {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.service-row h3,
.project-card h3,
.post-card h3 {
  font-family: var(--display, var(--font-main));
  font-size: clamp(26px, 3vw, 48px);
  font-weight: 400;
  line-height: 1;
}

.service-row p,
.project-card p,
.post-card p,
.content-block {
  color: #343430;
  font-size: clamp(16px, 1.2vw, 19px);
  line-height: var(--line-height-body);
}

.service-row ul,
.tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.service-row li,
.tag-list span {
  border: 1px solid var(--line);
  padding: 8px 10px;
  color: var(--muted);
  font-size: 12px;
}

.project-card,
.post-card {
  border-top: 1px solid var(--line);
}

[data-projects-list] .project-card {
  border-top-color: var(--ink);
}

[data-projects-list] .project-card:last-child {
  border-bottom: 1px solid var(--ink);
}

[data-featured-projects],
[data-projects-list],
[data-featured-posts],
[data-featured-post],
[data-posts-list] {
  margin-top: clamp(34px, 5vw, 62px);
}

.project-card a,
.project-card__static,
.post-card a {
  display: grid;
  grid-template-columns: minmax(220px, 0.58fr) minmax(0, 1fr);
  gap: var(--grid-gap);
  padding: clamp(28px, 4vw, 60px) 0;
}

.project-card a:hover h3,
.project-card a:focus-visible h3,
.post-card a:hover h3,
.post-card a:focus-visible h3 {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.12em;
}

.project-status {
  display: inline-block;
  margin-bottom: 16px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.1em;
  line-height: 1.2;
  text-transform: uppercase;
}

.project-detail__hero .project-status {
  margin-top: 24px;
  margin-bottom: 0;
}

.post-card--featured {
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--line);
  background: transparent;
  color: var(--ink);
}

.post-card--featured a {
  display: grid;
  grid-template-columns: minmax(150px, 0.22fr) minmax(0, 1fr);
  gap: var(--grid-gap);
  padding: clamp(32px, 4vw, 56px) 0;
}

.post-card--featured .case-meta,
.post-card--featured .post-card__action {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.thinking-featured-section [data-featured-post] {
  margin-top: clamp(24px, 3vw, 40px);
}

.post-card__rail {
  min-height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-start;
  grid-column: 1;
  grid-row: 1 / span 2;
  border-right: 1px solid var(--line);
  padding-right: var(--grid-gap);
}

.post-card__number {
  color: var(--ink);
  font-family: var(--display, var(--font-main));
  font-size: clamp(58px, 6.5vw, 96px);
  font-weight: 300;
  line-height: 0.82;
}

.post-card__label {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.post-card--featured .post-card__media {
  grid-column: 2;
}

.post-card--featured .post-card__body {
  grid-column: 2;
  max-width: 830px;
}

.post-card--featured h3 {
  color: var(--ink);
  font-size: clamp(40px, 5.3vw, 80px);
  letter-spacing: 0;
  line-height: 0.95;
}

.post-card--featured p {
  max-width: 680px;
  color: #343430;
}

.post-card--featured .post-card__action {
  width: min(100%, 280px);
  display: flex;
  justify-content: space-between;
  gap: 20px;
  margin-top: clamp(10px, 2vw, 24px);
  border-top: 1px solid var(--line);
  padding-top: 14px;
  color: var(--ink);
}

.post-card--featured a:hover h3,
.post-card--featured a:focus-visible h3 {
  text-decoration-color: var(--accent);
}

/* Origin page: neutral signals preserve the site's monochrome visual system. */
.about-page {
  --about-accent: var(--accent);
  --about-accent-on-dark: var(--accent-on-dark);
}

.about-hero {
  padding: 0;
  background: var(--dark);
  color: var(--white);
}

.about-hero .section-inner {
  display: grid;
  grid-template-columns: minmax(130px, 0.2fr) minmax(0, 1fr);
  gap: var(--grid-gap);
  min-height: min(760px, calc(100svh - 88px));
  padding: clamp(44px, 6vw, 82px) 0;
  align-content: space-between;
}

.about-page .section:not(.about-hero) {
  padding: clamp(72px, 8vw, 128px) 0;
}

.about-page .editorial-title {
  font-size: clamp(38px, 4.85vw, 70px);
  line-height: 0.94;
}

.about-hero__index,
.about-page .section-label--accent {
  color: var(--about-accent);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.1em;
  line-height: 1.2;
  text-transform: uppercase;
}

.about-hero__index {
  color: var(--about-accent-on-dark);
}

.about-hero__content {
  max-width: 1100px;
  min-width: 0;
}

.about-hero h1 {
  max-width: 1050px;
  font-family: var(--display, var(--font-main));
  font-size: clamp(52px, 7vw, 112px);
  font-weight: 400;
  letter-spacing: 0;
  line-height: 0.88;
}

.about-hero h1 span {
  color: var(--about-accent-on-dark);
}

.about-hero p {
  max-width: 650px;
  margin-top: clamp(32px, 5vw, 72px);
  color: rgba(255, 255, 255, 0.82);
  font-size: var(--body-lg);
  line-height: var(--line-height-normal);
}

.about-split {
  display: grid;
  grid-template-columns: minmax(0, 0.32fr) minmax(0, 1fr);
  gap: var(--grid-gap);
}

.about-split__body {
  max-width: 780px;
}

.about-split .editorial-text {
  margin-top: clamp(28px, 4vw, 52px);
}

.about-split__body p + p {
  margin-top: 18px;
}

.about-definition {
  border-top: 1px solid var(--ink);
  padding-top: clamp(34px, 4vw, 56px);
}

.about-definition__word {
  display: block;
  color: var(--about-accent);
  font-family: var(--display, var(--font-main));
  font-size: clamp(68px, 13vw, 190px);
  font-weight: 400;
  letter-spacing: 0;
  line-height: 0.82;
}

.about-definition__meaning {
  max-width: 620px;
  margin-top: clamp(32px, 5vw, 68px);
  color: #343430;
  font-size: var(--body-lg);
  line-height: var(--line-height-normal);
}

.about-definition__meaning + .about-definition__meaning {
  margin-top: 20px;
}

.about-principles {
  margin-top: clamp(34px, 5vw, 64px);
  padding-top: clamp(10px, 1.2vw, 18px);
  border-top: 1px solid var(--ink);
}

.about-principles li {
  display: grid;
  grid-template-columns: minmax(54px, 0.1fr) minmax(0, 1fr);
  gap: var(--grid-gap);
  border-bottom: 1px solid var(--line);
  padding: clamp(22px, 3.1vw, 44px) 0;
}

.about-principles span {
  color: var(--about-accent);
  font-size: 12px;
  font-weight: 800;
}

.about-principles p {
  max-width: 930px;
  font-family: var(--display, var(--font-main));
  font-size: clamp(28px, 3.55vw, 58px);
  font-weight: 400;
  line-height: 1;
}

.about-method {
  background: var(--soft);
}

.about-method__flow {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin-top: clamp(38px, 5vw, 76px);
  border-top: 1px solid var(--ink);
  border-left: 1px solid var(--line);
}

.about-method__flow li {
  min-height: 250px;
  display: flex;
  flex-direction: column;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: clamp(20px, 2.2vw, 34px);
}

.about-method__flow span {
  color: var(--about-accent);
  font-size: 12px;
  font-weight: 800;
}

.about-method__flow h3 {
  margin-top: auto;
  font-family: var(--display, var(--font-main));
  font-size: clamp(25px, 2.2vw, 38px);
  font-weight: 400;
  line-height: 1;
}

.about-contrast {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: clamp(36px, 5vw, 72px);
  border-top: 1px solid var(--ink);
  border-left: 1px solid var(--line);
}

.about-page .section > .about-contrast {
  margin-top: 0;
}

.about-contrast article {
  min-height: 280px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: clamp(26px, 4vw, 56px);
}

.about-contrast article:last-child {
  background: var(--ink);
  color: var(--white);
}

.about-contrast article:last-child .section-label--accent {
  color: var(--about-accent-on-dark);
}

.about-contrast h3 {
  max-width: 570px;
  margin-top: 38px;
  font-family: var(--display, var(--font-main));
  font-size: clamp(30px, 3.8vw, 60px);
  font-weight: 400;
  line-height: 0.98;
}

.about-contrast p {
  max-width: 560px;
  margin-top: 20px;
  color: #343430;
  font-size: var(--body-lg);
  line-height: var(--line-height-normal);
}

.about-contrast article:last-child p {
  color: rgba(255, 255, 255, 0.76);
}

.about-cta {
  background: var(--dark);
  color: var(--white);
}

.about-cta__layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 0.4fr);
  gap: var(--grid-gap);
  align-items: end;
}

.about-cta h2 {
  max-width: 900px;
  color: var(--about-accent-on-dark);
  font-family: var(--display, var(--font-main));
  font-size: clamp(52px, 8vw, 124px);
  font-weight: 400;
  line-height: 0.88;
}

.about-cta p {
  max-width: 480px;
  color: rgba(255, 255, 255, 0.8);
  font-size: var(--body-lg);
  line-height: var(--line-height-normal);
}

.about-cta .kozo-button {
  margin-top: 28px;
  border-color: var(--about-accent-on-dark);
  background: var(--about-accent-on-dark);
  color: var(--ink);
}

.about-cta .kozo-button:hover,
.about-cta .kozo-button:focus-visible {
  background: transparent;
  color: var(--about-accent-on-dark);
}

.thinking-categories {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 30px;
}

.thinking-categories__button {
  min-height: 40px;
  border: 1px solid var(--line);
  background: transparent;
  padding: 0 12px;
  color: var(--ink);
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
}

.thinking-categories__button:hover,
.thinking-categories__button:focus-visible,
.thinking-categories__button[aria-pressed="true"] {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--white);
}

.project-card__media,
.post-card__media,
.media-frame {
  overflow: hidden;
  border: 1px solid var(--line);
  background: var(--soft);
  aspect-ratio: 3 / 2;
}

.project-card__media,
.project-detail__media .media-frame {
  width: 100%;
  margin: 0;
  aspect-ratio: 16 / 9;
  background: var(--ink);
}

.project-card__media img,
.post-card__media img,
.media-frame img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center;
}

.project-card__media img,
.project-detail__media .media-frame img {
  object-fit: contain;
}

@media (min-width: 981px) {
  [data-projects-list] .project-card:nth-child(even) a,
  [data-projects-list] .project-card:nth-child(even) .project-card__static {
    grid-template-columns: minmax(0, 1fr) minmax(220px, 0.58fr);
  }

  [data-projects-list] .project-card:nth-child(even) .project-card__media {
    grid-column: 2;
    grid-row: 1;
  }

  [data-projects-list] .project-card:nth-child(even) .project-card__body {
    grid-column: 1;
    grid-row: 1;
  }
}

.kozo-span-4 {
  grid-column: span 4;
}

.kozo-span-8 {
  grid-column: span 8;
}

.project-card__body,
.post-card__body {
  display: grid;
  align-content: start;
  gap: 18px;
}

.case-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.content-block {
  max-width: 820px;
}

.content-block + .content-block {
  margin-top: 28px;
}

.content-block h2 {
  font-family: var(--display, var(--font-main));
  font-size: clamp(30px, 4vw, 58px);
  font-weight: 400;
  line-height: 1;
}

.content-block h3 {
  font-size: clamp(21px, 2.2vw, 34px);
  line-height: 1.15;
}

.content-block blockquote {
  margin: 0;
  border-left: 1px solid var(--ink);
  padding-left: 24px;
  color: var(--ink);
  font-size: clamp(22px, 2.5vw, 34px);
  line-height: 1.25;
}

.content-block ul {
  display: grid;
  gap: 10px;
  padding-left: 1.1em;
}

.content-block li {
  list-style: disc;
}

.thinking-article__header .section-inner,
.thinking-article__body {
  max-width: min(100% - (var(--container-padding) * 2), 820px);
}

.thinking-article__body {
  max-width: min(100% - (var(--container-padding) * 2), 760px);
}

.thinking-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 30px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.thinking-breadcrumb a:hover,
.thinking-breadcrumb a:focus-visible {
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 0.14em;
}

.thinking-article__header .case-meta {
  margin-bottom: 22px;
}

.thinking-article__header .editorial-text {
  margin-top: 26px;
}

.thinking-article__author {
  margin-top: 24px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.thinking-article__media .media-frame {
  aspect-ratio: 16 / 9;
}

.thinking-article__body .content-block + .content-block {
  margin-top: 20px;
}

.thinking-article__body .content-block--heading {
  margin-top: clamp(56px, 7vw, 88px) !important;
}

.thinking-article__body .content-block--subheading,
.thinking-article__body .content-block--quote {
  margin-top: clamp(38px, 5vw, 60px) !important;
}

.thinking-article__body .content-block--list {
  margin-top: 26px !important;
}

.thinking-article__link {
  margin-top: 44px !important;
}

.thinking-inline-link {
  color: var(--ink);
  font-weight: 700;
  text-decoration: underline;
  text-decoration-color: var(--accent);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
}

.thinking-inline-link:hover,
.thinking-inline-link:focus-visible {
  color: var(--accent);
}

.thinking-article-cta {
  margin-top: clamp(56px, 7vw, 88px) !important;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--line);
  padding: clamp(24px, 4vw, 42px) 0;
}

.thinking-article-cta h2 {
  max-width: 700px;
  font-family: var(--display, var(--font-main));
  font-size: clamp(28px, 3.4vw, 48px);
  font-weight: 400;
  line-height: 1;
}

.thinking-article-cta p {
  max-width: 680px;
  margin-top: 18px;
  color: var(--text-soft);
}

.thinking-article-cta .kozo-button {
  margin-top: 24px;
}

.thinking-conclusion {
  margin-top: clamp(56px, 7vw, 88px) !important;
  border-top: 1px solid var(--ink);
  padding-top: 20px;
}

.thinking-conclusion > span {
  color: var(--accent);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.thinking-conclusion h2 {
  margin-top: 16px;
}

.thinking-conclusion p {
  margin-top: 16px;
}

.thinking-related .thinking-related__list {
  margin-top: clamp(34px, 5vw, 62px);
}

.kozo-empty,
.kozo-error {
  border-top: 1px solid var(--line);
  padding: clamp(28px, 4vw, 52px) 0;
  color: var(--muted);
  font-size: var(--body-lg);
}
