/* ============================================
 * Autais Corporate Site — Components & Pages
 * Tokens & base: assets/css/tokens.css
 * ============================================ */

/* ===== Viewport overflow guard =====
 * 主因: モバイルドロワー (.nav-menu) の transform: translateX(100%) が
 * body.scrollWidth を viewport の倍に押し広げる。
 * 対策: html/body にグローバル overflow-x を付けると一部環境で
 * position: sticky の追従が壊れるので、原因要素を含む .nav 側で
 * 局所的に clip する（横のみ・縦は visible でドロワーは展開可能）。
 */

/* ===== Top bar ===== */
.topbar {
  background: var(--fg);
  color: var(--bg);
  font-size: var(--fs-xs);
  padding: var(--space-2) 24px;
  text-align: center;
}
.topbar a {
  color: var(--info-soft);
  text-decoration: underline;
  text-underline-offset: 2px;
  margin-left: var(--space-2);
}

/* ===== Navigation ===== */
.nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--line);
  /* 横はみ出し（モバイルドロワーの translateX(100%) 状態）をローカルで抑制。
     縦は visible のまま、ドロワー本体は下方向に展開可能。 */
  overflow-x: clip;
  overflow-y: visible;
}
.nav-inner {
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-3) 24px;
  gap: var(--space-6);
}
.logo {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  text-decoration: none;
}
.logo-img {
  display: block;
  height: 32px;
  width: auto;
}
.logo-img-foot {
  height: 28px;
}
/* PC のみ横並び flex（モバイルではアコーディオンが制御） */
@media (min-width: 981px) {
  .nav .nav-primary {
    display: flex;
    gap: var(--space-8);
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--fg-2);
  }
}
.nav ul a:hover {
  color: var(--p);
}
.nav-actions {
  display: flex;
  gap: var(--space-2);
  align-items: center;
}
.nav-link {
  padding: var(--space-3) 14px;
  font-size: var(--fs-sm);
  color: var(--fg-2);
  font-weight: 600;
}
.btn-doc {
  padding: var(--space-3) 16px;
  border: 1.5px solid var(--p);
  color: var(--p);
  border-radius: var(--r);
  font-size: var(--fs-sm);
  font-weight: 700;
  background: var(--bg);
  transition: 0.2s;
}
.btn-doc:hover {
  background: var(--p-soft);
}
.btn-cta {
  padding: var(--space-3) 18px;
  background: var(--p);
  color: var(--bg);
  border-radius: var(--r);
  font-size: var(--fs-sm);
  font-weight: 700;
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
  transition: 0.2s;
}
.btn-cta:hover {
  background: var(--p-dark);
  transform: translateY(-1px);
}

/* ===== Hero ===== */
.hero {
  padding: var(--space-20) 24px 100px;
  background: linear-gradient(180deg, var(--bg-2) 0%, var(--bg) 100%);
  position: relative;
  overflow: hidden;
}
.hero::before {
  content: "";
  position: absolute;
  top: -100px;
  right: -200px;
  width: 600px;
  height: 600px;
  background: radial-gradient(circle, rgba(37, 99, 235, 0.08), transparent 70%);
  border-radius: var(--r-pill);
}
.hero::after {
  content: "";
  position: absolute;
  bottom: -200px;
  left: -100px;
  width: 500px;
  height: 500px;
  background: radial-gradient(
    circle,
    rgba(16, 185, 129, 0.06),
    transparent 70%
  );
  border-radius: var(--r-pill);
}
/* PC: 写真は右半分のみ静止1枚・斜め区切り・白オーバーレイ */
.hero-bg {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: auto;
  width: 52%;
  overflow: hidden;
  z-index: 0;
  pointer-events: none;
  clip-path: polygon(18% 0, 100% 0, 100% 100%, 0 100%);
}
.hero-bg-img {
  position: absolute;
  inset: 0;
  display: block;
}
.hero-bg-img > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
.hero-bg-overlay {
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.55);
  display: block;
}

/* スマホ: 写真1枚のみ・上部に固定・斜め区切り・白オーバーレイ */
@media (max-width: 768px) {
  .hero-bg {
    top: 0;
    left: 0;
    right: 0;
    bottom: auto;
    width: 100%;
    height: 260px;
    clip-path: polygon(0 0, 100% 0, 100% 78%, 0 100%);
  }
  .hero-bg-overlay {
    background: rgba(255, 255, 255, 0.45);
  }
}
.hero-inner {
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: var(--space-16);
  align-items: center;
  position: relative;
  z-index: 1;
}
.hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) 14px;
  background: var(--bg);
  border: 1px solid var(--p-soft);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--p);
  margin-bottom: var(--space-6);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.hero-eyebrow .new {
  padding: 2px var(--space-2);
  background: var(--p);
  color: var(--bg);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 700;
}
.hero h1 {
  font-size: clamp(36px, 5.2vw, 64px);
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.2;
  margin-bottom: var(--space-6);
  color: var(--fg);
}
.hero h1 .hl {
  color: var(--p);
  position: relative;
  display: inline-block;
}
.hero h1 .hl::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: var(--space-1);
  height: 8px;
  background: rgba(37, 99, 235, 0.15);
  z-index: -1;
  border-radius: var(--r);
}
.hero-sub {
  font-size: var(--fs-lg);
  line-height: 1.85;
  color: var(--fg-2);
  margin-bottom: var(--space-10);
  max-width: 560px;
}
.hero-sub strong {
  color: var(--fg);
  font-weight: 700;
}
.hero-actions {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
  margin-bottom: var(--space-8);
}
.btn-l {
  padding: var(--space-4) 28px;
  font-size: var(--fs-base);
  font-weight: 700;
  border-radius: var(--r);
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  transition: 0.2s;
  cursor: pointer;
  border: none;
}
.btn-l-p {
  background: var(--p);
  color: var(--bg);
  box-shadow: 0 4px 14px rgba(37, 99, 235, 0.3);
}
.btn-l-p:hover {
  background: var(--p-dark);
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(37, 99, 235, 0.4);
}
.btn-l-o {
  background: var(--bg);
  color: var(--p);
  border: 1.5px solid var(--p);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.btn-l-o:hover {
  background: var(--p-soft);
}
.hero-trust {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-5);
  font-size: var(--fs-sm);
  color: var(--muted);
}
.hero-trust span {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.hero-trust .ck {
  color: var(--accent);
  font-weight: 700;
}
.hero-trust .ck.mi,
.ctabig-trust .ck.mi {
  font-size: var(--fs-lg);
  font-variation-settings:
    "FILL" 1,
    "wght" 600,
    "GRAD" 0,
    "opsz" 20;
}

/* ===== Hero illustration (chat UI mock) ===== */
.hero-vis {
  position: relative;
  min-width: 0;
  max-width: 100%;
}

/* Tabs */
.vis-tabs {
  position: relative;
  margin-bottom: var(--space-4);
  overflow: hidden;
  width: 100%;
  max-width: 100%;
}
.vis-tabs::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 32px;
  background: linear-gradient(90deg, transparent, var(--bg-2));
  pointer-events: none;
  z-index: 2;
}
.vis-tabs-track {
  display: flex;
  gap: var(--space-2);
  overflow-x: auto;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding: var(--space-1) 32px 4px 0;
}
.vis-tabs-track::-webkit-scrollbar {
  display: none;
}
.vis-tab {
  flex-shrink: 0;
  padding: var(--space-2) 14px;
  font-size: var(--fs-xs);
  font-weight: 700;
  font-family: inherit;
  border: 1px solid var(--line);
  background: var(--bg);
  color: var(--fg-2);
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: 0.2s;
  white-space: nowrap;
  letter-spacing: 0.01em;
}
.vis-tab:hover {
  border-color: var(--p);
  color: var(--p);
}
.vis-tab.active {
  background: var(--p);
  color: var(--bg);
  border-color: var(--p);
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25);
}

/* Animated messages */
.vis-msg-anim {
  opacity: 0;
  transform: translateY(8px);
  animation: msgIn 0.36s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}
@keyframes msgIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.vis-bubble-text::after {
  content: "▍";
  display: inline-block;
  margin-left: 1px;
  color: var(--p);
  animation: blinkCaret 0.8s steps(1) infinite;
  opacity: 0.7;
  font-weight: 400;
}
.vis-msg:last-child .vis-bubble-text::after {
  opacity: 0.7;
}
.vis-msg:not(:last-child) .vis-bubble-text::after {
  display: none;
}
@keyframes blinkCaret {
  0%,
  50% {
    opacity: 0.7;
  }
  51%,
  100% {
    opacity: 0;
  }
}
.vis-card {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  box-shadow: 0 12px 40px rgba(15, 23, 42, 0.08);
  overflow: hidden;
}
.vis-bar {
  padding: var(--space-3) 14px;
  background: var(--bg-2);
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-xs);
  color: var(--muted-2);
}
.vis-bar .dots {
  display: flex;
  gap: var(--space-2);
  margin-right: var(--space-2);
}
.vis-bar .dots span {
  width: 9px;
  height: 9px;
  border-radius: var(--r-pill);
}
.vis-bar .dots span:nth-child(1) {
  background: var(--danger);
}
.vis-bar .dots span:nth-child(2) {
  background: var(--warm);
}
.vis-bar .dots span:nth-child(3) {
  background: var(--accent);
}
.vis-body {
  padding: var(--space-5);
}
.vis-msg {
  display: flex;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
  align-items: flex-start;
}
.vis-avatar {
  width: 32px;
  height: 32px;
  border-radius: var(--r-pill);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--bg);
  font-size: var(--fs-sm);
  font-weight: 700;
  flex-shrink: 0;
}
.vis-avatar.user {
  background: linear-gradient(135deg, var(--warm), var(--danger));
}
.vis-avatar.ai {
  background: linear-gradient(135deg, var(--p), var(--accent));
}
.vis-bubble {
  padding: var(--space-3) 14px;
  border-radius: var(--r);
  font-size: var(--fs-sm);
  line-height: 1.6;
  flex: 1;
  max-width: 80%;
}
.vis-bubble.user {
  background: var(--bg-3);
  color: var(--fg);
  border-bottom-left-radius: 4px;
}
.vis-bubble.ai {
  background: var(--p-soft);
  color: var(--p-dark);
  border-bottom-left-radius: 4px;
}
.vis-bubble .tag {
  display: inline-block;
  padding: 2px var(--space-2);
  background: rgba(37, 99, 235, 0.12);
  color: var(--p);
  font-size: var(--fs-xs);
  font-weight: 700;
  border-radius: var(--r);
  margin-right: var(--space-2);
}
.vis-bubble .ok {
  color: var(--accent);
  font-weight: 700;
}
.vis-actions {
  padding: var(--space-4) 20px 18px;
  border-top: 1px dashed var(--line);
  display: flex;
  gap: var(--space-2);
  flex-wrap: wrap;
  margin: 0;
}
.vis-actions span {
  padding: var(--space-2) 10px;
  background: var(--bg-3);
  border-radius: var(--r);
  font-size: var(--fs-xs);
  color: var(--fg-2);
  font-weight: 600;
}
.vis-body {
  min-height: 240px;
  max-height: 360px;
  overflow-y: auto;
  scrollbar-width: thin;
}
.vis-body::-webkit-scrollbar {
  width: 4px;
}
.vis-body::-webkit-scrollbar-thumb {
  background: var(--line);
  border-radius: 2px;
}

/* ===== Logos strip ===== */
.logos {
  padding: var(--space-10) 24px;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.logos-inner {
  max-width: 1280px;
  margin: 0 auto;
}
.logos-inner .lbl {
  text-align: center;
  font-size: var(--fs-sm);
  color: var(--muted);
  font-weight: 600;
  margin-bottom: var(--space-5);
}
.logos-inner .grid {
  display: flex;
  gap: var(--space-12);
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
}
.logos-inner .item {
  font-weight: 700;
  color: var(--muted-2);
  font-size: var(--fs-xl);
  letter-spacing: -0.01em;
}

/* ===== Section ===== */
.section {
  padding: var(--space-24) var(--space-6);
}
.section-inner {
  max-width: 1280px;
  margin: 0 auto;
}
.section.alt {
  background: linear-gradient(180deg, var(--bg-2) 0%, var(--bg-3) 100%);
}
.section-head {
  text-align: center;
  margin-bottom: var(--space-16);
}
.section-head.left {
  text-align: left;
}
.section-tag {
  display: inline-block;
  padding: var(--space-2) 14px;
  background: var(--p-soft);
  color: var(--p);
  font-size: var(--fs-xs);
  font-weight: 700;
  border-radius: var(--r-pill);
  margin-bottom: var(--space-4);
  letter-spacing: 0.04em;
}
.section-title {
  font-size: clamp(28px, 3.8vw, 42px);
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.3;
  margin-bottom: var(--space-4);
}
.section-title .hl {
  color: var(--p);
}
.section-sub {
  font-size: var(--fs-lg);
  color: var(--fg-2);
  line-height: 1.85;
  max-width: 680px;
  margin: 0 auto;
}
.section-head.left .section-sub {
  margin: 0;
}

/* ===== Cards ===== */
.grid3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-6);
}
.card {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-8);
  transition: 0.25s;
  display: flex;
  flex-direction: column;
}
.card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.06);
  border-color: var(--p-soft);
}
.card-num {
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--p);
  letter-spacing: 0.05em;
  margin-bottom: var(--space-4);
}
.card-icon {
  width: 56px;
  height: 56px;
  border-radius: var(--r);
  background: linear-gradient(135deg, var(--p-soft), var(--bg));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--fs-4xl);
  margin-bottom: var(--space-5);
  border: 1px solid var(--p-soft);
}
.card h3 {
  font-size: var(--fs-2xl);
  font-weight: 800;
  letter-spacing: -0.015em;
  line-height: 1.4;
  margin-bottom: var(--space-3);
  color: var(--fg);
}
.card p {
  font-size: var(--fs-md);
  color: var(--fg-2);
  line-height: 1.85;
  flex: 1;
}
.card .more {
  margin-top: var(--space-4);
  color: var(--p);
  font-size: var(--fs-sm);
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  transition: 0.2s;
}
.card:hover .more {
  gap: var(--space-3);
}

/* ===== Why values ===== */
.why-card {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-8);
  transition: 0.25s;
  display: flex;
  flex-direction: column;
}
.why-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.06);
}
.why-card .bigico {
  font-size: var(--fs-display);
  margin-bottom: var(--space-5);
  line-height: 1;
}
.why-card h3 {
  font-size: var(--fs-2xl);
  font-weight: 800;
  letter-spacing: -0.015em;
  margin-bottom: var(--space-3);
}
.why-card p {
  font-size: var(--fs-md);
  color: var(--fg-2);
  line-height: 1.85;
}

/* ===== Solutions ===== */
.sol {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-5);
}
.sol-card {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-6);
  text-align: center;
  transition: 0.25s;
  display: block;
}
.sol-card:hover {
  transform: translateY(-4px);
  border-color: var(--p);
  box-shadow: 0 8px 20px rgba(37, 99, 235, 0.1);
}
.sol-card .ico {
  font-size: var(--fs-5xl);
  margin-bottom: var(--space-3);
}
.sol-card h4 {
  font-size: var(--fs-lg);
  font-weight: 800;
  margin-bottom: var(--space-2);
  letter-spacing: -0.01em;
}
.sol-card p {
  font-size: var(--fs-xs);
  color: var(--muted);
  line-height: 1.7;
}

/* ===== News ===== */
.news {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--line);
  max-width: 880px;
  margin: 0 auto;
}
.news-item {
  display: grid;
  grid-template-columns: 120px 110px 1fr auto;
  gap: var(--space-5);
  padding: var(--space-5) 0;
  border-bottom: 1px solid var(--line);
  align-items: center;
  transition: 0.2s;
}
.news-item:hover {
  background: var(--bg-2);
}
.news-date {
  font-size: var(--fs-sm);
  color: var(--muted);
  font-weight: 600;
}
.news-tag {
  font-size: var(--fs-xs);
  font-weight: 700;
  padding: var(--space-1) 10px;
  border-radius: var(--r);
  text-align: center;
  letter-spacing: 0.05em;
}
.news-tag.pr {
  background: var(--p-soft);
  color: var(--p);
}
.news-tag.product {
  background: var(--warm-soft);
  color: var(--warm-fg);
}
.news-tag.event {
  background: var(--accent-bg);
  color: var(--accent-fg);
}
.news-title {
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 1.5;
  color: var(--fg);
}
.news-arr {
  color: var(--muted);
  font-size: var(--fs-md);
}

/* ===== Service hub (2-card layout) ===== */
.grid2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-8);
  max-width: 1100px;
  margin: 0 auto;
}
@media (max-width: 980px) {
  .grid2 {
    grid-template-columns: 1fr;
    gap: var(--space-5);
  }
}
.service-card {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 0;
  transition: 0.2s;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  text-decoration: none;
  color: var(--fg);
  position: relative;
  overflow: hidden;
}
.service-card-image {
  display: block;
  width: 100%;
  height: auto;
  margin: 0;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  object-position: center;
  border-bottom: 1px solid var(--line);
}
/* 画像なしカード or 画像直下要素にpadding付与（カード側paddingを子に分配） */
.service-card > *:not(.service-card-image) {
  padding-left: var(--space-8);
  padding-right: var(--space-8);
}
.service-card > .service-card-num:first-child,
.service-card-image + .service-card-num {
  padding-top: var(--space-8);
}
.service-card > :first-child:not(.service-card-image):not(.service-card-num) {
  padding-top: var(--space-10);
}
.service-card > :last-child:not(.service-card-image) {
  padding-bottom: var(--space-10);
}
.service-card:hover {
  border-color: var(--p);
  transform: translateY(-3px);
  box-shadow: 0 16px 40px rgba(37, 99, 235, 0.12);
}
.service-card-num {
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--p);
}
.service-card-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--r);
  background: var(--p-soft);
  color: var(--p);
  display: flex;
  align-items: center;
  justify-content: center;
}
.service-card h3 {
  font-size: var(--fs-2xl);
  font-weight: 800;
  letter-spacing: -0.01em;
  margin: 0;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
}
.service-card-desc {
  font-size: var(--fs-md);
  line-height: 1.85;
  color: var(--fg-2);
  margin: 0;
}
.service-card-list {
  list-style: none;
  padding: 0;
  margin: var(--space-2) 0 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.service-card-list li {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-sm);
  color: var(--fg-2);
}
.service-card-list li .mi {
  color: var(--accent);
  font-variation-settings:
    "FILL" 1,
    "wght" 600,
    "GRAD" 0,
    "opsz" 20;
  font-size: var(--fs-lg);
}
.service-card-cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--p);
  margin-top: var(--space-2);
}
.service-card-soon {
  background: linear-gradient(135deg, var(--warm-bg-3) 0%, var(--bg) 100%);
  border-style: dashed;
}
.service-card-soon .service-card-icon {
  background: var(--warm-soft);
  color: var(--warm-fg);
}
.service-card-soon .service-card-list li .mi {
  color: var(--warm-fg);
}
.badge-soon {
  display: inline-block;
  padding: 3px var(--space-3);
  background: var(--warm-soft);
  color: var(--warm-fg);
  font-size: var(--fs-xs);
  font-weight: 700;
  border-radius: var(--r-pill);
  letter-spacing: 0.05em;
}

/* ===== Philosophy cards (AI vs Human role split) ===== */
.philos-card {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-8) 30px;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.philos-card-human {
  background: linear-gradient(135deg, var(--accent-bg-2) 0%, var(--bg) 100%);
}
.philos-tag {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  padding: var(--space-2) 12px;
  background: var(--p-soft);
  color: var(--p);
  font-size: var(--fs-xs);
  font-weight: 700;
  border-radius: var(--r-pill);
  letter-spacing: 0.05em;
}
.philos-tag-human {
  background: var(--accent-bg);
  color: var(--accent-fg);
}
.philos-card h3 {
  font-size: var(--fs-xl);
  font-weight: 800;
  letter-spacing: -0.01em;
  margin: 0;
  display: flex;
  align-items: center;
  gap: var(--space-3);
}
.philos-card h3 .mi {
  color: var(--p);
  font-size: var(--fs-2xl);
  font-variation-settings:
    "FILL" 1,
    "wght" 600,
    "GRAD" 0,
    "opsz" 24;
}
.philos-card-human h3 .mi {
  color: var(--accent);
}
.philos-card ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.philos-card ul li {
  position: relative;
  padding-left: var(--space-5);
  font-size: var(--fs-md);
  color: var(--fg-2);
  line-height: 1.7;
}
.philos-card ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: var(--space-3);
  width: 6px;
  height: 6px;
  border-radius: var(--r-pill);
  background: var(--p);
}
.philos-card-human ul li::before {
  background: var(--accent);
}

/* ===== Coming soon callout ===== */
.coming-soon {
  background: linear-gradient(
    135deg,
    rgba(37, 99, 235, 0.06),
    rgba(16, 185, 129, 0.04)
  );
  border: 1px dashed var(--p);
  border-radius: var(--r);
  padding: var(--space-8) 32px;
  margin: 0 auto;
  max-width: 880px;
  text-align: center;
}
.coming-soon .mi-xl {
  color: var(--p);
  font-size: var(--fs-display);
  margin-bottom: var(--space-4);
}
.coming-soon h3 {
  font-size: var(--fs-2xl);
  font-weight: 800;
  letter-spacing: -0.01em;
  margin: 0 0 10px;
}
.coming-soon p {
  font-size: var(--fs-md);
  color: var(--fg-2);
  line-height: 1.85;
  margin: 0;
}
.coming-soon-meta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-4);
  padding: var(--space-2) 14px;
  background: var(--bg);
  border: 1px solid var(--p-soft);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--p);
}

/* ===== Article (single news page) ===== */
.article {
  max-width: 760px;
  margin: 0 auto;
  padding: 0 24px;
}
.article-meta {
  display: flex;
  gap: var(--space-4);
  align-items: center;
  margin-bottom: var(--space-5);
  flex-wrap: wrap;
}
.article-meta .news-date {
  font-size: var(--fs-md);
}
.article-meta .news-tag {
  font-size: var(--fs-xs);
  padding: var(--space-1) 12px;
}
.article-title {
  font-size: var(--fs-5xl);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.4;
  margin-bottom: var(--space-8);
  color: var(--fg);
}
.article-lead {
  font-size: var(--fs-lg);
  line-height: 1.95;
  color: var(--fg-2);
  font-weight: 600;
  padding: var(--space-6) 26px;
  background: var(--bg-2);
  border-left: 3px solid var(--p);
  border-radius: var(--r);
  margin-bottom: var(--space-10);
}
.article-body {
  font-size: var(--fs-base);
  line-height: 2;
  color: var(--fg-2);
}
.article-body h2 {
  font-size: var(--fs-2xl);
  font-weight: 800;
  letter-spacing: -0.01em;
  margin: var(--space-12) 0 18px;
  padding-bottom: var(--space-3);
  border-bottom: 2px solid var(--line);
  color: var(--fg);
}
.article-body h3 {
  font-size: var(--fs-lg);
  font-weight: 700;
  margin: var(--space-8) 0 12px;
  color: var(--fg);
}
.article-body p {
  margin-bottom: var(--space-5);
}
.article-body ul,
.article-body ol {
  margin: 0 0 22px 1.4em;
}
.article-body ul li,
.article-body ol li {
  margin-bottom: var(--space-2);
}
.article-body strong {
  color: var(--fg);
  font-weight: 700;
}
.article-body a {
  color: var(--p);
  text-decoration: underline;
}
.article-body a:hover {
  color: var(--p-dark);
}
.article-info-box {
  margin: var(--space-8) 0;
  padding: var(--space-5) 24px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
}
.article-info-box dl {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: var(--space-3) 18px;
  font-size: var(--fs-md);
  line-height: 1.7;
}
.article-info-box dt {
  font-weight: 700;
  color: var(--muted);
  font-size: var(--fs-xs);
  padding-top: 2px;
}
.article-info-box dd {
  color: var(--fg-2);
}
.article-foot {
  margin-top: var(--space-16);
  padding-top: var(--space-8);
  border-top: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-4);
}
.article-back {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--p);
  text-decoration: none;
}
.article-back:hover {
  color: var(--p-dark);
}
.article-share {
  display: flex;
  gap: var(--space-3);
  font-size: var(--fs-xs);
  color: var(--muted);
  align-items: center;
}
.article-related {
  margin-top: var(--space-16);
  padding: var(--space-8) 0 16px;
  border-top: 1px solid var(--line);
}
.article-related h3 {
  font-size: var(--fs-sm);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: var(--space-5);
  text-align: center;
}
@media (max-width: 768px) {
  .article-title {
    font-size: var(--fs-3xl);
  }
  .article-info-box dl {
    grid-template-columns: 1fr;
    gap: var(--space-1) 0;
  }
  .article-info-box dt {
    padding-top: var(--space-2);
  }
}

/* ===== CTA banner ===== */
.ctabig {
  padding: var(--space-24) var(--space-6);
  background: linear-gradient(135deg, var(--p) 0%, var(--p-dark) 100%);
  color: var(--bg);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.ctabig::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(
      circle at 20% 80%,
      rgba(255, 255, 255, 0.1) 0%,
      transparent 50%
    ),
    radial-gradient(
      circle at 80% 20%,
      rgba(16, 185, 129, 0.2) 0%,
      transparent 50%
    );
}
.ctabig-inner {
  max-width: 880px;
  margin: 0 auto;
  position: relative;
}
.ctabig h2 {
  font-size: clamp(28px, 4vw, 48px);
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.3;
  margin-bottom: var(--space-4);
}
.ctabig p {
  font-size: var(--fs-lg);
  color: rgba(255, 255, 255, 0.9);
  line-height: 1.85;
  margin-bottom: var(--space-8);
  max-width: 680px;
  margin-left: auto;
  margin-right: auto;
}
.ctabig-actions {
  display: flex;
  gap: var(--space-4);
  justify-content: center;
  flex-wrap: wrap;
}
.ctabig .btn-l-p {
  background: var(--bg);
  color: var(--p);
}
.ctabig .btn-l-p:hover {
  background: var(--bg-2);
}
.ctabig .btn-l-o {
  background: transparent;
  color: var(--bg);
  border-color: rgba(255, 255, 255, 0.4);
}
.ctabig .btn-l-o:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: var(--bg);
}
.ctabig-trust {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-5);
  font-size: var(--fs-sm);
  color: rgba(255, 255, 255, 0.85);
  justify-content: center;
  margin-top: var(--space-6);
}
.ctabig-trust span {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.ctabig-trust .ck {
  color: var(--accent-light);
  font-weight: 700;
}

/* ===== Careers ===== */
.careers {
  background: var(--fg);
  color: var(--bg);
  border-radius: var(--r);
  padding: var(--space-16) 48px;
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: var(--space-12);
  align-items: center;
  max-width: 1180px;
  margin: 0 auto;
}
.careers-tag {
  display: inline-block;
  padding: var(--space-2) 14px;
  background: rgba(255, 255, 255, 0.1);
  color: var(--info-soft);
  font-size: var(--fs-xs);
  font-weight: 700;
  border-radius: var(--r-pill);
  margin-bottom: var(--space-4);
  letter-spacing: 0.04em;
}
.careers h2 {
  font-size: clamp(28px, 3.5vw, 40px);
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.3;
  margin-bottom: var(--space-4);
}
.careers p {
  font-size: var(--fs-base);
  color: var(--muted-3);
  line-height: 1.85;
  margin-bottom: var(--space-6);
}
.careers .btn-l-p {
  background: var(--bg);
  color: var(--fg);
}
.careers .btn-l-o {
  background: transparent;
  color: var(--bg);
  border-color: rgba(255, 255, 255, 0.3);
}
.careers-actions {
  display: flex;
  gap: var(--space-4);
  flex-wrap: wrap;
}
.job-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
}
.job {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: var(--r);
  padding: var(--space-5);
}
.job .lbl {
  font-size: var(--fs-xs);
  color: var(--muted-2);
  margin-bottom: var(--space-2);
  font-weight: 700;
}
.job-name {
  font-size: var(--fs-md);
  font-weight: 700;
  margin-bottom: var(--space-1);
}
.job-desc {
  font-size: var(--fs-xs);
  color: var(--muted-2);
}

/* ===== Footer ===== */
.foot {
  background: var(--fg);
  color: var(--muted-3);
  padding: var(--space-16) 24px 24px;
}
.foot-inner {
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1fr 1fr;
  gap: var(--space-8);
  font-size: var(--fs-md);
}
.foot h4 {
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--muted-2);
  letter-spacing: 0.1em;
  margin-bottom: var(--space-4);
  text-transform: uppercase;
}
.foot ul li {
  padding: var(--space-2) 0;
  font-size: var(--fs-sm);
  color: var(--muted-3);
}
.foot ul li a:hover {
  color: var(--bg);
}
.foot-info {
  margin-top: var(--space-4);
  font-size: var(--fs-xs);
  color: var(--muted-2);
  line-height: 1.85;
}
.foot-bottom {
  max-width: 1280px;
  margin: var(--space-12) auto 0;
  padding-top: var(--space-5);
  border-top: 1px solid var(--fg);
  display: flex;
  justify-content: space-between;
  font-size: var(--fs-xs);
  color: var(--muted);
  flex-wrap: wrap;
  gap: var(--space-4);
}

/* ===== Page generic (sub-pages) ===== */
.pg-hero {
  padding: var(--space-20) 24px 64px;
  background: linear-gradient(180deg, var(--bg-2) 0%, var(--bg) 100%);
  text-align: center;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.pg-hero-photo {
  background: transparent;
}
.pg-hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}
.pg-hero-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
.pg-hero-bg-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.78) 0%,
    rgba(255, 255, 255, 0.88) 60%,
    rgba(255, 255, 255, 0.98) 100%
  );
}
.pg-hero-photo > *:not(.pg-hero-bg) {
  position: relative;
  z-index: 2;
}
.pg-hero-actions {
  margin-top: var(--space-6);
  display: flex;
  gap: var(--space-3);
  justify-content: center;
  flex-wrap: wrap;
}
.pg-hero-left {
  text-align: left;
}
.pg-hero-left .pg-hero-actions {
  justify-content: flex-start;
}
.pg-hero h1 {
  font-size: clamp(32px, 4.5vw, 56px);
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.25;
  margin-bottom: var(--space-4);
}
.pg-hero p {
  font-size: var(--fs-lg);
  color: var(--fg-2);
  line-height: 1.85;
  max-width: 680px;
  margin: 0 auto;
}

/* info.php 用の極小ヒーロー（一覧が主役・SP最優先） */
.pg-hero.pg-hero-info {
  padding: var(--space-8) 24px var(--space-4);
  background: transparent;
  text-align: left;
  max-width: 1280px;
  margin: 0 auto;
}
.pg-hero.pg-hero-info h1 {
  font-size: var(--fs-xl);
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.3;
  margin-bottom: var(--space-1);
}
.pg-hero.pg-hero-info p {
  font-size: var(--fs-sm);
  color: var(--muted);
  line-height: 1.6;
  max-width: none;
  margin: 0;
}
@media (max-width: 640px) {
  .pg-hero.pg-hero-info {
    padding: var(--space-4) var(--space-4) var(--space-2);
  }
  .pg-hero.pg-hero-info h1 {
    font-size: var(--fs-lg);
  }
  .pg-hero.pg-hero-info p {
    font-size: var(--fs-xs);
    line-height: 1.5;
  }
}

/* 絞り込みトグル（details/summary） */
.topics-filter-wrap {
  margin: var(--space-3) 0 var(--space-4);
}
.topics-filter-wrap > summary.topics-filter-toggle {
  list-style: none;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--bg);
  color: var(--fg);
  font-size: var(--fs-md);
  font-weight: 600;
  cursor: pointer;
  user-select: none;
  transition:
    background var(--ease),
    border-color var(--ease);
}
.topics-filter-wrap > summary.topics-filter-toggle::-webkit-details-marker {
  display: none;
}
.topics-filter-wrap > summary.topics-filter-toggle:hover {
  background: var(--bg-2);
  border-color: var(--line-2);
}
.topics-filter-wrap[open] > summary.topics-filter-toggle {
  background: var(--p-soft);
  border-color: var(--p);
  color: var(--p-fg-deep);
}
.topics-filter-wrap[open] .topics-filter-toggle-caret {
  transform: rotate(180deg);
}
.topics-filter-toggle-caret {
  transition: transform var(--ease);
}
.topics-filter-toggle-count {
  display: inline-flex;
  align-items: center;
  padding: 0 var(--space-2);
  border-radius: var(--r-pill);
  background: var(--p);
  color: #fff;
  font-size: var(--fs-xs);
  font-weight: 700;
  min-height: 20px;
}
.topics-filter-wrap[open] > .topics-filter-panel {
  margin-top: var(--space-3);
}
.pg-breadcrumb {
  max-width: 1280px;
  margin: 0 auto;
  padding: var(--space-4) 24px 16px;
  font-size: var(--fs-xs);
  color: var(--muted);
}
.pg-breadcrumb-list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
}
.pg-breadcrumb-list > li {
  display: inline-flex;
  align-items: center;
  min-width: 0;
}
.pg-breadcrumb a {
  color: var(--muted);
}
.pg-breadcrumb a:hover {
  color: var(--p);
}
.pg-breadcrumb .sep {
  margin: 0 8px;
  opacity: 0.5;
}
.pg-breadcrumb .here {
  color: var(--fg);
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 60ch;
}

/* ===== Form ===== */
.form-wrap {
  max-width: 720px;
  margin: 0 auto;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-12);
}
.form-row {
  margin-bottom: var(--space-6);
}
.form-row label {
  display: block;
  font-size: var(--fs-sm);
  font-weight: 700;
  margin-bottom: var(--space-2);
  color: var(--fg);
}
.form-row label .req {
  display: inline-block;
  padding: 2px var(--space-2);
  background: var(--danger);
  color: var(--bg);
  font-size: var(--fs-xs);
  border-radius: var(--r);
  margin-left: var(--space-2);
  font-weight: 600;
}
.form-row label .opt {
  display: inline-block;
  padding: 2px var(--space-2);
  background: var(--bg-3);
  color: var(--muted);
  font-size: var(--fs-xs);
  border-radius: var(--r);
  margin-left: var(--space-2);
  font-weight: 600;
}
.form-row input,
.form-row textarea,
.form-row select {
  width: 100%;
  padding: var(--space-3) 14px;
  border: 1.5px solid var(--line);
  border-radius: var(--r);
  font-size: var(--fs-md);
  font-family: inherit;
  background: var(--bg);
  color: var(--fg);
  transition: 0.2s;
}
.form-row input:focus,
.form-row textarea:focus,
.form-row select:focus {
  outline: none;
  border-color: var(--p);
  box-shadow: 0 0 0 3px var(--p-soft);
}
.form-row textarea {
  resize: vertical;
  min-height: 140px;
}
.form-row .help {
  font-size: var(--fs-xs);
  color: var(--muted);
  margin-top: var(--space-2);
  line-height: 1.65;
}
.form-row .check {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  font-size: var(--fs-sm);
  line-height: 1.7;
  color: var(--fg-2);
}
.form-row .check input {
  width: auto;
  margin-top: var(--space-1);
}
.form-row .check a {
  color: var(--p);
  text-decoration: underline;
}
.form-submit {
  text-align: center;
  margin-top: var(--space-8);
}

/* ===== Pricing tiers ===== */
.tiers {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-6);
  max-width: 1100px;
  margin: 0 auto;
}
.tier {
  background: var(--bg);
  border: 1.5px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-10);
  position: relative;
  transition: 0.25s;
}
.tier:hover {
  border-color: var(--p-soft);
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.06);
}
.tier.featured {
  border-color: var(--p);
  box-shadow: 0 8px 24px rgba(37, 99, 235, 0.15);
}
.tier .pop {
  position: absolute;
  top: -12px;
  left: var(--space-8);
  background: var(--p);
  color: var(--bg);
  padding: var(--space-2) 14px;
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 700;
}
.tier h3 {
  font-size: var(--fs-2xl);
  font-weight: 800;
  margin-bottom: var(--space-2);
}
.tier .desc {
  font-size: var(--fs-sm);
  color: var(--muted);
  margin-bottom: var(--space-6);
}
.tier .price-row {
  display: flex;
  align-items: baseline;
  gap: var(--space-1);
  margin-bottom: var(--space-2);
}
.tier .price-row .yen {
  font-size: var(--fs-xl);
  font-weight: 700;
}
.tier .price-row .num {
  font-size: var(--fs-display);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
}
.tier .price-row .per {
  font-size: var(--fs-sm);
  color: var(--muted);
}
.tier .price-sub {
  font-size: var(--fs-xs);
  color: var(--muted);
  margin-bottom: var(--space-6);
}
.tier ul {
  font-size: var(--fs-md);
  line-height: 2;
  color: var(--fg-2);
  margin-bottom: var(--space-6);
}
.tier ul li {
  display: flex;
  gap: var(--space-2);
  align-items: flex-start;
}
.tier ul li::before {
  content: "✓";
  color: var(--accent);
  font-weight: 700;
  margin-top: 2px;
}
.tier .tier-btn {
  display: block;
  text-align: center;
  padding: var(--space-3) 16px;
  border-radius: var(--r);
  font-size: var(--fs-md);
  font-weight: 700;
  background: var(--bg-2);
  color: var(--fg);
  border: 1.5px solid var(--line);
  transition: 0.2s;
}
.tier.featured .tier-btn {
  background: var(--p);
  color: var(--bg);
  border-color: var(--p);
}
.tier .tier-btn:hover {
  transform: translateY(-1px);
}

/* ===== Company info table ===== */
.company-info {
  max-width: 880px;
  margin: 0 auto;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
}
.company-info dl {
  display: grid;
  grid-template-columns: 200px 1fr;
}
.company-info dt {
  padding: var(--space-5) 24px;
  background: var(--bg-2);
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--fg-2);
  border-bottom: 1px solid var(--line);
}
.company-info dd {
  padding: var(--space-5) 24px;
  font-size: var(--fs-md);
  color: var(--fg);
  border-bottom: 1px solid var(--line);
}
.company-info dl > *:nth-last-child(-n + 2) {
  border-bottom: none;
}

/* ===== Responsive ===== */
@media (max-width: 1280px) {
  /* .nav ul の表示制御は nav-primary 側で実施（モバイルアコーディオン制御と分離） */
  .hero-inner {
    grid-template-columns: 1fr;
    gap: var(--space-8);
  }
  .grid3 {
    grid-template-columns: 1fr;
  }
  .sol {
    grid-template-columns: 1fr 1fr;
  }
  .careers {
    grid-template-columns: 1fr;
    padding: var(--space-10) 28px;
  }
  .foot-inner {
    grid-template-columns: 1fr 1fr;
  }
  .news-item {
    grid-template-columns: 100px 90px 1fr auto;
    gap: var(--space-3);
    font-size: var(--fs-sm);
  }
  .tiers {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 640px) {
  .nav-actions .btn-doc {
    display: none;
  }
  .nav-actions .nav-link {
    display: none;
  }
  .sol {
    grid-template-columns: 1fr;
  }
  .job-grid {
    grid-template-columns: 1fr;
  }
  .news-item {
    grid-template-columns: 1fr;
    gap: var(--space-2);
  }
  .form-wrap {
    padding: var(--space-8);
  }
  .company-info dl {
    grid-template-columns: 1fr;
  }
  .company-info dt {
    padding: var(--space-3) 18px;
    font-size: var(--fs-xs);
  }
  .company-info dd {
    padding: var(--space-3) 18px 18px;
  }
}

/* ===== CV band (5 conversion entries) ===== */
.cv-band {
  padding: var(--space-24) var(--space-6);
  background: linear-gradient(180deg, var(--bg-2) 0%, var(--bg-3) 100%);
}
.cv-band-inner {
  max-width: 1200px;
  margin: 0 auto;
}
.cv-band-title {
  font-size: var(--fs-5xl);
  font-weight: 800;
  letter-spacing: -0.02em;
  text-align: center;
  margin-bottom: var(--space-3);
}
.cv-band-sub {
  text-align: center;
  font-size: var(--fs-md);
  color: var(--muted);
  margin-bottom: var(--space-10);
  line-height: 1.85;
}
.cv-band-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--space-4);
}
@media (max-width: 1280px) {
  .cv-band-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 768px) {
  .cv-band-grid {
    grid-template-columns: 1fr;
  }
}
.cv-card {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-8) 22px;
  text-decoration: none;
  color: var(--fg);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  transition: 0.2s;
}
.cv-card:hover {
  border-color: var(--p);
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(37, 99, 235, 0.1);
}
.cv-card .mi-lg {
  width: 52px;
  height: 52px;
  border-radius: var(--r);
  background: var(--p-soft);
  color: var(--p);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: var(--fs-4xl) !important;
}
.cv-card h3 {
  font-size: var(--fs-lg);
  font-weight: 800;
  letter-spacing: -0.01em;
  margin: var(--space-1) 0 0;
}
.cv-card p {
  font-size: var(--fs-sm);
  color: var(--muted);
  line-height: 1.7;
  margin: 0;
}
.cv-card-cta {
  margin-top: auto;
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--p);
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}
.cv-card-primary {
  background: linear-gradient(135deg, var(--p) 0%, var(--p-dark) 100%);
  color: var(--bg);
  border-color: var(--p);
}
.cv-card-primary .mi-lg {
  background: rgba(255, 255, 255, 0.18);
  color: var(--bg);
}
.cv-card-primary p {
  color: rgba(255, 255, 255, 0.85);
}
.cv-card-primary .cv-card-cta {
  color: var(--bg);
}
.cv-card-primary:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 36px rgba(37, 99, 235, 0.3);
}

/* ===== Hero image (lifestyle / hero photo) ===== */
.hero-image {
  width: 100%;
  height: 100%;
  min-height: 380px;
  border-radius: var(--r);
  object-fit: cover;
  box-shadow: 0 16px 50px rgba(15, 23, 42, 0.1);
}
.section-image {
  width: 100%;
  border-radius: var(--r);
  display: block;
  margin: var(--space-4) 0;
  object-fit: cover;
  box-shadow: 0 8px 28px rgba(15, 23, 42, 0.08);
}

/* ===== Image band (full-bleed photo break between sections) ===== */
.image-band {
  position: relative;
  width: 100%;
  overflow: hidden;
  margin: 0;
  display: block;
}
.image-band img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.image-band-sm {
  aspect-ratio: 21 / 6;
  max-height: 320px;
}
.image-band-md {
  aspect-ratio: 21 / 7;
  max-height: 420px;
}
.image-band-lg {
  aspect-ratio: 21 / 8;
  max-height: 520px;
}
.image-band-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(15, 23, 42, 0.1),
    rgba(15, 23, 42, 0.42)
  );
  pointer-events: none;
}
.image-band-caption {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--bg);
  font-size: var(--fs-2xl);
  font-weight: 700;
  letter-spacing: 0.02em;
  text-shadow: 0 2px 16px rgba(15, 23, 42, 0.45);
  text-align: center;
  padding: 0 var(--space-6);
  line-height: 1.6;
  z-index: 2;
}

/* ===== image-band: eyebrow（英語の大きな文字装飾） ===== */
.image-band-eyebrow {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  pointer-events: none;
  font-family: "Inter", "Noto Sans JP", system-ui, sans-serif;
  color: var(--ib-eb-color, var(--bg));
  font-weight: var(--ib-eb-weight, 800);
  letter-spacing: var(--ib-eb-letterspacing, 0.18em);
  opacity: var(--ib-eb-opacity, 0.18);
  text-transform: uppercase;
  line-height: 0.95;
  white-space: nowrap;
  overflow: hidden;
  padding: 0 var(--space-6);
  z-index: 1;
  user-select: none;
  /* in-view 時に opacity だけ穏やかに濃くする（動きなし） */
  transition: opacity 1.2s ease;
}
.image-band-eyebrow.is-inview {
  opacity: calc(var(--ib-eb-opacity, 0.18) * 1.6);
}
@media (prefers-reduced-motion: reduce) {
  .image-band-eyebrow {
    transition: none;
  }
}
.image-band-eyebrow--align-left {
  justify-content: flex-start;
}
.image-band-eyebrow--align-center {
  justify-content: center;
}
.image-band-eyebrow--align-right {
  justify-content: flex-end;
}
.image-band-eyebrow--sm {
  font-size: clamp(var(--fs-4xl), 6vw, var(--fs-display));
}
.image-band-eyebrow--md {
  font-size: clamp(var(--fs-5xl), 9vw, 80px);
}
.image-band-eyebrow--lg {
  font-size: clamp(var(--fs-display), 12vw, 120px);
}
.image-band-eyebrow--xl {
  font-size: clamp(56px, 16vw, 180px);
}

/* eyebrow と caption が両方ある時、caption を下寄りにし重なりを避ける */
.image-band--has-eyebrow .image-band-caption {
  align-items: flex-end;
  padding-bottom: var(--space-6);
}

@media (max-width: 768px) {
  .image-band-sm {
    aspect-ratio: 16 / 9;
    max-height: 240px;
  }
  .image-band-md {
    aspect-ratio: 4 / 3;
    max-height: 320px;
  }
  .image-band-lg {
    aspect-ratio: 4 / 3;
    max-height: 380px;
  }
  .image-band-caption {
    font-size: var(--fs-lg);
    padding: 0 var(--space-4);
  }
  .image-band-eyebrow {
    padding: 0 var(--space-4);
    letter-spacing: 0.12em;
  }
  .image-band-eyebrow--sm {
    font-size: clamp(var(--fs-3xl), 9vw, var(--fs-5xl));
  }
  .image-band-eyebrow--md {
    font-size: clamp(var(--fs-4xl), 12vw, var(--fs-display));
  }
  .image-band-eyebrow--lg {
    font-size: clamp(var(--fs-5xl), 15vw, 72px);
  }
  .image-band-eyebrow--xl {
    font-size: clamp(var(--fs-display), 18vw, 96px);
  }
}

/* ===== Post (column / news article) cards ===== */
.post-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-6);
  max-width: 1100px;
  margin: 0 auto;
}
@media (max-width: 980px) {
  .post-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 640px) {
  .post-grid {
    grid-template-columns: 1fr;
  }
}
.post-card {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
  text-decoration: none;
  color: var(--fg);
  transition: 0.2s;
  display: flex;
  flex-direction: column;
}
.post-card:hover {
  border-color: var(--p);
  transform: translateY(-3px);
  box-shadow: 0 14px 36px rgba(37, 99, 235, 0.1);
}
.post-card-thumb {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
  background: var(--line);
}
.post-card-body {
  padding: var(--space-5) 22px;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  flex: 1;
}
.post-card-meta {
  display: flex;
  gap: var(--space-3);
  align-items: center;
  font-size: var(--fs-xs);
  color: var(--muted);
  font-weight: 600;
}
.post-card-cat {
  background: var(--p-soft);
  color: var(--p);
  padding: 3px var(--space-3);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 700;
}
.post-card h3 {
  font-size: var(--fs-lg);
  font-weight: 800;
  line-height: 1.55;
  letter-spacing: -0.01em;
  margin: var(--space-1) 0;
}
.post-card-excerpt {
  font-size: var(--fs-sm);
  color: var(--fg-2);
  line-height: 1.75;
  margin: 0;
}
.post-card-foot {
  margin-top: auto;
  padding-top: var(--space-3);
  font-size: var(--fs-xs);
  color: var(--muted);
}

/* ===== Article (post detail) ===== */
/* スタンドアロン記事用（detail-layout 配下では下のリセットで padding を消す） */
.post-article {
  max-width: 760px;
  margin: 0 auto;
  padding: 0 var(--space-6);
}
/* detail-layout 配下では layout 側が padding を持つため重複させない */
.topics-detail-layout > .post-article,
.topics-detail-layout .topics-detail-article {
  padding-left: 0;
  padding-right: 0;
  max-width: none;
}
.post-hero {
  width: 100%;
  object-fit: cover;
  border-radius: var(--r);
  margin-bottom: var(--space-8);
  box-shadow: 0 12px 36px rgba(15, 23, 42, 0.1);
}
.post-article h1.article-title {
  margin-bottom: var(--space-4);
}
.post-meta-bar {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  flex-wrap: wrap;
  font-size: var(--fs-sm);
  color: var(--muted);
  margin-bottom: var(--space-6);
}
/* ===== Post content: typography ===== */
.post-content {
  font-size: var(--fs-base);
  line-height: 1.95;
  color: var(--fg-2);
  margin: var(--space-4) 0;
}
.post-content > *:first-child {
  margin-top: 0;
}
.post-content > *:last-child {
  margin-bottom: 0;
}

.post-content h1 {
  font-size: var(--fs-4xl);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.45;
  margin: 0 0 24px;
  color: var(--fg);
}
.post-content h2 {
  position: relative;
  font-size: var(--fs-2xl);
  font-weight: 800;
  letter-spacing: -0.01em;
  line-height: 1.5;
  margin: var(--space-20) 0 var(--space-8);
  padding: var(--space-2) 0 var(--space-4) var(--space-4);
  border-bottom: 2px solid var(--line);
  color: var(--fg);
}
.post-content h2::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.45em;
  width: 6px;
  height: 1.05em;
  background: linear-gradient(180deg, var(--p) 0%, var(--p-dark) 100%);
  border-radius: var(--r);
}
.post-content h3 {
  position: relative;
  font-size: var(--fs-lg);
  font-weight: 700;
  line-height: 1.55;
  margin: var(--space-12) 0 var(--space-5);
  padding-left: var(--space-3);
  color: var(--fg);
  border-left: 3px solid var(--p);
}
.post-content h4 {
  font-size: var(--fs-base);
  font-weight: 700;
  line-height: 1.6;
  margin: var(--space-10) 0 var(--space-4);
  padding-bottom: 4px;
  color: var(--p-dark);
  border-bottom: 1px dashed var(--line);
  display: inline-block;
}
.post-content h5 {
  font-size: var(--fs-md);
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  margin: var(--space-5) 0 8px;
  color: var(--fg);
}
.post-content h6 {
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin: var(--space-5) 0 6px;
  color: var(--muted);
}
.post-content p {
  margin: 0 0 18px;
}
.post-content p:empty {
  display: none;
}

.post-content strong,
.post-content b {
  color: var(--fg);
  font-weight: 700;
}
.post-content em,
.post-content i {
  font-style: italic;
}
.post-content small {
  font-size: 87.5%;
  color: var(--muted);
}
.post-content sub,
.post-content sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
.post-content sub {
  bottom: -0.25em;
}
.post-content sup {
  top: -0.5em;
}
.post-content mark {
  background: linear-gradient(transparent 60%, rgba(252, 211, 77, 0.65) 60%);
  color: inherit;
  padding: 0 2px;
  border-radius: 2px;
}
.post-content del,
.post-content s {
  color: var(--muted);
  text-decoration: line-through;
}
.post-content abbr[title] {
  border-bottom: 1px dotted var(--muted);
  text-decoration: none;
  cursor: help;
}
.post-content kbd {
  display: inline-block;
  font-family: "Inter", ui-monospace, monospace;
  font-size: var(--fs-xs);
  font-weight: 600;
  padding: 1px var(--space-2);
  background: var(--bg);
  color: var(--fg);
  border: 1px solid var(--muted-3);
  border-bottom-width: 2px;
  border-radius: var(--r);
  box-shadow: 0 1px 0 var(--line);
  vertical-align: 1px;
}

.post-content a {
  color: var(--p);
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  transition: color 0.15s ease;
}
.post-content a:hover {
  color: var(--p-dark);
  text-decoration-thickness: 2px;
}
.post-content a[target="_blank"]::after,
.post-content a[rel~="external"]::after {
  content: "↗";
  display: inline-block;
  margin-left: 2px;
  font-size: 0.85em;
  color: var(--muted);
  vertical-align: 1px;
}

/* lists */
.post-content ul,
.post-content ol {
  margin: 0 0 var(--space-6);
  padding-left: 0;
  list-style: none;
}
.post-content ul > li,
.post-content ol > li {
  position: relative;
  margin-bottom: var(--space-2);
  padding-left: 1.7em;
  line-height: 1.75;
}
.post-content ul > li::before {
  content: "";
  position: absolute;
  left: 0.45em;
  top: 0.65em;
  width: 8px;
  height: 8px;
  background: var(--p);
  border-radius: var(--r-pill);
}
.post-content ul ul > li::before {
  width: 6px;
  height: 6px;
  background: transparent;
  border: 2px solid var(--p);
}
.post-content ul ul ul > li::before {
  width: 6px;
  height: 6px;
  background: var(--muted);
  border: none;
}
.post-content ol {
  counter-reset: post-ol;
}
.post-content ol > li {
  counter-increment: post-ol;
}
.post-content ol > li::before {
  content: counter(post-ol);
  position: absolute;
  left: 0;
  top: 0.1em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.4em;
  height: 1.4em;
  font-size: 0.78em;
  font-weight: 800;
  color: #fff;
  background: var(--p);
  border-radius: var(--r-pill);
  line-height: 1;
}
.post-content ol ol {
  counter-reset: post-ol-2;
}
.post-content ol ol > li {
  counter-increment: post-ol-2;
}
.post-content ol ol > li::before {
  content: counter(post-ol-2, lower-alpha);
  background: transparent;
  color: var(--p);
  border: 1.5px solid var(--p);
}
.post-content li > p {
  margin-bottom: var(--space-2);
}
.post-content li > ul,
.post-content li > ol {
  margin: var(--space-2) 0 4px;
}
/* task list (Markdown checkbox) */
.post-content ul li input[type="checkbox"] {
  margin-right: var(--space-2);
  vertical-align: 1px;
  pointer-events: none;
}
.post-content ul:has(> li > input[type="checkbox"]) {
  list-style: none;
  padding-left: 0.4em;
}

/* description list */
.post-content dl {
  margin: 0 0 22px;
  padding: var(--space-5) 22px;
  background: var(--bg-2);
  border: 1px solid var(--line);
  border-radius: var(--r);
  display: grid;
  grid-template-columns: max-content 1fr;
  column-gap: var(--space-5);
  row-gap: var(--space-2);
}
.post-content dt {
  font-weight: 700;
  color: var(--fg);
  font-size: var(--fs-md);
}
.post-content dd {
  margin: 0;
  color: var(--fg-2);
  font-size: var(--fs-md);
}
@media (max-width: 640px) {
  .post-content dl {
    grid-template-columns: 1fr;
    row-gap: var(--space-1);
  }
  .post-content dd {
    padding-bottom: var(--space-2);
    border-bottom: 1px dashed var(--line);
  }
  .post-content dd:last-child {
    border-bottom: none;
  }
}

/* blockquote */
.post-content blockquote {
  position: relative;
  border: 1px solid var(--p-soft);
  border-left: 4px solid var(--p);
  padding: var(--space-5) var(--space-5) var(--space-5)
    calc(var(--space-5) + 28px);
  background: var(--p-soft);
  border-radius: var(--r);
  margin: var(--space-6) 0;
  color: var(--fg-2);
  font-size: var(--fs-base);
  line-height: 1.85;
  box-shadow: var(--shadow-sm);
}
.post-content blockquote::before {
  content: "“";
  position: absolute;
  left: var(--space-3);
  top: 4px;
  font-size: 2.4em;
  font-family: Georgia, "Times New Roman", serif;
  color: var(--p);
  line-height: 1;
  opacity: 0.6;
}
.post-content blockquote > *:first-child {
  margin-top: 0;
}
.post-content blockquote > *:last-child {
  margin-bottom: 0;
}
.post-content blockquote cite,
.post-content blockquote footer {
  display: block;
  margin-top: var(--space-2);
  font-size: var(--fs-xs);
  color: var(--muted);
  font-style: normal;
}
.post-content blockquote cite::before,
.post-content blockquote footer::before {
  content: "— ";
}

/* hr */
.post-content hr {
  border: 0;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    var(--line) 20%,
    var(--line) 80%,
    transparent
  );
  margin: var(--space-10) 0;
}

/* image / figure */
.post-content img {
  max-width: 100%;
  height: auto;
  border-radius: var(--r);
  margin: var(--space-6) 0;
  display: block;
}
.post-content figure {
  margin: var(--space-8) 0;
  text-align: center;
}
.post-content figure img {
  margin: 0 auto;
}
.post-content figure figcaption {
  margin-top: var(--space-3);
  font-size: var(--fs-xs);
  color: var(--muted);
  line-height: 1.6;
}

/* inline code */
.post-content code,
.post-content :not(pre) > code {
  background: var(--bg-3);
  color: var(--fg);
  padding: 2px var(--space-2);
  border-radius: var(--r);
  font-size: 87.5%;
  font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  border: 1px solid var(--line);
}

/* code block */
.post-content pre {
  background: var(--fg);
  color: var(--line);
  padding: var(--space-4) 20px;
  border-radius: var(--r);
  margin: var(--space-6) 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  font-size: var(--fs-sm);
  line-height: 1.7;
  font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
}
.post-content pre code {
  background: transparent;
  color: inherit;
  border: 0;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
}

/* code block + copy button */
.post-content .post-codeblock {
  position: relative;
  margin: var(--space-6) 0;
}
.post-content .post-codeblock > pre {
  margin: 0;
}
.post-codeblock-copy {
  position: absolute;
  top: var(--space-2);
  right: var(--space-2);
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-1) var(--space-2);
  background: rgba(255, 255, 255, 0.08);
  color: var(--line);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: var(--r);
  font-size: var(--fs-xs);
  font-family: inherit;
  font-weight: 600;
  cursor: pointer;
  opacity: 0;
  transition:
    background var(--ease),
    color var(--ease),
    border-color var(--ease),
    opacity var(--ease);
}
.post-codeblock-copy .mi {
  font-size: var(--fs-md);
}
.post-codeblock:hover > .post-codeblock-copy,
.post-codeblock-copy:focus-visible {
  opacity: 1;
}
.post-codeblock-copy:hover {
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
  border-color: rgba(255, 255, 255, 0.28);
}
.post-codeblock-copy.is-done {
  background: var(--accent-bg);
  color: var(--accent-fg);
  border-color: var(--accent-soft);
  opacity: 1;
}
.post-codeblock-copy.is-error {
  background: var(--danger-bg);
  color: var(--danger-fg);
  border-color: var(--danger-soft);
  opacity: 1;
}
@media (max-width: 768px) {
  .post-codeblock-copy {
    opacity: 1;
  }
  .post-codeblock-copy-label {
    display: none;
  }
  .post-codeblock-copy {
    padding: var(--space-1);
  }
}

/* callouts (custom) */
.post-content .callout {
  margin: var(--space-6) 0;
  padding: var(--space-4) 20px 16px 52px;
  border-radius: var(--r);
  border: 1px solid var(--line);
  background: var(--bg);
  position: relative;
  font-size: var(--fs-md);
  line-height: 1.85;
}
.post-content .callout > *:first-child {
  margin-top: 0;
}
.post-content .callout > *:last-child {
  margin-bottom: 0;
}
.post-content .callout::before {
  position: absolute;
  left: var(--space-4);
  top: var(--space-4);
  font-family: "Material Symbols Rounded";
  font-size: var(--fs-2xl);
  font-variation-settings:
    "FILL" 1,
    "wght" 400;
  line-height: 1;
}
.post-content .callout-info {
  background: var(--p-soft-2);
  border-color: var(--p-soft-3);
  color: var(--p-fg-deep);
}
.post-content .callout-info::before {
  content: "info";
  color: var(--p);
}
.post-content .callout-success {
  background: var(--accent-soft);
  border-color: var(--accent-mid);
  color: var(--accent-deep);
}
.post-content .callout-success::before {
  content: "check_circle";
  color: var(--accent);
}
.post-content .callout-warning {
  background: var(--warm-bg-2);
  border-color: var(--warm-bg);
  color: var(--warm-deep);
}
.post-content .callout-warning::before {
  content: "warning";
  color: var(--warm);
}
.post-content .callout-danger {
  background: var(--danger-soft);
  border-color: var(--danger-bg);
  color: var(--danger-deep);
}
.post-content .callout-danger::before {
  content: "error";
  color: var(--danger-fg);
}
.post-content .callout strong {
  color: inherit;
}

/* prose intro lead */
.post-content > p.lead,
.post-content > .lead {
  font-size: var(--fs-lg);
  line-height: 1.85;
  color: var(--fg);
  margin-bottom: var(--space-8);
}

/* details / summary */
.post-content details {
  margin: var(--space-6) 0;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--bg);
  overflow: hidden;
}
.post-content details > summary {
  padding: var(--space-4) 20px;
  font-weight: 700;
  font-size: var(--fs-md);
  color: var(--fg);
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  gap: var(--space-2);
  background: var(--bg-2);
  user-select: none;
}
.post-content details > summary::-webkit-details-marker {
  display: none;
}
.post-content details > summary::before {
  content: "expand_more";
  font-family: "Material Symbols Rounded";
  font-size: var(--fs-2xl);
  color: var(--muted);
  transition: transform 0.15s ease;
}
.post-content details[open] > summary::before {
  transform: rotate(180deg);
}
.post-content details > :not(summary) {
  padding: var(--space-4) 20px;
  border-top: 1px solid var(--line);
}

/* ===== Topics list: card grid + filters ===== */
.topics-wrap {
  max-width: 1240px;
  margin: 0 auto;
}
.topics-filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: center;
  margin-bottom: var(--space-8);
}
.topic-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) 14px;
  font-size: var(--fs-sm);
  font-weight: 700;
  background: var(--bg);
  color: var(--fg-2);
  border: 1.5px solid var(--line);
  border-radius: var(--r-pill);
  text-decoration: none;
  transition: all 0.15s ease;
}
.topic-chip:hover {
  border-color: var(--p);
  color: var(--p);
}
.topic-chip.is-active {
  background: var(--chip, var(--p));
  color: var(--bg);
  border-color: transparent;
}
.topic-chip.is-active .mi {
  color: var(--bg) !important;
}
.topic-chip .mi {
  font-size: var(--fs-xl);
}

.topics-tag-banner {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  background: var(--p-soft-2);
  border: 1px solid var(--p-soft-3);
  color: var(--p-fg-deep);
  padding: var(--space-3) 16px;
  border-radius: var(--r-pill);
  margin: 0 auto 24px;
  font-size: var(--fs-sm);
  font-weight: 600;
  max-width: max-content;
}
.topics-tag-clear {
  margin-left: var(--space-2);
  font-size: var(--fs-xs);
  color: var(--p-fg-deep);
  text-decoration: underline;
  opacity: 0.7;
}
.topics-tag-clear:hover {
  opacity: 1;
}

.topics-grid {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-6);
}
@media (max-width: 980px) {
  .topics-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 640px) {
  .topics-grid {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
}

.topic-card {
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
  transition:
    transform 0.2s ease,
    box-shadow 0.2s ease,
    border-color 0.2s ease;
}
.topic-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
  border-color: var(--muted-3);
}
.topic-card-link {
  display: flex;
  flex-direction: column;
  flex: 1;
  text-decoration: none;
  color: inherit;
}

.topic-card-thumb {
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--bg-3);
}
.topic-card-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}
.topic-card:hover .topic-card-thumb img {
  transform: scale(1.04);
}
.topic-card-cat {
  position: absolute;
  left: var(--space-3);
  top: var(--space-3);
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-2) 10px;
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--bg);
  border-radius: var(--r-pill);
  letter-spacing: 0.02em;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
}
.topic-card-cat .mi {
  font-size: var(--fs-md);
  color: var(--bg);
}
/* post_type バッジ（右上、白背景でカテゴリと区別） */
.topic-card-pt {
  position: absolute;
  right: var(--space-3);
  top: var(--space-3);
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: var(--space-1) 9px;
  font-size: var(--fs-xs);
  font-weight: 800;
  border-radius: var(--r-pill);
  letter-spacing: 0.02em;
  background: rgba(255, 255, 255, 0.95);
  color: var(--fg);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18);
  border: 1px solid rgba(15, 23, 42, 0.08);
}
.topic-card-pt .mi {
  font-size: var(--fs-md);
}
.info-pt-topic {
  color: var(--p-dark);
}
.info-pt-knowhow {
  color: var(--warm-bright);
}
.info-pt-column {
  color: var(--pt-column);
}
.info-pt-report {
  color: var(--pt-report);
}

/* info.php タブ（post_type 必須切替） */
.info-tabs {
  display: flex;
  gap: var(--space-1);
  flex-wrap: nowrap;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  border-bottom: 2px solid var(--line);
  margin-bottom: var(--space-4);
}
.info-tabs::-webkit-scrollbar {
  display: none;
}
.info-tab {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) 18px;
  border-radius: var(--r) var(--r) 0 0;
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--fg-2);
  text-decoration: none;
  line-height: 1;
  white-space: nowrap;
  border: 2px solid transparent;
  border-bottom: 0;
  margin-bottom: -2px;
  transition: all 0.15s ease;
  background: var(--bg-2);
}
.info-tab:hover {
  color: var(--p);
  background: var(--bg);
}
.info-tab .mi {
  font-size: var(--fs-xl);
}
.info-tab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 18px;
  padding: 0 6px;
  border-radius: var(--r-pill);
  background: var(--line);
  color: var(--fg-2);
  font-size: var(--fs-xs);
  font-weight: 700;
  font-family: "Inter", sans-serif;
}
.info-tab.is-active {
  color: var(--p);
  background: var(--bg);
  border-color: var(--line);
  border-bottom: 2px solid var(--bg);
}
.info-tab.is-active .info-tab-count {
  background: var(--p);
  color: var(--bg);
}

/* サイドバー内 post_type タブ（4種切替） */
.info-sidebar-tabs {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2px;
  margin-bottom: var(--space-2);
  padding: 2px;
  background: var(--bg-3);
  border-radius: var(--r);
}
.info-sidebar-tab {
  appearance: none;
  border: 0;
  background: transparent;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: var(--space-2) 4px;
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--fg-2);
  border-radius: var(--r);
  cursor: pointer;
  transition: all 0.12s ease;
  font-family: inherit;
  line-height: 1.1;
}
.info-sidebar-tab .mi {
  font-size: var(--fs-lg);
}
.info-sidebar-tab:hover {
  background: var(--bg);
  color: var(--p);
}
.info-sidebar-tab.is-active {
  background: var(--bg);
  color: var(--p);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}

/* ════════════════════════════════════════════════════
   共通タブコンポーネント（assets/ui-tabs.js とセット）
   バリアント: pills（既定）/ underline / segmented / framed
   ──────────────────────────────────────────────────── */

/* タブ群 */
.ui-tabs-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
}
/* モバイル: 折返しせず横スクロール */
@media (max-width: 768px) {
  .ui-tabs-list {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
    scrollbar-width: none;
    /* 画面端まで使う: 親 padding を相殺してフルブリード化 */
    margin-left: calc(var(--space-4) * -1);
    margin-right: calc(var(--space-4) * -1);
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }
  .ui-tabs-list::-webkit-scrollbar {
    display: none;
  }
  .ui-tabs-list .ui-tab {
    flex: 0 0 auto;
    white-space: nowrap;
    scroll-snap-align: start;
  }
  /* segmented バリアントは flex:1 を維持したいので除外（横幅が必要なら別途調整） */
  .ui-tabs--segmented .ui-tabs-list {
    overflow-x: visible;
    flex-wrap: wrap;
    margin-left: 0;
    margin-right: 0;
    padding-left: 0;
    padding-right: 0;
  }
  /* framed バリアントはヘッダー枠内でスクロール（フルブリード化はしない） */
  .ui-tabs--framed .ui-tabs-list {
    margin-left: calc(var(--space-4) * -1);
    margin-right: calc(var(--space-4) * -1);
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }
}
/* 個別タブボタン（既定 = pills） */
.ui-tab {
  appearance: none;
  background: var(--bg);
  border: 1px solid var(--line);
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--fg-2);
  cursor: pointer;
  transition: all var(--ease);
  font-family: inherit;
  line-height: 1;
}
.ui-tab:hover {
  color: var(--tab-accent, var(--p));
  border-color: var(--tab-accent, var(--p));
}
.ui-tab.is-active {
  background: var(--tab-accent, var(--p));
  color: #fff;
  border-color: var(--tab-accent, var(--p));
}
.ui-tab:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.ui-tab .mi {
  font-size: var(--fs-md);
}
.ui-tab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 16px;
  padding: 0 5px;
  border-radius: var(--r-pill);
  background: var(--line);
  color: var(--fg-2);
  font-size: var(--fs-xs);
  font-weight: 700;
  font-family: "Inter", sans-serif;
}
.ui-tab.is-active .ui-tab-count {
  background: var(--bg);
  color: var(--tab-accent, var(--p));
}

/* バリアント: underline */
.ui-tabs--underline .ui-tabs-list {
  border-bottom: 2px solid var(--line);
  gap: 0;
}
.ui-tabs--underline .ui-tab {
  background: transparent;
  border: 0;
  border-radius: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  padding: var(--space-3) var(--space-4);
  font-size: var(--fs-sm);
}
.ui-tabs--underline .ui-tab:hover {
  background: var(--bg-2);
  color: var(--p);
  border-bottom-color: transparent;
}
.ui-tabs--underline .ui-tab.is-active {
  background: transparent;
  color: var(--tab-accent, var(--p));
  border-bottom-color: var(--tab-accent, var(--p));
}

/* バリアント: segmented */
.ui-tabs--segmented .ui-tabs-list {
  background: var(--bg-2);
  padding: 3px;
  border-radius: var(--r-pill);
  gap: 2px;
}
.ui-tabs--segmented .ui-tab {
  background: transparent;
  border: 0;
  flex: 1;
  justify-content: center;
}
.ui-tabs--segmented .ui-tab:hover {
  background: var(--bg);
  color: var(--p);
}
.ui-tabs--segmented .ui-tab.is-active {
  background: var(--bg);
  color: var(--tab-accent, var(--p));
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

/* バリアント: framed（カード型・見出し付き） */
.ui-tabs--framed {
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--paper);
  overflow: hidden;
}
.ui-tabs--framed .ui-tabs-head {
  background: var(--bg-2);
  border-bottom: 1px solid var(--line);
  padding: var(--space-3) var(--space-4);
}
.ui-tabs--framed .ui-tabs-title {
  margin: 0 0 var(--space-2);
  font-size: var(--fs-md);
  font-weight: 800;
  color: var(--fg);
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}
.ui-tabs--framed .ui-tabs-title .mi {
  color: var(--p);
  font-size: var(--fs-xl);
}

/* タブパネル（共通） */
.ui-tab-panel {
  padding: var(--space-5);
}
.ui-tab-panel[hidden] {
  display: none !important;
}
.ui-tab-panel > :first-child {
  margin-top: 0;
}
.ui-tab-panel > :last-child {
  margin-bottom: 0;
}
.ui-tabs--framed .ui-tab-panel {
  border-top: 3px solid var(--tab-accent, var(--p));
}

@media (max-width: 640px) {
  .ui-tab {
    flex: 1;
    justify-content: center;
    padding: var(--space-2);
  }
  .ui-tab-panel {
    padding: var(--space-4);
  }
}

/* ノウハウ業界別タブ（knowhow/index.php・ui-tabs--framed を利用） */
.knowhow-tips {
  margin: var(--space-6) 0 var(--space-8);
}

/* 一次情報の埋め込みを記事最上部に表示（X / YouTube） */
.article-source-embed {
  margin: 0 0 var(--space-5);
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--paper);
  overflow: hidden;
}
.article-source-embed-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  background: var(--bg-2);
  border-bottom: 1px solid var(--line);
}
.article-source-embed-body {
  padding: var(--space-4);
  display: flex;
  justify-content: center;
}
.article-source-embed-body > .embed,
.article-source-embed-body > .twitter-tweet,
.article-source-embed-body > iframe {
  margin: 0 auto;
  max-width: 100%;
}
.article-source-embed-body .embed-youtube {
  width: 100%;
  max-width: 720px;
}

/* article-lead 直下の要旨ブロック（topic 詳細：points / video_summary） */
.article-key-summary {
  margin: var(--space-2) 0 var(--space-5);
  padding: var(--space-4) var(--space-5);
  background: var(--p-soft);
  border-left: 3px solid var(--p);
  border-radius: var(--r);
}
.article-key-summary > h2 {
  margin: 0 0 var(--space-2);
  font-size: var(--fs-md);
  font-weight: 800;
  color: var(--fg);
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}
.article-key-summary > h2 .mi {
  color: var(--p);
  font-size: 18px;
}
.article-key-summary .article-points {
  margin: 0;
  padding-left: var(--space-5);
  list-style: disc outside;
}
.article-key-summary .article-points > li {
  margin-bottom: var(--space-1);
  line-height: 1.7;
  list-style: disc outside;
  display: list-item;
}
.article-key-summary .article-points > li::marker {
  color: var(--p);
}
.article-key-summary .article-points > li:last-child {
  margin-bottom: 0;
}
.article-key-summary .article-video-summary {
  font-size: var(--fs-sm);
  line-height: 1.8;
  color: var(--fg);
}

/* ────────────────────────────────────────────────────
   関連コンテンツ誘導ブロック（_partials/related-block.php）
──────────────────────────────────────────────────── */
.related-block {
  background: var(--bg-2);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: var(--space-12) 0;
  margin-top: var(--space-8);
}
.related-block-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-5);
}
.related-block-title {
  font-size: var(--fs-2xl);
  font-weight: 800;
  color: var(--fg);
  margin: 0;
}
.related-block-tabs {
  display: flex;
  gap: var(--space-1);
  flex-wrap: wrap;
  background: var(--line);
  padding: 3px;
  border-radius: var(--r-pill);
}
.related-block-tab {
  appearance: none;
  border: 0;
  background: transparent;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) 14px;
  border-radius: var(--r-pill);
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--fg-2);
  cursor: pointer;
  transition: all 0.12s ease;
  font-family: inherit;
  line-height: 1;
}
.related-block-tab:hover:not(:disabled) {
  background: var(--bg);
  color: var(--p);
}
.related-block-tab.is-active {
  background: var(--bg);
  color: var(--p);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
.related-block-tab:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.related-block-tab .mi {
  font-size: var(--fs-lg);
}
.related-block-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 16px;
  padding: 0 5px;
  border-radius: var(--r-pill);
  background: var(--muted-3);
  color: var(--fg-2);
  font-size: var(--fs-xs);
  font-weight: 700;
  font-family: "Inter", sans-serif;
}
.related-block-tab.is-active .related-block-count {
  background: var(--p);
  color: var(--bg);
}

.related-block-panel {
  display: none;
}
.related-block-panel.is-active {
  display: block;
}
.related-block-panel[hidden] {
  display: none !important;
}

.related-block-grid {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
}
.related-block-card {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
  transition:
    transform 0.15s ease,
    box-shadow 0.15s ease,
    border-color 0.15s ease;
}
.related-block-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
  border-color: var(--muted-3);
}
.related-block-card-link {
  display: flex;
  flex-direction: column;
  height: 100%;
  text-decoration: none;
  color: inherit;
}
.related-block-card-thumb {
  position: relative;
  aspect-ratio: 16/9;
  background: var(--bg-3);
  overflow: hidden;
}
.related-block-card-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.35s ease;
}
.related-block-card:hover .related-block-card-thumb img {
  transform: scale(1.04);
}
.related-block-card-pt {
  position: absolute;
  left: var(--space-2);
  top: var(--space-2);
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 3px var(--space-2);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 800;
  background: rgba(255, 255, 255, 0.95);
  color: var(--rbpt, var(--fg));
  border: 1px solid rgba(15, 23, 42, 0.08);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}
.related-block-card-pt .mi {
  font-size: var(--fs-sm);
  color: var(--rbpt);
}
.related-block-card-body {
  padding: var(--space-3) 14px 14px;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  flex: 1;
}
.related-block-card-meta {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-xs);
  color: var(--muted);
}
.related-block-card-cat {
  display: inline-flex;
  align-items: center;
  padding: 1px var(--space-2);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--bg);
  letter-spacing: 0.02em;
}
.related-block-card-meta time {
  font-family: "Inter", sans-serif;
}
.related-block-card-title {
  font-size: var(--fs-sm);
  line-height: 1.5;
  color: var(--fg);
  font-weight: 700;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.related-block-card-excerpt {
  font-size: var(--fs-xs);
  color: var(--muted);
  line-height: 1.5;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.related-block-empty {
  text-align: center;
  color: var(--muted);
  padding: var(--space-8) 0;
  margin: 0;
  font-size: var(--fs-sm);
}
.related-block-foot {
  margin-top: var(--space-5);
  text-align: center;
}
.related-block-more {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) 22px;
  background: var(--bg);
  border: 1.5px solid var(--p);
  color: var(--p);
  border-radius: var(--r-pill);
  font-size: var(--fs-sm);
  font-weight: 700;
  text-decoration: none;
  transition: all 0.15s ease;
}
.related-block-more:hover {
  background: var(--p);
  color: var(--bg);
}
.related-block-more .mi {
  font-size: var(--fs-lg);
  transition: transform 0.15s ease;
}
.related-block-more:hover .mi {
  transform: translateX(2px);
}

/* スマホ: 縦リスト＋サムネ左 */
@media (max-width: 768px) {
  .related-block {
    padding: var(--space-8) 0;
  }
  .related-block-head {
    flex-direction: column;
    align-items: flex-start;
  }
  .related-block-tabs {
    width: 100%;
    justify-content: space-between;
  }
  .related-block-tab {
    flex: 1;
    justify-content: center;
    padding: var(--space-2) 6px;
    font-size: var(--fs-xs);
  }
  .related-block-grid {
    grid-template-columns: 1fr;
    gap: var(--space-3);
  }
  .related-block-card-link {
    flex-direction: row;
    align-items: stretch;
  }
  .related-block-card-thumb {
    flex: 0 0 110px;
    aspect-ratio: 1/1;
    min-width: 110px;
  }
  .related-block-card-pt {
    font-size: var(--fs-xs);
    padding: 2px var(--space-2);
  }
  .related-block-card-body {
    padding: var(--space-3) 12px;
    gap: var(--space-1);
  }
  .related-block-card-title {
    font-size: var(--fs-sm);
    -webkit-line-clamp: 3;
    line-clamp: 3;
  }
  .related-block-card-excerpt {
    display: none;
  }
}

/* 業界バッジ（カードのタイトル直下） */
.topic-card-industries {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  margin-top: 2px;
}
.topic-industry-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px var(--space-2);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--ind, var(--fg-2));
  background: color-mix(in srgb, var(--ind, var(--muted-2)) 12%, var(--bg));
  border: 1px solid
    color-mix(in srgb, var(--ind, var(--muted-2)) 35%, transparent);
}
.topic-industry-badge .mi {
  font-size: var(--fs-sm);
  color: var(--ind, var(--fg-2));
}
.topic-card-play {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
  width: 64px;
  height: 64px;
  border-radius: var(--r-pill);
  background: rgba(15, 23, 42, 0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
  transition:
    transform 0.25s ease,
    background 0.2s ease;
}
.topic-card-play .mi {
  font-size: var(--fs-display);
  color: var(--bg);
}
.topic-card:hover .topic-card-play {
  transform: translate(-50%, -50%) scale(1.08);
  background: rgba(220, 38, 38, 0.85);
}

.topic-card-body {
  padding: var(--space-4) 18px 14px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.topic-card-meta {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  font-size: var(--fs-xs);
  color: var(--muted);
}
.topic-card-meta time {
  font-family: "Inter", sans-serif;
}
.topic-card-region {
  font-family: "Inter", sans-serif;
  font-weight: 700;
  font-size: var(--fs-xs);
  background: var(--bg-3);
  color: var(--fg-2);
  padding: 1px var(--space-2);
  border-radius: 3px;
  letter-spacing: 0.05em;
}
.topic-card-title {
  font-size: var(--fs-base);
  font-weight: 700;
  line-height: 1.55;
  color: var(--fg);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin: 0;
}
.topic-card-excerpt {
  font-size: var(--fs-xs);
  line-height: 1.7;
  color: var(--muted);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin: 0;
}
.topic-card-tags {
  padding: var(--space-3) 18px 14px;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  border-top: 1px solid var(--line);
}
.topic-tag {
  font-size: var(--fs-xs);
  color: var(--muted);
  text-decoration: none;
  background: var(--bg-2);
  padding: 3px var(--space-2);
  border-radius: 3px;
  border: 1px solid var(--line-2);
  transition: all 0.12s ease;
}
.topic-tag:hover {
  background: var(--p-soft-2);
  border-color: var(--p-soft-3);
  color: var(--p-fg-deep);
}
.topic-tag.topic-tag-more {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  background: var(--bg);
  color: var(--p);
  border-color: var(--p-soft-3);
  font-weight: 700;
}
.topic-tag.topic-tag-more .mi {
  font-size: var(--fs-sm);
}
.topic-tag.topic-tag-more:hover {
  background: var(--p);
  color: var(--bg);
  border-color: var(--p);
}
.topic-tag.topic-tag-more:hover .mi {
  color: var(--bg);
}

/* 検索フォーム */
.topics-search-form {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-2);
  max-width: 680px;
  margin: 0 auto 20px;
  padding: var(--space-2) 8px 6px 40px;
  background: var(--bg);
  border: 1.5px solid var(--line);
  border-radius: var(--r-pill);
  transition:
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}
.topics-search-form:focus-within {
  border-color: var(--p);
  box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
}
.topics-search-icon {
  position: absolute;
  left: var(--space-4);
  top: 50%;
  transform: translateY(-50%);
  color: var(--muted);
  font-size: var(--fs-2xl);
}
.topics-search-form input[type="search"] {
  flex: 1;
  border: 0;
  outline: 0;
  background: transparent;
  font-size: var(--fs-md);
  padding: var(--space-2) 4px;
  font-family: inherit;
  color: var(--fg);
  min-width: 0;
}
.topics-search-btn {
  appearance: none;
  border: 0;
  background: var(--p);
  color: var(--bg);
  font-size: var(--fs-sm);
  font-weight: 700;
  padding: var(--space-2) 16px;
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: background 0.15s ease;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.topics-search-btn:hover {
  background: var(--p-dark);
}
.topics-search-btn-count {
  font-size: var(--fs-xs);
  font-weight: 700;
  background: rgba(255, 255, 255, 0.22);
  color: var(--bg);
  padding: 1px var(--space-2);
  border-radius: var(--r-pill);
  font-family: "Inter", sans-serif;
  min-width: 36px;
  text-align: center;
}
.topics-search-clear {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-size: var(--fs-xs);
  color: var(--muted);
  text-decoration: none;
  padding: var(--space-2) 10px;
  border-radius: var(--r-pill);
  background: var(--bg-3);
}
.topics-search-clear:hover {
  background: var(--line);
  color: var(--fg);
}
.topics-search-clear .mi {
  font-size: var(--fs-md);
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ===== 検索フィルタ統一パネル ===== */
.topics-filter-panel {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-4) var(--space-5);
  margin: 0 auto var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.topics-filter-panel .topics-filters {
  display: grid;
  grid-template-columns: 88px 1fr;
  align-items: flex-start;
  gap: var(--space-3) var(--space-4);
  margin: 0;
  justify-content: initial;
}
.topics-filter-panel .topics-filters + .topics-filters {
  border-top: 1px dashed var(--line);
  padding-top: var(--space-3);
}
.topics-filter-panel .topics-filters-label {
  font-size: var(--fs-xs);
  color: var(--muted);
  margin: 0;
  text-align: right;
  font-weight: 600;
  padding-top: var(--space-1);
}
.topics-filter-panel .topics-filters-chips {
  display: flex;
  flex-wrap: wrap;
  row-gap: var(--space-2);
  column-gap: var(--space-2);
  align-items: center;
}
/* 統一 chip サイズ（パネル内は全て sm 相当） */
.topics-filter-panel .topic-chip {
  padding: var(--space-1) var(--space-3);
  font-size: var(--fs-xs);
  font-weight: 600;
  border-width: 1px;
  border-radius: var(--r-pill);
  line-height: 1.4;
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}
.topics-filter-panel .topic-chip .mi {
  font-size: var(--fs-md);
}
.topics-filter-panel .topic-chip.is-active {
  background: var(--fg);
  color: var(--bg);
  border-color: var(--fg);
}
.topics-filter-panel .topic-chip.is-active .mi {
  color: var(--bg) !important;
}

.topic-chip-count {
  font-family: "Inter", sans-serif;
  font-size: var(--fs-xs);
  opacity: 0.65;
  margin-left: var(--space-1);
  font-weight: 600;
}
.topic-chip.is-active .topic-chip-count {
  opacity: 0.85;
}

.topic-chip-sm {
  padding: var(--space-1) var(--space-3);
  font-size: var(--fs-xs);
  border-width: 1px;
}
.topic-chip-sm .mi {
  font-size: var(--fs-md);
}

@media (max-width: 640px) {
  .topics-filter-panel {
    padding: var(--space-3);
    gap: var(--space-3);
  }
  .topics-filter-panel .topics-filters {
    grid-template-columns: 1fr;
    gap: var(--space-2);
  }
  .topics-filter-panel .topics-filters-label {
    text-align: left;
    padding-top: 0;
  }
  .topics-filter-panel .topics-filters-chips {
    row-gap: var(--space-2);
    column-gap: var(--space-2);
  }
}

/* 件数サマリ */
.topics-summary {
  text-align: center;
  font-size: var(--fs-sm);
  color: var(--muted);
  margin-bottom: var(--space-5);
}
.topics-summary strong {
  color: var(--fg);
  font-family: "Inter", sans-serif;
  font-weight: 700;
}

/* 空状態 */
.topics-empty {
  text-align: center;
  padding: var(--space-20) 24px;
  background: var(--bg-2);
  border: 1px dashed var(--line);
  border-radius: var(--r);
  color: var(--muted);
}
.topics-empty .mi {
  color: var(--muted-3);
  margin-bottom: var(--space-3);
  display: block;
}
.topics-empty p {
  margin: 0 0 18px;
}

/* ページネーション */
.pagination {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: center;
  align-items: center;
  margin: var(--space-12) 0 0;
}
.pagination a,
.pagination span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  min-width: 38px;
  height: 38px;
  padding: 0 12px;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--fg-2);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  text-decoration: none;
  transition: all 0.15s ease;
}
.pagination a:hover {
  border-color: var(--p);
  color: var(--p);
  background: var(--p-soft-2);
}
.pagination .pagination-num.is-current {
  background: var(--p);
  border-color: var(--p);
  color: var(--bg);
  cursor: default;
}
.pagination-btn .mi {
  font-size: var(--fs-xl);
}
.pagination-ellipsis {
  border: 0;
  background: transparent;
  color: var(--muted);
}
@media (max-width: 640px) {
  .pagination a,
  .pagination span {
    min-width: 34px;
    height: 34px;
    padding: 0 8px;
    font-size: var(--fs-xs);
  }
  .pagination
    .pagination-num:not(.is-current):not(:nth-child(-n + 3)):not(
      :nth-last-child(-n + 3)
    ) {
    display: none;
  }
}

/* 詳細ページのタグ一覧 */
.article-tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin: var(--space-6) 0 8px;
  padding: var(--space-4) 18px;
  background: var(--bg-2);
  border: 1px solid var(--line);
  border-radius: var(--r);
}
.article-tags-label {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--muted);
  margin-right: var(--space-1);
}
.article-tags-label .mi {
  font-size: var(--fs-lg);
  color: var(--muted);
}
/* タイトル直下のタグ群（背景なし・コンパクト） */
.article-tags.article-tags-top {
  margin: var(--space-4) 0 12px;
  padding: 0;
  background: transparent;
  border: 0;
}

/* 詳細ページのヒーロー画像 */
.article-hero {
  position: relative;
  margin: 0 0 24px;
  padding: 0;
  border-radius: var(--r);
  overflow: hidden;
  background: var(--fg);
  border: 1px solid var(--line);
}
.article-hero img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  background: var(--paper, #fff);
}
.article-hero-cat {
  position: absolute;
  left: var(--space-4);
  top: var(--space-4);
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-2) 12px;
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--bg);
  border-radius: var(--r-pill);
  letter-spacing: 0.02em;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.18);
}
.article-hero-cat .mi {
  font-size: var(--fs-md);
  color: var(--bg);
}
.article-hero-cat.is-static {
  position: static;
}
.article-hero-meta {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  margin: 0 0 12px;
}
.article-hero-xbadge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-2) 12px;
  font-size: var(--fs-xs);
  font-weight: 700;
  background: var(--fg);
  color: var(--bg);
  border-radius: var(--r-pill);
}
.article-hero-xbadge .mi {
  font-size: var(--fs-md);
  color: var(--bg);
}
.article-hero-ytbadge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-2) 12px;
  font-size: var(--fs-xs);
  font-weight: 700;
  background: var(--danger-fg);
  color: var(--bg);
  border-radius: var(--r-pill);
}
.article-hero-ytbadge .mi {
  font-size: var(--fs-md);
  color: var(--bg);
}

/* ===== Topics 個別ページ：PC 2カラム + SPA レイアウト ===== */
/* section の左右余白を消し、layout 側に集約（横 padding 多重化を防ぐ） */
.topics-detail-section {
  padding-top: var(--space-6);
  padding-left: 0;
  padding-right: 0;
}
.topics-detail-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  max-width: var(--bp-xl);
  margin: 0 auto;
  padding: 0 var(--space-6);
  container-type: inline-size;
  container-name: topics-detail;
}
@media (max-width: 640px) {
  .topics-detail-layout {
    padding: 0 var(--space-4);
  }
}
/* Mobile: 本文を先に表示（DOM順は sidebar→article だが視覚は逆転） */
.topics-detail-layout > .topics-detail-article {
  order: 1;
}
.topics-detail-layout > .topics-sidebar {
  order: 2;
}

@container topics-detail (min-width: 980px) {
  .topics-detail-layout {
    grid-template-columns: 340px minmax(0, 1fr);
    gap: var(--space-8);
    align-items: flex-start;
  }
  .topics-detail-layout > .topics-detail-article {
    order: 0;
  }
  .topics-detail-layout > .topics-sidebar {
    order: 0;
    display: block;
  }
  .topics-detail-article {
    min-width: 0;
  }
}
@media (min-width: 980px) {
  .topics-detail-layout {
    grid-template-columns: 340px minmax(0, 1fr);
    gap: var(--space-8);
  }
  .topics-detail-layout > .topics-detail-article {
    order: 0;
  }
  .topics-detail-layout > .topics-sidebar {
    order: 0;
  }
}

.topics-sidebar {
  position: sticky;
  top: var(--space-20);
  max-height: calc(100vh - 96px);
}
@media (max-width: 980px) {
  .topics-sidebar {
    position: static;
    max-height: none;
    margin-bottom: var(--space-6);
  }
}
.topics-sidebar-inner {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-4);
  max-height: calc(100vh - 110px);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.topics-sidebar-search {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-2);
  background: var(--bg-2);
  border: 1px solid var(--line);
  border-radius: var(--r-pill);
  padding: var(--space-1) 4px 4px 32px;
}
.topics-sidebar-search .topics-search-icon {
  position: absolute;
  left: var(--space-3);
  color: var(--muted);
  font-size: var(--fs-xl);
}
.topics-sidebar-search input[type="search"] {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  outline: 0;
  font-size: var(--fs-sm);
  padding: var(--space-2) 4px;
}
.topics-sidebar-advanced {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  appearance: none;
  border: 0;
  background: var(--p);
  color: var(--bg);
  border-radius: var(--r-pill);
  padding: var(--space-1) 10px;
  font-size: var(--fs-xs);
  font-weight: 700;
  cursor: pointer;
  transition: filter 0.15s ease;
  font-family: inherit;
}
.topics-sidebar-advanced:hover {
  filter: brightness(1.1);
}
.topics-sidebar-advanced .mi {
  font-size: var(--fs-md);
}

/* 詳細検索モーダル */
body.is-topics-modal-open {
  overflow: hidden;
}
.topics-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-5);
}
.topics-modal[hidden] {
  display: none;
}
.topics-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.55);
  backdrop-filter: blur(2px);
}
.topics-modal-panel {
  position: relative;
  background: var(--bg);
  border-radius: var(--r);
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
  width: 100%;
  max-width: 720px;
  max-height: calc(100vh - 40px);
  display: flex;
  flex-direction: column;
}
.topics-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) 20px;
  border-bottom: 1px solid var(--line);
}
.topics-modal-header h2 {
  margin: 0;
  font-size: var(--fs-lg);
  font-weight: 700;
  color: var(--fg);
}
.topics-modal-close {
  appearance: none;
  border: 0;
  background: transparent;
  width: 32px;
  height: 32px;
  border-radius: var(--r);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--muted);
  transition:
    background 0.12s ease,
    color 0.12s ease;
}
.topics-modal-close:hover {
  background: var(--bg-3);
  color: var(--fg);
}
.topics-modal-body {
  padding: var(--space-5);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}
.topics-modal-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.topics-modal-field label,
.topics-modal-label {
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--fg-2);
  letter-spacing: 0.02em;
}
.topics-modal-field input[type="search"] {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-3) 12px;
  font-size: var(--fs-md);
  font-family: inherit;
  background: var(--bg);
}
.topics-modal-field input[type="search"]:focus {
  outline: 2px solid var(--p);
  outline-offset: -1px;
}
.topics-modal-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}
.topics-modal-chips .topics-sidebar-chip {
  font-size: var(--fs-xs);
  padding: var(--space-2) 11px;
}
.topics-modal-chips .topics-sidebar-chip .mi {
  font-size: var(--fs-md);
  vertical-align: middle;
  margin-right: 2px;
}
.topics-modal-footer {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-2);
  padding-top: var(--space-1);
  border-top: 1px solid var(--line);
  margin-top: var(--space-1);
  padding-top: var(--space-4);
}
.topics-modal-reset,
.topics-modal-apply {
  appearance: none;
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-2) 16px;
  font-size: var(--fs-sm);
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.15s ease;
}
.topics-modal-reset {
  background: var(--bg);
  color: var(--fg-2);
}
.topics-modal-reset:hover {
  background: var(--bg-3);
}
.topics-modal-apply {
  background: var(--p);
  color: var(--bg);
  border-color: var(--p);
}
.topics-modal-apply:hover {
  filter: brightness(1.1);
}
@media (max-width: 640px) {
  .topics-modal {
    padding: 0;
  }
  .topics-modal-panel {
    border-radius: 0;
    max-width: none;
    max-height: 100vh;
    height: 100vh;
  }
}
.topics-sidebar-filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  margin: var(--space-1) 0;
}
.topics-sidebar-chip {
  appearance: none;
  border: 1px solid var(--line);
  background: var(--bg);
  border-radius: var(--r-pill);
  padding: 3px var(--space-3);
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--fg-2);
  cursor: pointer;
  transition: all 0.15s ease;
  font-family: inherit;
}
.topics-sidebar-chip:hover {
  border-color: var(--p);
  color: var(--p);
}
.topics-sidebar-chip.is-active {
  background: var(--p);
  color: var(--bg);
  border-color: var(--p);
}
.topics-sidebar-meta {
  font-size: var(--fs-xs);
  color: var(--muted);
  padding: 2px var(--space-1);
}
.topics-sidebar-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  container-type: inline-size;
  container-name: ts-list;
}
.topics-sidebar-list.is-loading {
  opacity: 0.5;
  pointer-events: none;
}
.topics-sidebar-item {
  border-radius: var(--r);
  transition: background 0.12s ease;
}
.topics-sidebar-item:hover {
  background: var(--bg-3);
}
.topics-sidebar-item.is-current {
  background: var(--p-soft-2);
  outline: 2px solid var(--p);
  outline-offset: -2px;
}

/* リスト内コンパクトカード（サムネ左・テキスト右、要約なし） */
.ts-card {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: var(--space-2);
  padding: var(--space-2);
  text-decoration: none;
  color: inherit;
  align-items: flex-start;
}
.ts-card-thumb {
  aspect-ratio: 1 / 1;
  overflow: hidden;
  border-radius: var(--r);
  background: var(--bg-3);
}
.ts-card-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.ts-card-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.ts-card-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--fs-xs);
  color: var(--muted);
}
.ts-card-meta time {
  font-family: "Inter", sans-serif;
}
.ts-card-cat {
  display: inline-flex;
  align-items: center;
  padding: 1px var(--space-2);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--bg);
  letter-spacing: 0.02em;
}
.ts-card-region {
  font-family: "Inter", sans-serif;
  font-weight: 700;
  background: var(--bg-3);
  color: var(--fg-2);
  padding: 0 4px;
  border-radius: 3px;
  font-size: var(--fs-xs);
}
.ts-card-icon {
  color: var(--p);
  font-size: var(--fs-md);
}
.ts-card-title {
  font-size: var(--fs-xs);
  line-height: 1.5;
  color: var(--fg);
  font-weight: 600;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
@container ts-list (min-width: 280px) {
  .ts-card-title {
    font-size: var(--fs-sm);
  }
}
@container ts-list (min-width: 320px) {
  .ts-card {
    grid-template-columns: 72px minmax(0, 1fr);
  }
}

.topics-sidebar-pagination {
  display: flex;
  gap: var(--space-1);
  align-items: center;
  justify-content: center;
  padding: var(--space-2) 4px;
}
.topics-sidebar-pagination button {
  appearance: none;
  border: 1px solid var(--line);
  background: var(--bg);
  color: var(--fg-2);
  font-size: var(--fs-xs);
  padding: var(--space-2) 10px;
  border-radius: var(--r);
  cursor: pointer;
  font-family: inherit;
}
.topics-sidebar-pagination button:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}
.topics-sidebar-pagination button:not(:disabled):hover {
  border-color: var(--p);
  color: var(--p);
}
.ts-pager-num {
  font-size: var(--fs-xs);
  color: var(--muted);
  padding: 0 4px;
}

.topics-sidebar-empty,
.topics-sidebar-error {
  text-align: center;
  padding: var(--space-6) 8px;
  font-size: var(--fs-xs);
  color: var(--muted);
}

/* 記事側の SPA ローディング */
.topics-detail-article.is-loading {
  opacity: 0.5;
  transition: opacity 0.2s ease;
}

/* 編集部注釈（要旨直後に出す固定文） */
.article-editor-note {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  margin: 0 0 28px;
  padding: var(--space-3) 14px;
  background: var(--bg-3);
  border-left: 3px solid var(--muted-2);
  border-radius: var(--r);
  font-size: var(--fs-xs);
  line-height: 1.7;
  color: var(--fg-2);
}
.article-editor-note .mi {
  font-size: var(--fs-xl);
  color: var(--muted);
  flex-shrink: 0;
  margin-top: 1px;
}

/* データ駆動レンダリング（個別ページ） */
.article-data h2 {
  font-size: var(--fs-2xl);
  font-weight: 800;
  margin: var(--space-10) 0 14px;
  padding-bottom: var(--space-2);
  border-bottom: 2px solid var(--line);
  color: var(--fg);
}
.article-data h2:first-child {
  margin-top: 0;
}
.article-fact-sheet {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}
.article-fact-sheet th {
  width: 30%;
  min-width: 140px;
  text-align: left;
  vertical-align: top;
  padding: var(--space-3) 14px;
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--fg-2);
  background: var(--bg-2);
  border: 1px solid var(--line);
  border-right: none;
}
.article-fact-sheet td {
  padding: var(--space-3) 16px;
  font-size: var(--fs-md);
  color: var(--fg);
  border: 1px solid var(--line);
}
.article-fact-sheet tr:not(:last-child) th,
.article-fact-sheet tr:not(:last-child) td {
  border-bottom: none;
}
.article-video-summary {
  background: var(--bg-2);
  border-left: var(--space-1) solid var(--p);
  padding: var(--space-4) 20px;
  border-radius: var(--r);
  font-size: var(--fs-base);
  line-height: 1.9;
  color: var(--fg-2);
  margin-bottom: var(--space-6);
}
.article-points {
  margin: 0 0 8px 1.4em;
}
.article-points li {
  margin-bottom: var(--space-2);
  line-height: 1.8;
  font-size: var(--fs-base);
  color: var(--fg-2);
}
.article-themes {
  margin: 0 0 8px 1.4em;
}
.article-themes li {
  margin-bottom: var(--space-2);
  font-size: var(--fs-md);
  color: var(--fg-2);
}
.article-sources {
  margin: 0 0 8px 1.4em;
}
.article-sources li {
  margin-bottom: var(--space-2);
  font-size: var(--fs-md);
}
.article-sources a {
  color: var(--p);
  text-decoration: underline;
  word-break: break-all;
}

/* X 投稿埋め込み（widgets.js 公式形式） */
.embed.embed-x {
  margin: var(--space-6) 0;
}
.embed.embed-x .twitter-tweet {
  margin: 0 auto !important;
}
/* widgets.js が成功した場合は .twitter-tweet-rendered が付与される。失敗時は素の blockquote を整形 */
.embed.embed-x .twitter-tweet:not(.twitter-tweet-rendered) {
  display: block;
  max-width: 550px;
  margin: var(--space-4) auto 0;
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-5) 22px;
  background: var(--bg);
  font-family: "Noto Sans JP", sans-serif;
  font-size: var(--fs-md);
  line-height: 1.7;
  color: var(--fg);
}
.embed.embed-x .twitter-tweet:not(.twitter-tweet-rendered) p {
  margin: 0 0 10px;
}
.embed.embed-x .twitter-tweet:not(.twitter-tweet-rendered) a {
  color: var(--p);
  text-decoration: underline;
  word-break: break-all;
}
.embed.embed-x-timeline {
  max-width: 550px;
  margin: var(--space-6) auto;
}

/* ===== Post content: figures (component-based) ===== */
.post-content .post-figure {
  margin: var(--space-8) 0;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--bg-2);
  padding: var(--space-5);
}
.post-content .post-figure .fig {
  width: 100%;
}
.post-content .post-figure .fig svg {
  display: block;
  width: 100%;
  height: auto;
  max-width: 100%;
}
.post-content .post-figure-caption {
  margin-top: var(--space-3);
  font-size: var(--fs-xs);
  color: var(--muted);
  line-height: 1.6;
}

/* ===== Post content: tables ===== */
.post-content table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  margin: var(--space-8) 0;
  font-size: var(--fs-md);
  line-height: 1.7;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.post-content table thead {
  background: linear-gradient(180deg, var(--bg-2) 0%, var(--bg-3) 100%);
}
.post-content table thead th {
  padding: var(--space-3) 16px;
  font-weight: 700;
  font-size: var(--fs-sm);
  color: var(--fg);
  text-align: left;
  letter-spacing: 0.01em;
  border-bottom: 2px solid var(--line);
  white-space: nowrap;
}
.post-content table tbody td {
  padding: var(--space-3) 16px;
  vertical-align: top;
  border-bottom: 1px solid var(--line);
  color: var(--fg-2);
}
.post-content table tbody tr:last-child td {
  border-bottom: none;
}
.post-content table tbody tr:nth-child(even) td {
  background: var(--bg-2);
}
.post-content table tbody tr:hover td {
  background: var(--p-soft-2);
  transition: background 0.15s ease;
}
.post-content table tbody td:first-child {
  font-weight: 600;
  color: var(--fg);
  white-space: nowrap;
}
.post-content table strong {
  color: var(--fg);
  font-weight: 700;
}
@media (max-width: 768px) {
  .post-content table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .post-content table thead th,
  .post-content table tbody td {
    padding: var(--space-3) 12px;
    font-size: var(--fs-sm);
  }
}

/* ===== Navigation v2: dropdown / mobile accordion ===== */
.nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--line);
}
.nav-toggle {
  display: none;
  background: transparent;
  border: none;
  cursor: pointer;
  padding: var(--space-2);
  color: var(--fg);
}
.nav-toggle .mi {
  font-size: var(--fs-4xl);
}
.nav-menu {
  display: flex;
  flex: 1;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-6);
  margin-left: var(--space-8);
}
.nav-primary {
  display: flex;
  gap: var(--space-6);
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--fg-2);
  margin: 0;
  padding: 0;
  list-style: none;
}
.nav-primary > li {
  position: relative;
}
.nav-primary-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-5) 8px;
  color: var(--fg-2);
  text-decoration: none;
  transition: color 0.15s;
}
.nav-primary-link:hover {
  color: var(--p);
}
.nav-primary > li.is-current > .nav-primary-link {
  color: var(--p);
}
.nav-caret {
  transition: transform 0.2s;
  font-size: var(--fs-lg);
}
.nav-has-children:hover > .nav-primary-link .nav-caret {
  transform: rotate(180deg);
  color: var(--p);
}
.nav-sub-toggle {
  display: none;
}

.nav-submenu {
  position: absolute;
  top: calc(100% + 0px);
  left: -16px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-3);
  min-width: 320px;
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.1);
  list-style: none;
  margin: 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition:
    opacity 0.18s,
    transform 0.18s,
    visibility 0.18s;
}
.nav-submenu::before {
  content: "";
  position: absolute;
  top: -20px;
  left: -20px;
  right: -20px;
  height: 24px;
}
.nav-has-children:hover > .nav-submenu,
.nav-has-children:focus-within > .nav-submenu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.nav-submenu li {
  list-style: none;
}
.nav-submenu a {
  display: flex;
  gap: var(--space-3);
  align-items: flex-start;
  padding: var(--space-3) 12px;
  border-radius: var(--r);
  color: var(--fg);
  text-decoration: none;
  font-size: var(--fs-sm);
  transition: background 0.15s;
}
.nav-submenu a:hover {
  background: var(--bg-2);
}
.nav-submenu a .mi {
  width: 28px;
  height: 28px;
  background: var(--p-soft);
  color: var(--p);
  border-radius: var(--r);
  font-size: var(--fs-lg);
  flex-shrink: 0;
}
.nav-sub-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.nav-sub-text strong {
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--fg);
}
.nav-sub-text em {
  font-size: var(--fs-xs);
  font-style: normal;
  color: var(--muted);
}

.nav-actions {
  display: flex;
  gap: var(--space-2);
  align-items: center;
  flex-shrink: 0;
}

/* モバイルドロワーオーバーレイ（PC幅では非表示。モバイル幅で position:fixed 化） */
.nav-overlay {
  display: none;
}

@media (max-width: 980px) {
  .nav-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .nav-menu {
    position: fixed;
    top: var(--space-16);
    left: auto;
    right: 0;
    /* .nav の backdrop-filter が containing block を作るため、
       viewport ベースで明示する（right/bottom: 0 だと .nav の小さい矩形に縛られる） */
    width: 90vw;
    max-width: 360px;
    height: calc(100vh - var(--space-16));
    height: calc(100dvh - var(--space-16));
    background: var(--bg);
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    margin: 0;
    padding: var(--space-4) 20px 80px;
    overflow-y: auto;
    transform: translateX(100%);
    transition: transform 0.25s ease;
    border-top: 1px solid var(--line);
    box-shadow: -8px 0 24px rgba(0, 0, 0, 0.08);
    z-index: 51;
  }
  /* ドロワーの裏のオーバーレイ（残り 10% をタップで close）
     .nav の backdrop-filter が containing block を作るため、
     overlay も viewport ベース寸法で明示する */
  .nav-overlay {
    display: block;
    position: fixed;
    top: var(--space-16);
    left: 0;
    width: 100vw;
    max-width: 100%;
    height: calc(100vh - var(--space-16));
    height: calc(100dvh - var(--space-16));
    background: rgba(15, 23, 42, 0.42);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s ease, visibility 0.2s ease;
    z-index: 50;
  }
  .nav.is-open .nav-overlay {
    opacity: 1;
    visibility: visible;
  }
  body.nav-locked {
    overflow: hidden;
  }
  .nav.is-open .nav-menu {
    transform: translateX(0);
  }
  .nav-primary {
    flex-direction: column;
    gap: 0;
    align-items: stretch;
  }
  .nav-primary > li {
    border-bottom: 1px solid var(--line);
  }
  .nav-primary-link {
    width: 100%;
    padding: var(--space-4) 4px;
    font-size: var(--fs-lg);
    justify-content: space-between;
  }
  .nav-caret {
    display: none;
  }
  .nav-sub-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--fg-2);
    padding: var(--space-2);
    position: absolute;
    right: 0;
    top: var(--space-2);
    transition: transform 0.2s;
  }
  .nav-has-children.is-open > .nav-sub-toggle {
    transform: rotate(180deg);
  }
  .nav-submenu {
    position: static;
    box-shadow: none;
    border: none;
    border-radius: 0;
    padding: 0 0 16px 4px;
    margin: 0;
    min-width: 0;
    opacity: 1;
    visibility: visible;
    transform: none;
    background: transparent;
    display: none;
  }
  .nav-has-children.is-open > .nav-submenu {
    display: block;
  }
  .nav-submenu a {
    padding: var(--space-3) 4px;
  }
  .nav-actions {
    flex-direction: column;
    gap: var(--space-2);
    width: 100%;
    margin-top: var(--space-6);
  }
  .nav-actions .btn-doc,
  .nav-actions .btn-cta {
    width: 100%;
    text-align: center;
    padding: var(--space-4) 16px;
    font-size: var(--fs-md);
  }
  body.nav-locked {
    overflow: hidden;
  }
}

/* ===== Override: nav submenu must NOT inherit .nav ul flex ===== */
/* PC のみ submenu を block 強制（モバイルではアコーディオン挙動を維持） */
@media (min-width: 981px) {
  .nav .nav-submenu {
    display: block;
    flex-direction: initial;
    gap: 0;
    flex-wrap: nowrap;
  }
}
.nav .nav-submenu > li {
  display: block;
  width: 100%;
}
.nav .nav-submenu a {
  display: flex;
  width: 100%;
}

/* Fix: nav-menu wrapping behavior on PC */
@media (min-width: 981px) {
  .nav-menu {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-6);
  }
  .nav-primary {
    display: flex;
    gap: var(--space-8);
    align-items: center;
  }
  .nav-primary > li {
    display: flex;
    align-items: center;
  }
  /* Ensure submenu opens at correct width (PC のみ) */
  .nav-submenu {
    min-width: 280px;
    max-width: 320px;
  }
  /* Hover should keep submenu visible */
  .nav-has-children > .nav-submenu {
    pointer-events: none;
  }
  .nav-has-children:hover > .nav-submenu,
  .nav-has-children:focus-within > .nav-submenu {
    pointer-events: auto;
  }
}
.nav-submenu a .mi {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Mobile re-overrides (must come after) */
@media (max-width: 980px) {
  .nav .nav-submenu {
    display: none !important;
  }
  .nav-has-children.is-open > .nav-submenu {
    display: block !important;
  }
  .nav-primary {
    flex-direction: column !important;
    align-items: stretch;
    gap: 0 !important;
  }
  .nav-primary > li {
    display: block;
  }
}

/* ===== Fix: post-card meta should wrap, h3 needs full text ===== */
.post-card-meta {
  flex-wrap: wrap;
  min-height: 22px;
}
.post-card h3 {
  font-size: var(--fs-lg);
  font-weight: 800;
  line-height: 1.55;
  letter-spacing: -0.01em;
  margin: var(--space-1) 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.post-card-excerpt {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* News list (no thumbnail) */
.news-list {
  list-style: none;
  margin: 0;
  padding: 0;
  max-width: 880px;
  margin-left: auto;
  margin-right: auto;
}
.news-list > li {
  border-bottom: 1px solid var(--line);
}
.news-list > li:first-child {
  border-top: 1px solid var(--line);
}
.news-row {
  display: grid;
  grid-template-columns: 110px 90px 1fr;
  gap: var(--space-5);
  align-items: center;
  padding: var(--space-5) 4px;
  text-decoration: none;
  color: var(--fg);
  transition: background 0.15s;
}
.news-row:hover {
  background: var(--bg-2);
}
.news-row-date {
  font-size: var(--fs-sm);
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
  font-family: "Inter", sans-serif;
}
.news-row-cat {
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--p);
  background: var(--p-soft);
  padding: var(--space-1) 10px;
  border-radius: var(--r-pill);
  text-align: center;
  letter-spacing: 0.02em;
}
.news-row-title {
  font-size: var(--fs-base);
  font-weight: 600;
  color: var(--fg);
  line-height: 1.55;
}
@media (max-width: 768px) {
  .news-row {
    grid-template-columns: 1fr;
    gap: var(--space-2);
    padding: var(--space-4) 4px;
  }
  .news-row-date,
  .news-row-cat {
    display: inline-block;
    margin-right: var(--space-2);
  }
}

/* Taxonomy filter (category/tag pages) */
.taxonomy-filter {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  margin-bottom: var(--space-10);
}
.taxonomy-filter a {
  padding: var(--space-2) 16px;
  border: 1.5px solid var(--line);
  background: var(--bg);
  color: var(--fg-2);
  border-radius: var(--r-pill);
  font-size: var(--fs-sm);
  font-weight: 700;
  text-decoration: none;
  transition:
    border-color 0.15s,
    color 0.15s,
    background 0.15s;
}
.taxonomy-filter a:hover {
  border-color: var(--p);
  color: var(--p);
}
.taxonomy-filter a.active {
  border-color: var(--p);
  background: var(--p);
  color: var(--bg);
}

/* Empty state */
.empty-state {
  text-align: center;
  padding: var(--space-16) 24px;
}
.empty-state p {
  color: var(--muted);
  margin-bottom: var(--space-6);
  font-size: var(--fs-base);
}

/* Related tags */
.related-tags {
  margin-top: var(--space-16);
  padding: var(--space-8);
  background: var(--bg-2);
  border-radius: var(--r);
  text-align: center;
}
.related-tags h3 {
  font-size: var(--fs-base);
  font-weight: 700;
  margin-bottom: var(--space-4);
  color: var(--fg);
}
.tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: center;
}
.tag-list a {
  padding: var(--space-2) 14px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  color: var(--fg-2);
  text-decoration: none;
  font-weight: 600;
  transition:
    border-color 0.15s,
    color 0.15s;
}
.tag-list a:hover {
  border-color: var(--p);
  color: var(--p);
}

/* ============================================
 * Mobile uplift — 横スクロール防止・タッチターゲット拡大・
 * フォントサイズ自動調整・コンテナ余白の統一
 * ============================================ */

/* タップ性向上（全要素共通） */
@media (max-width: 768px) {
  html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }
  /* Safari の input 16px 未満で発生するズーム防止 */
  input,
  select,
  textarea {
    font-size: var(--fs-lg);
  }
  /* タッチターゲット最小 44x44（ヘッダー内除く: nav 自身が高さを制御） */
  .btn,
  button:not(.nav-toggle):not(.nav-sub-toggle),
  a.btn,
  .topic-tag,
  .topics-search-btn,
  .pagination a,
  .pagination button {
    min-height: 44px;
  }
  .topic-chip,
  .topic-chip-sm {
    min-height: 32px; /* チップは 32px で密度確保 */
  }
}

/* 640px 以下: コンテナ余白・フォント・カード密度 */
@media (max-width: 640px) {
  /* 横 padding は 1 階層のみに集約（多重化防止） */
  /* 1) 直接コンテンツを内包する section は左右 padding を持つ */
  .section {
    padding: var(--space-6) var(--space-4);
  }

  /* 2) section が detail-layout / container を内包する場合、外側 section の左右 padding を消し、内側に統一 */
  .section:has(> .topics-detail-layout),
  .section:has(> .container),
  .section:has(> .section-inner) {
    padding-left: 0;
    padding-right: 0;
  }
  .container,
  .section-inner,
  .topics-detail-layout {
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }

  /* 3) layout 配下の article は padding を持たない（layout 側が負担）
   *    ただし .ui-tab-panel はカード内コンテンツとして横 padding を維持する */
  .topics-detail-layout > .topics-detail-article,
  .topics-detail-layout > .post-article,
  .topics-detail-layout .article-data,
  .topics-detail-layout .post-content {
    padding-left: 0;
    padding-right: 0;
  }
  .topics-detail-layout .ui-tab-panel {
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }
  .topics-detail-layout .ui-tabs--framed .ui-tab-panel {
    padding-left: var(--space-5);
    padding-right: var(--space-5);
  }

  /* 4) ネスト要素（callout / pre / blockquote）の左右 padding は内側のみ */
  .post-content pre,
  .post-content blockquote,
  .post-content .callout {
    margin-left: 0;
    margin-right: 0;
  }

  /* ヒーロー */
  .hero {
    padding: var(--space-12) var(--space-4) var(--space-10);
  }
  .hero h1,
  .hero-title {
    font-size: var(--fs-4xl);
    line-height: 1.3;
  }
  .hero p,
  .hero-sub {
    font-size: var(--fs-md);
  }

  /* CV band */
  .cv-band {
    padding: var(--space-12) var(--space-4);
  }
  .cv-band-title {
    font-size: var(--fs-3xl);
  }
  .cv-band-grid {
    grid-template-columns: 1fr;
    gap: var(--space-3);
  }

  /* フォーム */
  .form-wrap {
    padding: var(--space-5);
  }
  .form-wrap input,
  .form-wrap textarea,
  .form-wrap select {
    width: 100%;
  }

  /* テーブル横スクロール（記事内） */
  .post-content table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* 記事タイトル・リード */
  .article-title {
    font-size: var(--fs-3xl);
    line-height: 1.35;
  }
  .article-lead {
    font-size: var(--fs-md);
  }

  /* コードブロックの折返し */
  pre {
    white-space: pre-wrap;
    word-wrap: break-word;
  }

  /* 大きすぎる見出しの抑制 */
  h1 {
    font-size: var(--fs-4xl);
    line-height: 1.3;
  }
  h2 {
    font-size: var(--fs-2xl);
    line-height: 1.4;
  }
  h3 {
    font-size: var(--fs-xl);
    line-height: 1.4;
  }

  /* フッター */
  .footer {
    padding: var(--space-10) var(--space-4) var(--space-6);
  }
}

/* 画像の最大幅保証（モバイルで突き抜け防止） */
img,
video,
iframe,
embed {
  max-width: 100%;
}

/* ============================================
 * Mobile Action Bar — scroll-to-top + sticky CV/Search
 * モバイル（≤768px）のみ表示
 * ============================================ */
.mab-scrolltop,
.mab-bar {
  display: none;
}

@media (max-width: 768px) {
  /* 下部スティッキー アクションバー */
  .mab-bar {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: var(--z-sticky);
    background: var(--bg);
    border-top: 1px solid var(--line);
    box-shadow: var(--shadow-md);
    padding: var(--space-2) var(--space-3);
    gap: var(--space-2);
    padding-bottom: max(var(--space-2), env(safe-area-inset-bottom));
  }
  .mab-btn {
    flex: 1 1 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-1);
    min-height: 48px;
    padding: var(--space-2) var(--space-3);
    border-radius: var(--r);
    font-size: var(--fs-md);
    font-weight: 700;
    cursor: pointer;
    border: 1px solid var(--line);
    background: var(--bg);
    color: var(--fg);
    text-decoration: none;
    transition: var(--ease);
  }
  .mab-btn .mi {
    font-size: var(--fs-2xl);
  }
  .mab-btn-search {
    background: var(--bg-2);
    color: var(--fg);
  }
  .mab-btn-search:active {
    background: var(--bg-3);
  }
  .mab-btn-cv {
    background: var(--p);
    color: var(--bg);
    border-color: var(--p);
  }
  .mab-btn-cv:active {
    background: var(--p-dark);
    border-color: var(--p-dark);
  }
  .mab-btn-label {
    font-size: var(--fs-md);
  }

  /* 上スクロールボタン */
  .mab-scrolltop {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: fixed;
    right: var(--space-3);
    bottom: calc(64px + env(safe-area-inset-bottom)); /* アクションバー直上 */
    z-index: var(--z-sticky);
    width: 44px;
    height: 44px;
    border-radius: var(--r-pill);
    background: var(--fg);
    color: var(--bg);
    border: 0;
    box-shadow: var(--shadow-md);
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px);
    transition:
      opacity 0.2s ease,
      transform 0.2s ease;
    cursor: pointer;
  }
  .mab-scrolltop.is-visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
  }
  .mab-scrolltop[hidden] {
    display: none;
  }
  .mab-scrolltop .mi {
    font-size: var(--fs-3xl);
  }

  /* アクションバー分の本文余白を確保（フッター被り防止） */
  body {
    padding-bottom: calc(64px + env(safe-area-inset-bottom));
  }

  /* 検索結果モーダル */
  .mab-search-modal {
    position: fixed;
    inset: 0;
    z-index: var(--z-modal);
    background: rgba(15, 23, 42, 0.55);
    overflow: hidden;
    display: flex;
    flex-direction: column;
  }
  .mab-search-modal-inner {
    margin-top: auto;
    width: 100%;
    height: 92vh;
    background: var(--bg);
    border-radius: var(--r) var(--r) 0 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: var(--space-3) var(--space-4) var(--space-12);
  }
  .mab-search-modal-head {
    display: flex;
    justify-content: flex-end;
    position: sticky;
    top: 0;
    background: var(--bg);
    padding: var(--space-2) 0;
    margin: 0 0 var(--space-3);
    z-index: 1;
  }
  .mab-search-modal-close {
    width: 40px;
    height: 40px;
    border-radius: var(--r-pill);
    background: var(--bg-2);
    color: var(--fg);
    border: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
  }
  .mab-search-modal-results {
    margin-top: var(--space-4);
  }
  body.mab-modal-open {
    overflow: hidden;
  }
}

/* スマホで CV 帯を非表示にする選択肢（mab-bar が CV 役を担うため） */
@media (max-width: 768px) {
  .cv-band[data-cv-mobile-hide] {
    display: none;
  }
}

/* ===== 用語集ツールチップ ===== */
.gloss-term,
.js-keyword {
  border-bottom: 1.5px dotted var(--fg-2);
  cursor: help;
  text-decoration: none;
  background-size: 100% 100%;
  padding: 0 1px;
  border-radius: 2px;
  transition:
    border-color var(--ease),
    color var(--ease),
    background var(--ease);
}
.gloss-term:hover,
.gloss-term:focus,
.js-keyword:hover,
.js-keyword:focus {
  border-bottom-color: var(--p);
  color: var(--p-fg-deep);
  background: var(--p-soft-2);
  outline: none;
}

#gloss-popup {
  position: fixed;
  z-index: var(--z-modal);
  width: max-content;
  max-width: min(340px, calc(100vw - 16px));
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r);
  box-shadow: var(--shadow-md);
  padding: var(--space-3) var(--space-4);
  pointer-events: none;
  opacity: 0;
  transform: translateY(4px);
  transition:
    opacity 0.15s,
    transform 0.15s;
  word-wrap: break-word;
  overflow-wrap: break-word;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
#gloss-popup.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
#gloss-popup.has-modal-cta {
  cursor: pointer;
}

.gloss-popup-head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
}
.gloss-popup-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: auto;
  padding: 2px;
  background: none;
  border: none;
  cursor: pointer;
  color: var(--muted);
  border-radius: var(--r);
  flex-shrink: 0;
  line-height: 1;
}
.gloss-popup-close:hover {
  background: var(--bg-2);
  color: var(--fg);
}
.gloss-popup-kind {
  display: inline-flex;
  align-items: center;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.03em;
  padding: 2px var(--space-2);
  border-radius: var(--r-pill);
  background: var(--p-soft-2);
  color: var(--p-fg-deep);
  border: 1px solid var(--p-soft-3);
  white-space: nowrap;
}
.gloss-popup-kind[data-kind="tag"] {
  background: var(--accent-soft);
  color: var(--accent-deep);
  border-color: var(--accent-mid);
}
.gloss-popup-kind[data-kind="both"] {
  background: var(--warm-bg);
  color: var(--warm-deep);
  border-color: var(--warm-soft);
}
.gloss-popup-kind[hidden] {
  display: none;
}

.gloss-popup-term {
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--fg);
  margin: 0;
  flex: 1;
  min-width: 0;
}
.gloss-popup-desc {
  font-size: var(--fs-sm);
  color: var(--fg-2);
  line-height: 1.65;
  margin: 0;
}
.gloss-popup-desc[hidden] {
  display: none;
}

.gloss-popup-counts {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}
.gloss-popup-counts[hidden] {
  display: none;
}
.gloss-popup-count {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--fs-xs);
  padding: 2px var(--space-2);
  border-radius: var(--r-pill);
  background: var(--bg-2);
  color: var(--fg-2);
  border: 1px solid var(--line);
}
.gloss-popup-count[hidden] {
  display: none;
}
.gloss-popup-count .mi {
  font-size: var(--fs-sm);
  color: var(--muted);
}
.gloss-popup-count-num {
  font-weight: 700;
  color: var(--fg);
}

.gloss-popup-cta {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-1);
  padding-top: var(--space-2);
  border-top: 1px dashed var(--line);
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--p);
}
.gloss-popup-cta[hidden] {
  display: none;
}
.gloss-popup-cta .mi {
  font-size: var(--fs-md);
}
.gloss-popup-cta-label {
  flex: 1;
}

@media (max-width: 640px) {
  #gloss-popup {
    max-width: calc(100vw - 16px);
  }
}

/* ===== Keyword/Tag Unified Modal ===== */
body.is-keyword-modal-open {
  overflow: hidden;
}
.keyword-modal {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: var(--z-modal);
  padding: var(--space-4);
}
.keyword-modal[hidden] {
  display: none;
}
.keyword-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.55);
  backdrop-filter: blur(2px);
}
.keyword-modal-panel {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 720px;
  height: min(720px, calc(100vh - var(--space-8)));
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.keyword-modal-header {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--line);
  background: var(--bg-2);
}
.keyword-modal-title {
  flex: 1;
  min-width: 0;
  font-size: var(--fs-xl);
  font-weight: 700;
  color: var(--fg);
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.keyword-modal-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: transparent;
  border: 0;
  color: var(--muted);
  border-radius: var(--r);
  cursor: pointer;
  transition:
    background var(--ease),
    color var(--ease);
}
.keyword-modal-close:hover {
  background: var(--bg-3);
  color: var(--fg);
}
.keyword-modal-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: var(--space-5);
}
.keyword-modal-loading,
.keyword-modal-error,
.keyword-modal-empty {
  text-align: center;
  color: var(--muted);
  font-size: var(--fs-sm);
  padding: var(--space-8) var(--space-4);
}
.keyword-modal-error {
  color: var(--danger-fg);
}

.keyword-modal-desc {
  background: var(--p-soft-2);
  border: 1px solid var(--p-soft-3);
  border-radius: var(--r);
  padding: var(--space-4);
  margin-bottom: var(--space-5);
}
.keyword-modal-desc p {
  margin: 0;
  font-size: var(--fs-md);
  line-height: 1.75;
  color: var(--p-fg-deep);
}
.keyword-modal-cat {
  display: inline-block;
  background: var(--p);
  color: var(--bg);
  font-size: var(--fs-xs);
  font-weight: 700;
  padding: 2px var(--space-2);
  border-radius: var(--r);
  margin-bottom: var(--space-2);
  text-transform: uppercase;
}
.keyword-modal-aliases {
  margin-top: var(--space-2) !important;
  font-size: var(--fs-xs) !important;
  color: var(--muted) !important;
}

.keyword-modal-tabs {
  margin-bottom: var(--space-4);
}

.keyword-modal-posts {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin-top: var(--space-4);
}
.keyword-modal-post {
  display: block;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--bg);
  color: var(--fg);
  text-decoration: none;
  transition:
    border-color var(--ease),
    background var(--ease),
    transform var(--ease);
}
.keyword-modal-post:hover {
  border-color: var(--p);
  background: var(--p-soft-2);
}
.keyword-modal-post-meta {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-xs);
  margin-bottom: var(--space-1);
}
.keyword-modal-post-pt {
  color: var(--km-pt, var(--p));
  font-weight: 700;
}
.keyword-modal-post-date {
  color: var(--muted);
}
.keyword-modal-post-title {
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--fg);
  margin: 0 0 var(--space-1);
  line-height: 1.5;
}
.keyword-modal-post-excerpt {
  font-size: var(--fs-sm);
  color: var(--fg-2);
  margin: 0;
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.keyword-modal-more {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  margin-top: var(--space-4);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--p);
  text-decoration: none;
}
.keyword-modal-more:hover {
  color: var(--p-dark);
}

.keyword-modal-section {
  margin-top: var(--space-6);
}
.keyword-modal-section-title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--fg);
  margin: 0 0 var(--space-3);
}
.keyword-modal-services,
.keyword-modal-features {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-3);
}
.keyword-modal-service,
.keyword-modal-feature {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--bg);
  color: var(--fg);
  text-decoration: none;
  transition:
    border-color var(--ease),
    background var(--ease);
}
.keyword-modal-service:hover,
.keyword-modal-feature:hover {
  border-color: var(--p);
  background: var(--p-soft-2);
}
.keyword-modal-service strong,
.keyword-modal-feature strong {
  font-size: var(--fs-md);
  color: var(--fg);
}
.keyword-modal-service span,
.keyword-modal-feature span {
  font-size: var(--fs-xs);
  color: var(--muted);
}

@media (max-width: 768px) {
  .keyword-modal {
    padding: var(--space-2);
  }
  .keyword-modal-panel {
    height: calc(100vh - var(--space-4));
  }
  .keyword-modal-header {
    padding: var(--space-3) var(--space-4);
  }
  .keyword-modal-body {
    padding: var(--space-4);
  }
  .keyword-modal-services,
  .keyword-modal-features {
    grid-template-columns: 1fr;
  }
}

/* ============================================
   Callouts: Note / Tip / Warning / Important
   使用例:
   <div class="callout callout--note"><strong>メモ:</strong> ...</div>
   または .post-content 内で <blockquote class="callout callout--tip">
   ============================================ */
.post-content .callout {
  position: relative;
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: var(--space-3);
  align-items: start;
  border: 1px solid var(--line);
  border-left-width: 4px;
  border-radius: var(--r);
  padding: var(--space-4) var(--space-5);
  margin: var(--space-6) 0;
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  font-size: var(--fs-base);
  line-height: 1.8;
}
.post-content .callout::before {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  font-size: 18px;
  font-weight: 800;
  border-radius: var(--r-pill);
  color: #fff;
  margin-top: 2px;
}
.post-content .callout > *:first-child {
  margin-top: 0;
}
.post-content .callout > *:last-child {
  margin-bottom: 0;
}

.post-content .callout--note {
  border-color: var(--p-soft);
  border-left-color: var(--p);
  background: var(--p-soft);
}
.post-content .callout--note::before {
  content: "i";
  background: var(--p);
  font-style: italic;
  font-family: Georgia, serif;
}

.post-content .callout--tip {
  border-color: var(--accent-bg, #ecfdf5);
  border-left-color: var(--accent, #16a34a);
  background: var(--accent-bg, #ecfdf5);
}
.post-content .callout--tip::before {
  content: "✓";
  background: var(--accent, #16a34a);
}

.post-content .callout--warning {
  border-color: var(--warm-bg, #fffbeb);
  border-left-color: var(--warm, #d97706);
  background: var(--warm-bg, #fffbeb);
}
.post-content .callout--warning::before {
  content: "!";
  background: var(--warm, #d97706);
}

.post-content .callout--important {
  border-color: var(--danger-bg, #fef2f2);
  border-left-color: var(--danger, #dc2626);
  background: var(--danger-bg, #fef2f2);
}
.post-content .callout--important::before {
  content: "!";
  background: var(--danger, #dc2626);
}

.post-content .callout-title {
  display: block;
  font-weight: 800;
  margin-bottom: var(--space-1);
  font-size: var(--fs-md);
  color: var(--fg);
}

/* ============================================
   Definition list / KV pairs
   ============================================ */
.post-content dl {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: var(--space-2) var(--space-4);
  margin: 0 0 var(--space-6);
  padding: var(--space-4) var(--space-5);
  background: var(--bg-2);
  border-radius: var(--r);
  border: 1px solid var(--line);
}
.post-content dt {
  font-weight: 700;
  color: var(--p-dark);
  align-self: start;
}
.post-content dd {
  margin: 0;
  color: var(--fg-2);
}

/* ============================================
   Step / numbered card list (ol.steps)
   <ol class="steps"><li><strong>title</strong>desc</li></ol>
   ============================================ */
.post-content ol.steps {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
  margin: var(--space-6) 0;
  counter-reset: post-steps;
}
.post-content ol.steps > li {
  counter-increment: post-steps;
  padding: var(--space-4) var(--space-5) var(--space-4)
    calc(var(--space-5) + 44px);
  border: 1px solid var(--line);
  border-left: 4px solid var(--p);
  border-radius: var(--r);
  background: var(--paper);
  position: relative;
  min-height: 64px;
  margin-bottom: 0;
}
.post-content ol.steps > li::before {
  content: counter(post-steps);
  position: absolute;
  left: var(--space-4);
  top: 50%;
  transform: translateY(-50%);
  width: 32px;
  height: 32px;
  background: linear-gradient(180deg, var(--p) 0%, var(--p-dark) 100%);
  color: #fff;
  border-radius: var(--r-pill);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: var(--fs-md);
  box-shadow: var(--shadow-sm);
}
.post-content ol.steps > li > strong:first-child {
  display: block;
  font-size: var(--fs-md);
  color: var(--fg);
  margin-bottom: 4px;
}

/* ============================================
   Highlight inline tag (used for keywords)
   <span class="hl">keyword</span>
   ============================================ */
.post-content .hl {
  background: linear-gradient(transparent 65%, var(--p-soft-2, #d6dbf5) 65%);
  padding: 0 2px;
  font-weight: 700;
  color: var(--p-dark);
}

/* ============================================
   :::latest-topics N ディレクティブ用ブロック
   ノウハウ記事内に最新トピックを自動表示する
   ============================================ */
.post-content .latest-topics-block {
  margin: var(--space-6) 0;
  padding: var(--space-5) var(--space-5);
  background: var(--bg-2);
  border: 1px dashed var(--line);
  border-radius: var(--r);
}
.post-content .latest-topics-block-head {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: var(--space-3);
  font-size: var(--fs-md);
  color: var(--fg);
}
.post-content .latest-topics-block-head .mi {
  color: var(--p);
}
.post-content .latest-topics-block-head strong {
  font-weight: 800;
  color: var(--fg);
}
.post-content .latest-topics-block-list {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--line);
}
.post-content .latest-topics-block-list > li {
  padding: 0;
  border-bottom: 1px solid var(--line);
  margin: 0;
}
.post-content .latest-topics-block-list > li::before {
  display: none;
}
.post-content .latest-topics-block-list a {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: var(--space-3);
  padding: var(--space-3) 4px;
  text-decoration: none;
  color: var(--fg);
  align-items: baseline;
  transition:
    background 0.15s ease,
    color 0.15s ease;
  border-radius: var(--r);
}
.post-content .latest-topics-block-list a:hover {
  background: var(--p-soft);
  color: var(--p-dark);
  text-decoration: none;
}
.post-content .latest-topics-block-list a::after {
  content: none;
}
.post-content .latest-topics-block-list time {
  font-size: 11.5px;
  color: var(--muted);
  font-family: "Inter", monospace;
}
.post-content .latest-topics-block-list span {
  font-size: var(--fs-sm);
  font-weight: 600;
  line-height: 1.5;
}
.post-content .latest-topics-block-foot {
  margin: var(--space-3) 0 0;
  text-align: right;
  font-size: var(--fs-xs);
}
.post-content .latest-topics-block-foot a {
  color: var(--p);
  font-weight: 700;
  text-decoration: none;
}
.post-content .latest-topics-block-foot a:hover {
  text-decoration: underline;
}
.post-content .latest-topics-block-caption {
  margin: var(--space-2) 0 0;
  font-size: var(--fs-xs);
  color: var(--muted);
  font-style: italic;
}
@media (max-width: 640px) {
  .post-content .latest-topics-block-list a {
    grid-template-columns: 1fr;
  }
}

/* ============================================
   /knowhow/{slug} 個別ページの章立てサイドバー
   ============================================ */
.kbook-sidebar {
  font-size: var(--fs-sm);
}
.kbook-sidebar-inner {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
}
.kbook-sidebar-head {
  padding: var(--space-3) var(--space-4);
  background: linear-gradient(135deg, var(--p) 0%, var(--p-dark) 100%);
}
.kbook-sidebar-toplink {
  display: flex;
  align-items: center;
  gap: 6px;
  color: #fff;
  text-decoration: none;
  font-weight: 800;
  font-size: var(--fs-md);
}
.kbook-sidebar-toplink:hover {
  color: #fff;
  opacity: 0.9;
}

.kbook-sidebar-tree {
  padding: var(--space-3) var(--space-4) var(--space-4);
  max-height: 70vh;
  overflow-y: auto;
}
.kbook-sb-part + .kbook-sb-part {
  margin-top: var(--space-4);
  padding-top: var(--space-3);
  border-top: 1px solid var(--line);
}
.kbook-sb-part-title {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--muted);
  margin: 0 0 var(--space-2);
  text-transform: uppercase;
}
.kbook-sb-chapters {
  list-style: none;
  padding: 0;
  margin: 0;
}
.kbook-sb-chapter {
  margin-bottom: var(--space-2);
}
.kbook-sb-ch-link {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: 8px;
  align-items: center;
  padding: 4px 6px;
  border-radius: var(--r);
  color: var(--fg);
  text-decoration: none;
  font-weight: 700;
  font-size: 13px;
  line-height: 1.4;
}
.kbook-sb-ch-link:hover {
  background: var(--p-soft);
  color: var(--p-dark);
}
.kbook-sb-chapter.is-current > .kbook-sb-ch-link {
  background: var(--p-soft);
  color: var(--p-dark);
}
.kbook-sb-ch-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: var(--p-soft);
  color: var(--p-dark);
  border-radius: var(--r-pill);
  font-size: 11px;
  font-weight: 800;
}
.kbook-sb-chapter.is-current .kbook-sb-ch-num {
  background: var(--p);
  color: #fff;
}
.kbook-sb-articles {
  list-style: none;
  padding: 4px 0 4px 32px;
  margin: 0;
  border-left: 1px dashed var(--line);
  margin-left: 11px;
}
.kbook-sb-article {
  margin: 2px 0;
}
.kbook-sb-article a,
.kbook-sb-article .kbook-sb-art-text {
  display: block;
  padding: 4px 8px;
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--fg-2);
  text-decoration: none;
  border-radius: var(--r);
  border-left: 2px solid transparent;
}
.kbook-sb-article a:hover {
  background: var(--p-soft);
  color: var(--p-dark);
  border-left-color: var(--p);
}
.kbook-sb-article.is-current .kbook-sb-art-text {
  background: var(--p-soft);
  color: var(--p-dark);
  font-weight: 700;
  border-left-color: var(--p);
}

.kbook-sidebar-foot {
  padding: var(--space-3) var(--space-4);
  border-top: 1px solid var(--line);
  background: var(--bg-2);
}
.kbook-sidebar-foot a {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--p);
  text-decoration: none;
  font-size: 12px;
  font-weight: 600;
}
.kbook-sidebar-foot a:hover {
  text-decoration: underline;
}

@media (max-width: 980px) {
  .kbook-sidebar-tree {
    max-height: none;
  }
}

/* ============================================
   :::example ディレクティブ — 例示用のコンテンツ枠
   variant: example（既定・電球） / story（エピソード・本のアイコン）
   ============================================ */
.post-content .example-block {
  margin: var(--space-6) 0;
  padding: 0;
  border: 1px solid var(--p-soft);
  border-radius: var(--r);
  background: var(--paper);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.post-content .component-frame-head,
.post-content .example-block-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: var(--space-2) var(--space-4);
  padding-bottom: var(--space-3);
  background: linear-gradient(
    90deg,
    var(--p-soft) 0%,
    rgba(67, 85, 191, 0.08) 100%
  );
  border-bottom: 1px solid var(--p-soft);
}
.post-content .component-frame-head .mi {
  font-size: 18px;
  color: var(--p-dark);
}
.post-content .component-frame-label {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  color: var(--p-dark);
  text-transform: uppercase;
}
.post-content .component-frame-body {
  padding: var(--space-4) var(--space-5);
  font-size: var(--fs-base);
  line-height: 1.85;
  color: var(--fg-2);
}
.post-content .component-frame-body > *:first-child {
  margin-top: 0;
}
.post-content .component-frame-body > *:last-child {
  margin-bottom: 0;
}
.post-content .example-block-head .mi {
  font-size: 18px;
  color: var(--p-dark);
}
.post-content .example-block-label {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  color: var(--p-dark);
  text-transform: uppercase;
}
.post-content .example-block-body {
  padding: var(--space-4) var(--space-5);
  font-size: var(--fs-base);
  line-height: 1.85;
  color: var(--fg-2);
}
.post-content .example-block-body > *:first-child {
  margin-top: 0;
}
.post-content .example-block-body > *:last-child {
  margin-bottom: 0;
}
.post-content .example-block-body p {
  margin: 0 0 var(--space-3);
}
.post-content .example-block-body p:last-child {
  margin-bottom: 0;
}

/* story variant: 暖色寄りで物語調 */
.post-content .example-block--story {
  border-color: var(--warm-bg, #fffbeb);
}
.post-content .example-block--story .example-block-head {
  background: linear-gradient(
    90deg,
    var(--warm-bg, #fffbeb) 0%,
    rgba(217, 119, 6, 0.08) 100%
  );
  border-bottom-color: var(--warm-bg, #fffbeb);
}
.post-content .example-block--story .example-block-head .mi,
.post-content .example-block--story .example-block-label {
  color: var(--warm-deep, #b45309);
}

/* ============================================
   knowhow TOC (sidebar tab + inline + mobile)
   ============================================ */

/* スティッキー化 — 既存 .topics-sidebar クラスを併用
   ヘッダー (sticky / 87px) の下に確実に出るよう top を 100px に固定 */
.kbook-sidebar.topics-sidebar {
  position: sticky;
  top: 100px;
  align-self: flex-start;
  max-height: calc(100vh - 120px);
  overflow: hidden;
}
.kbook-sidebar.topics-sidebar .kbook-sidebar-inner {
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - 120px);
}

/* タブ */
.kbook-sb-tabs {
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.kbook-sb-tablist {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  background: var(--bg-2);
  border-bottom: 1px solid var(--line);
  padding: 0;
}
.kbook-sb-tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: var(--space-3) var(--space-2);
  border: none;
  background: transparent;
  color: var(--muted);
  font-size: var(--fs-sm);
  font-weight: 700;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  transition:
    color var(--ease),
    border-color var(--ease),
    background var(--ease);
}
.kbook-sb-tab:hover {
  color: var(--p);
  background: var(--p-soft);
}
.kbook-sb-tab.is-active {
  color: var(--p-dark);
  background: var(--paper);
  border-bottom-color: var(--p);
}

.kbook-sb-toc-panel,
.kbook-sb-dir-panel {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
}

/* サイドバー内の目次（タブパネル） */
.kbook-sb-toc {
  padding: var(--space-3) var(--space-4);
  font-size: var(--fs-sm);
}
.kbook-sb-toc-empty {
  padding: var(--space-6) var(--space-3);
  color: var(--muted);
  text-align: center;
  font-size: var(--fs-sm);
  line-height: 1.6;
}
.kbook-sb-toc-empty-sub {
  font-size: 11px;
  color: var(--muted-2);
}
.kbook-sb-toc-list {
  list-style: none;
  padding: 0;
  margin: 0;
  border-left: 2px solid var(--line);
}
.kbook-sb-toc-list .toc-item {
  padding: 0;
  margin: 0;
}
.kbook-sb-toc-list .toc-item a {
  display: block;
  padding: 6px 12px;
  color: var(--fg-2);
  text-decoration: none;
  font-size: 12.5px;
  line-height: 1.45;
  border-left: 2px solid transparent;
  margin-left: -2px;
  transition:
    color var(--ease),
    background var(--ease),
    border-color var(--ease);
}
.kbook-sb-toc-list .toc-item.toc-level-3 a {
  padding-left: 28px;
  font-size: 12px;
  color: var(--muted);
}
.kbook-sb-toc-list .toc-item a:hover {
  color: var(--p-dark);
  background: var(--p-soft);
}
.kbook-sb-toc-list .toc-item.is-active > a {
  color: var(--p-dark);
  background: var(--p-soft);
  border-left-color: var(--p);
  font-weight: 700;
}

/* 本文上部のインライン目次 */
.post-toc-inline {
  margin: var(--space-6) 0 var(--space-8);
  padding: var(--space-4) var(--space-5);
  background: var(--p-soft);
  border-left: 4px solid var(--p);
  border-radius: 0 var(--r) var(--r) 0;
}
.post-toc-head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-weight: 800;
  color: var(--p-dark);
  font-size: var(--fs-md);
  margin-bottom: var(--space-3);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid rgba(67, 85, 191, 0.15);
}
.post-toc-count {
  margin-left: auto;
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--p);
  background: var(--paper);
  padding: 2px 8px;
  border-radius: var(--r-pill);
}
.post-toc-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2px var(--space-4);
  counter-reset: post-toc;
}
@media (max-width: 640px) {
  .post-toc-list {
    grid-template-columns: 1fr;
  }
}
.post-toc-list .toc-item a {
  display: block;
  padding: 4px 8px;
  color: var(--fg);
  text-decoration: none;
  font-size: var(--fs-sm);
  line-height: 1.5;
  border-radius: var(--r);
  border-left: 2px solid transparent;
  transition:
    color var(--ease),
    background var(--ease),
    border-color var(--ease);
}
.post-toc-list .toc-item.toc-level-2 a::before {
  counter-increment: post-toc;
  content: counter(post-toc) ". ";
  color: var(--p);
  font-weight: 700;
  margin-right: 4px;
}
.post-toc-list .toc-item.toc-level-3 a {
  padding-left: 24px;
  font-size: var(--fs-xs);
  color: var(--fg-2);
}
.post-toc-list .toc-item a:hover {
  color: var(--p-dark);
  background: var(--paper);
  border-left-color: var(--p);
}
.post-toc-list .toc-item.is-active > a {
  color: var(--p-dark);
  background: var(--paper);
  border-left-color: var(--p);
  font-weight: 700;
}
.post-toc-empty {
  font-size: var(--fs-sm);
  color: var(--muted);
}

/* モバイル横スライド目次 */
.post-mobile-toc {
  display: none;
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  margin: 0 calc(-1 * var(--space-4)) var(--space-4);
  max-width: 100vw;
  overflow: hidden;
}
.post-mobile-toc-inner {
  display: flex;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  overflow-x: auto;
  overflow-y: hidden;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  max-width: 100%;
}
.post-mobile-toc-inner::-webkit-scrollbar {
  display: none;
}
.post-mobile-toc-item {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--fg-2);
  background: var(--bg-2);
  border-radius: var(--r-pill);
  text-decoration: none;
  white-space: nowrap;
  transition:
    color var(--ease),
    background var(--ease);
}
.post-mobile-toc-item.toc-level-3 {
  font-size: 11px;
  opacity: 0.85;
}
.post-mobile-toc-item:hover {
  background: var(--p-soft);
  color: var(--p-dark);
}
.post-mobile-toc-item.is-active {
  background: var(--p);
  color: #fff;
}

/* スマホ：本文上のスライド目次を表示、サイドバースティッキー位置を調整 */
@media (max-width: 980px) {
  .post-mobile-toc {
    display: block;
  }
  .kbook-sidebar.topics-sidebar {
    position: static;
    max-height: none;
  }
  .kbook-sidebar.topics-sidebar .kbook-sidebar-inner {
    max-height: none;
  }
}
