/* =====================================================================
   River Tech — column.css
   /column/ (index) and /column/<slug>/ (articles). The HTML is generated by tools/build_column.py
   from content/column/*.md; edit the Markdown and the script, never the generated pages.
   Builds on base.css tokens and primitives (docs/components.md); no foundation overrides.
   1 page tokens · 2 head · 3 breadcrumb + meta · 4 toc · 5 prose · 6 faq · 7 cta band · 8 lists · 9 SP · 10 forced colours
   ===================================================================== */

/* 1. Page tokens ------------------------------------------------------ */
.col {
  --col-head-top: 164px;                 /* same cap line as the privacy/contact heads */
  --col-text: 42em;                      /* reading measure for Japanese body copy */
  --col-split: minmax(0, 1fr) minmax(0, 2.4fr);
}

/* Japanese line breaking (same recipe as works.css / service.css, docs/components.md 16) */
.col :is(h1, h2, h3, p, li, dd, summary, td, th) {
  word-break: keep-all;
  word-break: auto-phrase;
  overflow-wrap: anywhere;
  text-wrap: pretty;
}

/* 2. Head ------------------------------------------------------------- */
.col-hero { padding-top: var(--col-head-top); }
.col-head { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-24); }
.col-head__en { max-width: 100%; }
.col-head__sub { font-size: var(--fs-kicker); line-height: 1.4; letter-spacing: var(--ls-jp); }
.col-intro { max-width: var(--col-text); margin-top: var(--space-56); line-height: 1.85; }

.col-article__title {
  max-width: 24em;
  font-size: var(--fs-catch-jp);
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: var(--ls-jp);
  text-wrap: balance;
}

/* 3. Breadcrumb + meta ------------------------------------------------ */
.col-crumbs ol, .col-toc__list, .col-list, .col-faq__list { margin: 0; padding: 0; list-style: none; }
.col-crumbs ol { display: flex; flex-wrap: wrap; gap: 4px 0; font-size: var(--fs-small); color: var(--fg-mute); }
.col-crumbs li { display: flex; align-items: center; }
.col-crumbs li + li::before { content: "/"; padding-inline: .6em; color: var(--line); }
.col-crumbs a { text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: .22em; transition: color var(--d-fast); }
.col-crumbs [aria-current] { max-width: 28em; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

.col-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; font-size: var(--fs-small); color: var(--fg-2); }
.col-meta time { font-family: var(--ff-latin); font-variant-numeric: tabular-nums; }
.col-cat {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 2px 10px;
  border: 1px solid var(--chip-line);
  border-radius: 999px;
  font-size: var(--fs-small);
  line-height: 1.4;
}
.col-lead { max-width: var(--col-text); font-size: var(--fs-ui-l); font-weight: 300; line-height: 1.9; }
.col-lead > * + * { margin-top: .8em; }

/* 4. Table of contents + body grid ------------------------------------ */
.col-layout {
  display: grid;
  grid-template-columns: var(--col-split);
  gap: var(--space-40) var(--space-56);
  margin-top: var(--space-80);
  padding-top: var(--space-40);
  border-top: 1px solid var(--line);
}
.col-toc { align-self: start; }
.col-toc__list { margin-top: 16px; counter-reset: toc; }
.col-toc__list li { display: flex; gap: 10px; padding-block: 5px; font-size: var(--fs-label); line-height: 1.6; counter-increment: toc; }
.col-toc__list li::before { content: counter(toc, decimal-leading-zero); flex: none; width: 1.8em; font-family: var(--ff-latin); font-weight: 300; color: var(--fg-mute); }
.col-toc__list a { text-decoration: underline; text-decoration-color: var(--line); text-decoration-thickness: 1px; text-underline-offset: .22em; transition: color var(--d-fast), text-decoration-color var(--d-fast); }
@media (min-width: 769px) {
  .col-toc { position: sticky; top: calc(var(--header-h) + 16px); }
}

/* 5. Prose ------------------------------------------------------------ */
.col-body { max-width: var(--col-text); min-width: 0; line-height: 1.95; }
.col-body > * + * { margin-top: 1.1em; }
.col-body h2 {
  margin-top: var(--space-80);
  padding-top: var(--space-24);
  border-top: 1px solid var(--line);
  font-size: var(--fs-row);
  font-weight: 600;
  line-height: 1.5;
  scroll-margin-top: calc(var(--header-h) + 16px);
}
.col-body > h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.col-body h3 { margin-top: 2.2em; font-size: var(--fs-ui-l); font-weight: 600; line-height: 1.6; }
.col-body h2 + *, .col-body h3 + * { margin-top: .8em; }
.col-body ul, .col-body ol { padding-inline-start: 1.4em; }
.col-body ul { list-style: disc; }
.col-body ol { list-style: decimal; }
.col-body li + li { margin-top: .4em; }
.col-body li::marker { color: var(--fg-mute); }
.col-body strong { font-weight: 600; }
.col-body a { text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 1px; text-underline-offset: .22em; transition: color var(--d-fast); }
.col-body blockquote { padding: var(--space-24); border-left: 2px solid var(--accent); background: var(--c-white); }
.col-body code { font-family: var(--ff-latin); font-size: .92em; padding: 1px 4px; background: var(--c-white); }
.col-body hr { border: 0; border-top: 1px solid var(--line); }

.col-figure img { display: block; width: 100%; height: auto; }
.col-body .col-figure { margin-block: 2em; }
.col-table { overflow-x: auto; }
.col-table table { width: 100%; min-width: 32em; border-collapse: collapse; font-size: var(--fs-label); line-height: 1.7; }
.col-table th, .col-table td { padding: 12px 16px 12px 0; border-bottom: 1px solid var(--line); text-align: start; vertical-align: top; }
.col-table th:last-child, .col-table td:last-child { padding-inline-end: 0; }
.col-table thead th { font-weight: 600; border-bottom-color: var(--fg-mute); }

/* 6. FAQ (native <details>) ------------------------------------------- */
.col-faq { margin-top: var(--space-80); }
.col-faq__title { font-size: var(--fs-row); font-weight: 600; line-height: 1.5; }
.col-faq__list { margin-top: var(--space-24); border-top: 1px solid var(--line); }
.col-faq__item { border-bottom: 1px solid var(--line); }
.col-faq__q {
  display: grid;
  grid-template-columns: 2.2em minmax(0, 1fr) 16px;
  align-items: baseline;
  gap: 12px;
  padding-block: 20px;
  cursor: pointer;
  list-style: none;
  font-weight: 600;
  line-height: 1.7;
}
.col-faq__q::-webkit-details-marker { display: none; }
.col-faq__key { font-family: var(--ff-accent); font-style: italic; color: var(--fg-mute); transition: color var(--d-fast); }
.col-faq__icon { position: relative; width: 12px; height: 12px; align-self: center; }
.col-faq__icon::before, .col-faq__icon::after { content: ""; position: absolute; top: 50%; left: 0; width: 12px; height: 1px; background: currentColor; transition: transform var(--d-base) var(--ease-cubic); }
.col-faq__icon::after { transform: rotate(90deg); }
.col-faq__item[open] .col-faq__icon::after { transform: rotate(0deg); }
.col-faq__a { padding: 0 28px 24px calc(2.2em + 12px); line-height: 1.9; }

/* 7. CTA band (dark) -------------------------------------------------- */
.col-cta { margin-top: var(--space-120); padding-block: var(--space-96); }
.col-cta__inner { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-40); }
.col-cta__kicker { font-size: var(--fs-label); color: var(--fg-mute); }
.col-cta__title { max-width: 24em; margin-top: 12px; font-size: var(--fs-catch-jp); font-weight: 500; line-height: 1.6; letter-spacing: var(--ls-jp); }
.col-cta__text { max-width: 36em; margin-top: 16px; color: var(--fg-2); line-height: 1.85; }
.col-cta__actions { display: flex; flex-wrap: wrap; gap: 16px 32px; }

/* 8. Article lists (index + related) ---------------------------------- */
.col-list { border-top: 1px solid var(--line); }
.col-item { border-bottom: 1px solid var(--line); }
.col-item__link {
  display: grid;
  grid-template-columns: 9rem minmax(0, 1fr);
  gap: 8px var(--space-40);
  padding-block: var(--space-40);
  transition: color var(--d-fast);
}
.col-item__meta { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; font-size: var(--fs-small); color: var(--fg-mute); }
.col-item__meta time { font-family: var(--ff-latin); font-variant-numeric: tabular-nums; }
.col-item__title { font-size: var(--fs-row); font-weight: 600; line-height: 1.5; }
.col-item__desc { margin-top: 12px; max-width: var(--col-text); font-size: var(--fs-label); line-height: 1.85; color: var(--fg-2); }
.col-item__title span { background-image: linear-gradient(currentColor, currentColor); background-size: 0 1px; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--d-base) var(--ease-cubic); }

.col-index { margin-top: var(--space-80); }
.col-index__group + .col-index__group { margin-top: var(--space-96); }
.col-index__label { margin-bottom: var(--space-24); }
.col-related { margin-top: var(--space-120); }
.col-related .label { margin-bottom: var(--space-24); }
.col-back { margin-top: var(--space-80); }
.col-related { padding-bottom: var(--space-120); }
.col-index { padding-bottom: var(--space-40); }

@media (hover: hover) and (pointer: fine) {
  .col-item__link:hover .col-item__title span { background-size: 100% 1px; }
  .col-item__link:hover .col-item__title { color: var(--accent); }
  .col-faq__q:hover .col-faq__key { color: var(--accent); }
  .col-toc__list a:hover, .col-crumbs a:hover, .col-body a:hover { color: var(--accent); text-decoration-color: currentColor; }
}
.col-item__link:focus-visible .col-item__title span { background-size: 100% 1px; }
.col-item__link:focus-visible .col-item__title { color: var(--accent); }
.col-faq__q:focus-visible .col-faq__key { color: var(--accent); }

/* 9. SP --------------------------------------------------------------- */
@media (max-width: 768px) {
  .col { --col-head-top: 140px; }
  .col-layout { grid-template-columns: minmax(0, 1fr); }
  .col-toc { padding-bottom: var(--space-24); border-bottom: 1px solid var(--line); }
  .col-item__link { grid-template-columns: minmax(0, 1fr); }
  .col-item__meta { flex-direction: row; align-items: center; gap: 12px; }
  .col-faq__a { padding-inline: 0; }
  .col-crumbs [aria-current] { max-width: 16em; }
}

/* 10. Forced colours: the FAQ +/− is drawn with background-color -------- */
@media (forced-colors: active) {
  .col-faq__icon::before, .col-faq__icon::after { forced-color-adjust: none; background-color: CanvasText; }
}

/* Topic hubs and pillar line (tools/build_column.py) */
.col-pillar { font-size: var(--fs-label); color: var(--fg-2); }
a.col-cat { transition: color var(--d-fast), border-color var(--d-fast); }
@media (hover: hover) and (pointer: fine) { a.col-cat:hover { color: var(--accent); border-color: var(--accent); } }
a.col-cat:focus-visible { color: var(--accent); border-color: var(--accent); }
.col-hub-others { margin-top: var(--space-56); }
