:root {
  /* Surfaces */
  --surface-canvas: #ECE6DA;
  --surface-raised: #F7F3EB;
  --surface-elevated: #FBF8F3;

  /* Text — all AA passing on canvas */
  --text-primary: #1F2A36;      /* 12.05:1 */
  --text-secondary: #59534B;    /* 6.17:1  (was #6B645C 4.77:1) */
  --text-muted: #6D675F;        /* 4.58:1  (was #9A938A 2.42:1) */

  /* Accents */
  --accent-vermilion: #B8413A;       /* CTA bg only — for text use vermilion-deep */
  --accent-vermilion-soft: #C66854;
  --accent-vermilion-deep: #8E2E28;  /* 6.61:1 — text/link safe */
  --accent-dusk-indigo: #4E537B;     /* 5.97:1 — text/link safe */
  --accent-moon-haze: #C9CBC6;

  /* Borders */
  --border-hairline: #C9C0B4;
  --border-soft: #DDD4C5;

  /* Baseline-rhythm spacing (×28 = line-height of 16px body)
     half:14  base:28  ×1.5:42  ×2:56  ×3:84  ×4:112  ×5:140 */
  --rhythm-h:  14px;
  --rhythm-1:  28px;
  --rhythm-15: 42px;
  --rhythm-2:  56px;
  --rhythm-3:  84px;
  --rhythm-4:  112px;
  --rhythm-5:  140px;

  /* Micro spacing */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 16px;
  --space-4: 24px;

  /* Radii */
  --radius-xs: 2px;
  --radius-sm: 4px;
  --radius-md: 6px;

  /* Shadows */
  --elev-1: 0 1px 2px rgba(31, 42, 54, 0.04);
  --elev-2: 0 2px 12px rgba(31, 42, 54, 0.06);

  /* Motion */
  --ease-out: cubic-bezier(0.22, 0.61, 0.36, 1);

  /* Layout */
  --rail-inset: 24px;
  --container-w: 960px;
  --topnav-h: 72px; /* sticky header の高さ目安(scroll-padding 用) */

  /* Type scale — rem基準(px禁止→ズーム尊重)、Major Third 1.25 で段差を明確に。
     本文17pxはJP可読性のため据置。card見出しは本文と濁らないよう20pxへ。 */
  --text-meta:    0.75rem;    /* 12px  メタ/Mono */
  --text-caption: 0.875rem;   /* 14px  キャプション/補助 */
  --text-body:    1.0625rem;  /* 17px  本文 */
  --text-nav:     0.9375rem;  /* 15px  ナビ */
  --text-h3:      1.25rem;    /* 20px  カード見出し(本文と段差確保) */
  --text-h2-sub:  1.375rem;   /* 22px  法務見出し */
  --text-h2:      1.625rem;   /* 26px  セクション見出し */
  --text-h1:      1.9375rem;  /* 31px  サブページh1 */
  --text-hero:    clamp(2.75rem, 5vw + 1rem, 4.5rem); /* 44→72px 流動(marketing hero) */
}

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  /* sticky topnav の下に anchor が隠れない (WCAG 2.2 Focus Not Obscured) */
  scroll-padding-top: calc(var(--topnav-h) + var(--space-2));
}

body {
  /* canvas を主役に、上端だけ黄昏の残光でわずかに明るく、最下部をごく僅かに沈める。
     大面積の淡い wash 一枚で「黄昏の名残が天井から差す」気配(v3由来)を現状に加算。
     色相は和紙のまま、明度差は微小。.washi ノイズはこの上に乗る。 */
  background:
    linear-gradient(180deg,
      #F4E6CF 0%,
      #EFE7D5 28%,
      var(--surface-canvas) 52%,
      var(--surface-canvas) 72%,
      #E2DAC8 100%);
  background-attachment: fixed;
  color: var(--text-primary);
  font-family: 'Noto Sans JP', sans-serif;
  font-size: var(--text-body);
  line-height: 1.75;
  font-feature-settings: "palt" 1;
  font-variant-numeric: tabular-nums;
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
  position: relative;
  overflow-x: hidden;
}

/* === 和紙テクスチャ === */
.washi {
  position: fixed;
  inset: 0;
  background-image:
    /* B3: ごく淡い反転 vignette で中央が明、周縁微暗の空気感 */
    radial-gradient(ellipse 80% 60% at 50% 40%, transparent 0%, rgba(31, 42, 54, 0.025) 100%),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.12  0 0 0 0 0.16  0 0 0 0 0.21  0 0 0 0.03 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  pointer-events: none;
  z-index: 0;
}

/* === 両端の朱線（柱の暗示、ultra-thin & faded） === */
.rail {
  position: fixed;
  top: 8vh;
  bottom: 8vh;
  width: 1px;
  background: var(--accent-vermilion);
  opacity: 0.4;            /* was 0.55 — discreet */
  z-index: 2;
  pointer-events: none;
  mask-image: linear-gradient(to bottom,
    transparent 0%,
    black 12%,
    black 88%,
    transparent 100%);
  -webkit-mask-image: linear-gradient(to bottom,
    transparent 0%,
    black 12%,
    black 88%,
    transparent 100%);
}
.rail-left  { left:  var(--rail-inset); }
.rail-right { right: var(--rail-inset); }

/* 線の上下端の小さな括り（柱の頭・脚の暗示） */
.rail::before,
.rail::after {
  content: '';
  position: absolute;
  left: -3px;
  width: 7px;
  height: 1px;
  background: var(--accent-vermilion);
  opacity: 1;
}
.rail::before { top: 10%; }
.rail::after  { bottom: 10%; }

.container {
  max-width: var(--container-w);
  margin: 0 auto;
  padding: 0 calc(var(--rail-inset) + var(--space-3));
  position: relative;
  z-index: 1;
}

/* === Top nav band (sticky on desktop, plain on mobile) === */
.topnav-band {
  background: rgba(236, 230, 218, 0.78); /* washi half-透過 (障子越し) */
  backdrop-filter: blur(8px) saturate(1.1);
  -webkit-backdrop-filter: blur(8px) saturate(1.1);
  border-bottom: 1px solid var(--border-soft);
}
@media (min-width: 601px) {
  .topnav-band {
    position: sticky;
    top: 0;
    z-index: 5;
  }
}

.topnav {
  padding-block: var(--rhythm-1); /* 左右は container の padding を継承 */
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.topnav .brand {
  font-family: 'Noto Serif JP', serif;
  font-weight: 600;
  font-size: 1.25rem;       /* 20px — メニュー(15px)より明確に大きくしロゴの存在感を出す */
  letter-spacing: 0.04em;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.topnav .brand::before {
  content: '';
  width: 8px;
  height: 8px;
  background: var(--accent-vermilion);
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
}
/* === Hero === */
.hero {
  padding: var(--rhythm-4) 0 var(--rhythm-3);
  text-align: center;
  position: relative;
}

/* 背景の大判波紋（響き・気配） */
.hero-rings {
  position: absolute;
  top: 46%;           /* 中空(文字を抜く穴)を「Kitoshi」に重ねるため僅かに上へ */
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(680px, 100%); /* 元の波紋幅(最大680px・狭幅で100%)に復帰 */
  aspect-ratio: 1;
  z-index: -1;
  opacity: 0.6; /* 元の0.65寄りに戻して波紋の存在感を少し上げる */
  pointer-events: none;
  /* 中心(テキスト直下)を抜いて外周のみ残し、タグラインとの重なりを解消 */
  -webkit-mask-image: radial-gradient(circle at center, transparent 0, transparent 32%, #000 62%);
  mask-image: radial-gradient(circle at center, transparent 0, transparent 32%, #000 62%);
}
.hero-rings svg { width: 100%; height: 100%; display: block; }
.hero-rings circle {
  fill: none;
  stroke: var(--border-soft);
  stroke-width: 0.6;
}
.hero-rings .core {
  fill: var(--accent-vermilion-deep);
  stroke: none;
}

.hero h1 {
  font-family: 'Noto Serif JP', serif;
  font-weight: 600;
  font-size: var(--text-hero);
  line-height: 1.1;
  letter-spacing: -0.025em;
  margin-bottom: var(--space-2);
  position: relative;
}

/* 欄間の半円弧 */
.arch {
  display: flex;
  justify-content: center;
  margin-top: var(--rhythm-15); /* 見出しが小さくなり得るので少し詰めて連結感 */
  color: var(--border-hairline);
  position: relative;
}
.arch svg {
  width: clamp(280px, 52vw, 340px); /* 文字(Kitoshi≒300px)を少し包む欄間幅。見出しfluidに連動 */
  height: auto;
  display: block;
}
.arch .center-dot { fill: var(--accent-vermilion); }
.arch .side-dot  { fill: var(--accent-vermilion); opacity: 0.5; }

/* === 障子の組子 divider === */
.grid-deco {
  height: 1px;
  background:
    linear-gradient(to right,
      transparent 0%,
      transparent 14%,
      var(--border-hairline) 14%,
      var(--border-hairline) 14.4%,
      transparent 14.4%,
      transparent 28%,
      var(--border-hairline) 28%,
      var(--border-hairline) 28.4%,
      transparent 28.4%,
      transparent 42%,
      var(--border-hairline) 42%,
      var(--border-hairline) 42.4%,
      transparent 42.4%,
      transparent 56%,
      var(--border-hairline) 56%,
      var(--border-hairline) 56.4%,
      transparent 56.4%,
      transparent 70%,
      var(--border-hairline) 70%,
      var(--border-hairline) 70.4%,
      transparent 70.4%,
      transparent 85%,
      var(--border-hairline) 85%,
      var(--border-hairline) 85.4%,
      transparent 85.4%);
  position: relative;
}
.grid-deco::before {
  content: '';
  position: absolute;
  left: 50%;
  top: -2px;
  transform: translateX(-50%);
  width: 5px;
  height: 5px;
  background: var(--accent-vermilion);
  border-radius: 50%;
}

/* === Section === */
section.block {
  padding: var(--rhythm-3) 0;   /* 84px — multiple of baseline */
}
/* Home の section-header: §NN scaffolding を撤去後、h2 のみ収容 (impeccable absolute ban対応) */
.section-header {
  margin-bottom: var(--rhythm-15); /* 42px — proximity: header to body */
}
/* num-bar は page-head (サブページh1) でのみ使用 */
.num-bar {
  width: 3px;
  height: 22px;
  background: var(--accent-vermilion);
  display: inline-block;
  flex-shrink: 0;
}
.section-header h2 {
  font-family: 'Noto Serif JP', serif;
  font-weight: 600;
  font-size: var(--text-h2);
  letter-spacing: -0.005em;
}

section.block p {
  margin-bottom: var(--rhythm-h); /* 14px = half baseline */
  max-width: 65ch; /* impeccable 推奨の 65-75ch 帯。56ch だと日本語で改行位置が不自然になりがち */
  text-wrap: pretty; /* 行長バランス＋孤立行回避 (長文向き) */
  line-break: strict; /* 日本語の禁則を厳格に (句読点が行頭/行末で暴れない) */
}
/* リード文(About): 語の途中で割れないよう、語句を .nb(nowrap)で括る。
   改行は読点の所だけで起こる(または十分広ければ1行)。balanceは折り返し位置を保証しないため不使用。 */
section.block p.lead {
  max-width: none;
}
section.block p.lead .nb {
  white-space: nowrap;
}
section.block p:last-child {
  margin-bottom: 0;
}
section.block p.secondary {
  color: var(--text-secondary);
  font-size: 15px;
}

/* === App card === */
.apps-grid {
  display: grid;
  gap: var(--space-3);
}
.app-card {
  background: var(--surface-raised);
  border-radius: var(--radius-md);
  padding: var(--space-4); /* uniform: 左側の朱バーを撤去したので padding 不均一も解消 */
  box-shadow: var(--elev-1);
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  position: relative;
  transition: background 280ms var(--ease-out), box-shadow 280ms var(--ease-out), transform 280ms var(--ease-out);
  overflow: hidden;
}
/* impeccable absolute ban: side-stripe border (border-left > 1px as colored accent) を撤去。
   朱の存在感は hover の下線 draw-in (.app-card:hover::after) に集約。 */
.app-card::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: var(--accent-vermilion);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 280ms var(--ease-out);
}
.app-card:hover::after { transform: scaleX(1); }
.app-card:hover {
  background: var(--surface-elevated);
  box-shadow: var(--elev-2);
  transform: translateY(-1px);
}
.app-card .info h3 {
  font-family: 'Noto Serif JP', serif;
  font-weight: 600;
  font-size: var(--text-h3);
  margin-bottom: 2px;
  line-height: 1.4;
}
.app-card .info .desc {
  font-size: 14px;
  color: var(--text-secondary);
}
.app-card .status {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: 0.06em;
  white-space: nowrap;
}

/* === Links === WCAG-safe colors */
a {
  color: var(--accent-dusk-indigo);   /* 5.97:1 */
  text-decoration: none;
  position: relative;
  display: inline-block;
  transition: color 280ms var(--ease-out);
}
a::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 280ms var(--ease-out);
}
a:hover { color: var(--accent-vermilion-deep); }  /* 6.61:1 — was vermilion 4.37 */
a:hover::after { transform: scaleX(1); }
a:focus-visible {
  outline: 2px solid var(--accent-vermilion-deep);
  outline-offset: 3px;
  border-radius: var(--radius-xs);
}

/* === CTA button — Fitts: min 48px tap target === */
.cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  background: var(--accent-vermilion);
  color: var(--surface-elevated);     /* 5.11:1 on vermilion bg */
  padding: 14px 32px;
  min-height: 48px;
  border-radius: var(--radius-sm);
  font-family: 'Noto Sans JP', sans-serif;
  font-weight: 500;
  font-size: 15px;
  letter-spacing: 0.02em;
  transition: background 280ms var(--ease-out), transform 200ms var(--ease-out), box-shadow 280ms var(--ease-out);
  box-shadow: 0 1px 0 var(--accent-vermilion-deep);
}
.cta::after { display: none; }
.cta:hover {
  background: var(--accent-vermilion-soft);
  color: var(--surface-elevated);
  transform: translateY(-1px);
  box-shadow: 0 3px 0 var(--accent-vermilion-deep);
}
.cta:active {
  transform: translateY(0);
  box-shadow: 0 1px 0 var(--accent-vermilion-deep);
}
.cta:focus-visible {
  outline: 2px solid var(--accent-vermilion-deep);
  outline-offset: 3px;
}
.cta .arrow {
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
}

/* === Ornate divider === */
.ornate {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  margin: var(--rhythm-3) 0 var(--rhythm-1);
}
.ornate .line {
  width: 72px;
  height: 1px;
  background: var(--border-hairline);
}
.ornate .dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--accent-vermilion);
}
.ornate .dot-small {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--accent-vermilion);
  opacity: 0.55;
}

/* === Footer band (天井と床の対称感) === */
.footer-band {
  background: rgba(247, 243, 235, 0.5); /* gofun, ごく薄く */
  border-top: 1px solid var(--border-soft);
  margin-top: var(--rhythm-2);
}

/* === Footer (band 内の inner container) === */
footer {
  padding-block: var(--rhythm-3);
  position: relative;
}
.ripple {
  display: flex;
  justify-content: center;
  margin-bottom: var(--rhythm-2);
  color: var(--border-hairline);
}
.ripple svg { width: 56px; height: 56px; display: block; }
.ripple circle { fill: none; stroke: currentColor; stroke-width: 0.8; }
.ripple .center {
  fill: var(--accent-vermilion);
  stroke: none;
}

footer .row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-4);
  flex-wrap: wrap;
}
footer .brand-block {
  font-family: 'Noto Serif JP', serif;
  font-weight: 500;
  font-size: 15px;
  line-height: 1.5;
}
footer .brand-block .est {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: 0.06em;
  margin-left: var(--space-3); /* Kitoshi と同じ行に並べる(改行しない) */
  white-space: nowrap;
}

/* === Tablet === */
@media (max-width: 820px) {
  /* hero h1 は clamp() が流動対応するため px 上書き不要 */
  .hero { padding: var(--rhythm-3) 0 var(--rhythm-2); }
}

/* === Mobile === */
@media (max-width: 600px) {
  :root { --rail-inset: 12px; }
  .container { padding: 0 calc(var(--rail-inset) + var(--space-2)); }
  .hero { padding: var(--rhythm-2) 0 var(--rhythm-15); }
  .hero h1 { letter-spacing: -0.02em; }
  section.block { padding: var(--rhythm-2) 0; }
  .section-header h2 { font-size: 21px; }
  .num-bar { height: 20px; }
  footer .row {
    flex-direction: column;
  }
  .app-card {
    flex-direction: column;
    gap: var(--space-2);
  }
  .app-card .status {
    align-self: flex-start;
  }
  .ornate .line { width: 48px; }
  /* Mobile rail: slimmer inset, opacity lower */
  .rail { opacity: 0.3; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
  html { scroll-behavior: auto; }
}

/* ===== Kitoshi multi-page additions ===== */

/* Skip link */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 10;
  background: var(--surface-elevated);
  color: var(--text-primary);
  padding: 8px 16px;
  border-radius: var(--radius-sm);
}
.skip-link:focus {
  left: var(--rail-inset);
  top: 8px;
  outline: 2px solid var(--accent-vermilion-deep);
  outline-offset: 2px;
}
.skip-link::after { display: none; }

/* Header nav (multi-page) */
.topnav { flex-wrap: wrap; gap: var(--space-2) var(--space-3); }
.topnav .nav-menu ul {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-3);
}
.topnav .nav-menu a {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: var(--text-nav);
  color: var(--text-secondary);
  /* WCAG 2.2 Target Size: クリック領域を 24px 以上に */
  display: inline-block;
  padding: 6px 4px;
  transition: color 280ms var(--ease-out), transform 200ms var(--ease-out);
}
.topnav .nav-menu a:hover { color: var(--accent-vermilion-deep); transform: translateY(-1px); }

/* 現在ページの指示（朱・下線を常時表示） */
.nav-menu a[aria-current="page"],
.footer-nav a[aria-current="page"] { color: var(--accent-vermilion-deep); }
.nav-menu a[aria-current="page"]::after,
.footer-nav a[aria-current="page"]::after { transform: scaleX(1); }

/* ヘッダーナビは朱ドットを前置してブランドマークと呼応 (footerは控えめに) */
.nav-menu a[aria-current="page"]::before {
  content: '';
  display: inline-block;
  width: 5px;
  height: 5px;
  background: var(--accent-vermilion);
  border-radius: 50%;
  margin-right: 6px;
  vertical-align: 1px;
}

/* Sub-page header (h1) */
.page-head {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--rhythm-3) 0 var(--rhythm-15);
}
.page-head h1 {
  font-family: 'Noto Serif JP', serif;
  font-weight: 600;
  font-size: var(--text-h1);
  letter-spacing: -0.01em;
}
.page-head .num-bar { height: 26px; }

/* Apps page grid (multi-column) */
.apps-page .apps-grid {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

/* Badge */
.badge {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.06em;
  padding: 2px 8px;
  border-radius: var(--radius-xs);
  white-space: nowrap;
}
.badge-coming-soon { background: var(--accent-moon-haze); color: var(--text-primary); }
.badge-release { background: var(--accent-vermilion); color: var(--surface-elevated); }
.badge-sunset { background: var(--border-soft); color: var(--text-muted); }

/* Legal sections (privacy / terms frame) */
.legal-section { margin-bottom: var(--rhythm-2); }
.legal-section h2 {
  font-family: 'Noto Serif JP', serif;
  font-weight: 600;
  font-size: var(--text-h2-sub);
  margin-bottom: var(--rhythm-h);
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
}
.legal-section h2 .n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--accent-vermilion-deep);
}
.legal-todo {
  color: var(--text-muted);
  font-size: 14px;
  font-style: italic;
}

/* Tokushoho table */
.tokushoho-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15px;
}
.tokushoho-table th,
.tokushoho-table td {
  text-align: left;
  vertical-align: top;
  padding: var(--rhythm-h) var(--space-3);
  border-bottom: 1px solid var(--border-soft);
}
.tokushoho-table th {
  font-family: 'Noto Sans JP', sans-serif;
  font-weight: 500;
  color: var(--text-secondary);
  white-space: nowrap;
  width: 34%;
}

/* Contact dl */
.contact-dl {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: var(--rhythm-h) var(--space-3);
  margin-bottom: var(--rhythm-15);
}
.contact-dl dt {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: 0.06em;
}
.contact-dl dd { font-size: 15px; }

/* Footer nav + copyright */
.footer-nav ul {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
  margin-bottom: var(--space-4);
}
.footer-nav a {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--text-secondary);
  letter-spacing: 0.04em;
  /* WCAG 2.2 Target Size: クリック領域を 24px 以上に */
  display: inline-block;
  padding: 6px 4px;
}
.copyright {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: 0.04em;
  margin-top: var(--space-4);
}

/* Mobile additions */
@media (max-width: 600px) {
  /* ブランドを上、ナビを下段に積んで折り返す */
  .topnav { flex-direction: column; align-items: flex-start; gap: var(--space-2); }
  .topnav .nav-menu ul { gap: var(--space-2) var(--space-3); }
  .contact-dl { grid-template-columns: 1fr; gap: var(--space-1); }
  .tokushoho-table th { width: auto; }
  .page-head { padding: var(--rhythm-2) 0 var(--rhythm-15); }
}

/* Heading: impeccable 推奨で balance (短文の行長を均等化、見出しに最適) */
h1, h2, h3 { text-wrap: balance; }

/* === B1: hero h1 直下の極細縦線 (参道軸の暗示・浮遊感抑制) === */
.hero h1::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: -32px;
  width: 1px;
  height: 36px;
  background: linear-gradient(to bottom, var(--accent-vermilion) 0%, transparent 100%);
  transform: translateX(-50%);
  opacity: 0.45;
  pointer-events: none;
}

/* === B2 + W1: 障子組子 divider に微差 (章立て感 + wabi-sabi imperfection) ===
   nth-of-type(even) の grid-deco だけ outline ドット + 左に微小ずらし */
.grid-deco:nth-of-type(even)::before {
  background: transparent;
  box-shadow: inset 0 0 0 1px var(--accent-vermilion);
  left: 47%;
}

/* === Page-load orchestration (refined entrance, one-shot) === */
@keyframes kitoshi-fade-in { from { opacity: 0; } }
@keyframes kitoshi-rise-in {
  from { opacity: 0; transform: translateY(10px); }
}
@keyframes kitoshi-arch-draw { from { stroke-dashoffset: 260; } }

.rail { animation: kitoshi-fade-in 800ms var(--ease-out) 100ms backwards; }
.hero h1 { animation: kitoshi-rise-in 600ms var(--ease-out) 150ms backwards; }
.hero .arch svg path {
  stroke-dasharray: 260;
  animation: kitoshi-arch-draw 900ms var(--ease-out) 400ms backwards;
}
main > section.block:first-of-type {
  animation: kitoshi-rise-in 700ms var(--ease-out) 400ms backwards;
}

/* モーションは「一度きりのページロード入場」だけに集約。
   旧M1(全セクションのscroll fade-in)はimpeccableが名指しするAI臭のため撤去。
   旧M2(footer rippleの無限パルス)は目的なき装飾motion=fatigueのため撤去。 */
