/* =============================================================
 * ACADELI Media  styles.css（この1本だけ）
 *
 *   層（@layer）。後ろの層が前の層に勝つ。詳細度ではなく層の順で決まる
 *     tokens    決めごとの値（:root。文字・余白・色・角R・影・線・ブロックの寸法）
 *     base      素の要素と、main 直下の既定（部品が上書きできるよう、いちばん下）
 *     surfaces  節の面（l-surface--*）
 *     parts     部品（c-*）。スマホの見た目
 *     blocks    main 直下の型と余白（l-hero / l-section …）
 *     pc        PC幅での上書き（431 / 768 / 1000 / 1200px）
 *
 *   決まり
 *     ・文字は var(--fs-N)、余白は var(--sp-N)、色・角・影・線も名前つきの値だけ
 *     ・接頭辞 l- 配置 / c- 部品 / is- 状態 / u- 一度きり（命名規則.md）
 *     ・変種（--x）は「見た目が本当に違うもの」だけ。面が決める色は変種にしない
 * ============================================================= */


/* 層（レイヤー）。後ろの層が前の層に勝つ。詳細度ではなく、層の順で決まる。
 *   tokens   決めごとの値（:root）    base    素の要素   surfaces  節の面（l-surface--*）
 *   parts    部品（c-*）スマホの見た目   blocks  main 直下の型と余白   pc  PC幅での上書き */
@layer tokens, base, surfaces, parts, blocks, pc;

@layer tokens {
  :root {
    --ink: #171714;
    --paper: #f3f0e6;
    --cream: #fbf9f1;
    --red: #ad4934;
    --moss: #5d6747;
    --blue: #274a58;
    --line: rgba(23, 23, 20, .18);
    --shadow: 0 8px 22px var(--shade);               /* 影は3種類だけ：置いてあるもの／持ち上がったもの／下の帯 */
    --shadow-lift: 0 12px 28px var(--shade-strong);
    --shadow-up: 0 -8px 22px var(--shade);
    --bw: 1px;          /* 線は2種類だけ：細い罫／太い罫 */
    --bw-strong: 2px;
    --radius: 22px;   /* 角Rはこの1種類だけ。丸（50%）は形なので別。角を落とす所は var(--radius) を使う */

    /* 色の名前。色は var(--…) だけを書く（例外：画像に重ねる黒の膜は直書き） */
    --ink-soft: #625d56;
    --ink-mute: #706a62;
    --sand: #e8e2d7;
    --sand-light: #eee8dc;
    --sand-deep: #ded9cf;
    --mist: #dfe5e4;
    --mist-deep: #ccd6d7;
    --red-light: #c4533d;
    --red-deep: #743326;
    --on-dark: rgba(255,255,255,.72);
    --on-dark-weak: rgba(255,255,255,.6);
    --line-strong: rgba(23,23,20,.28);
    --rule-dark-faint: rgba(255,255,255,.16);
    --rule-dark: rgba(255,255,255,.25);
    --rule-dark-strong: rgba(255,255,255,.5);
    --shade: rgba(23,23,20,.08);
    --shade-strong: rgba(23,23,20,.15);
    --cream-glass: rgba(251,249,241,.91);
    --serif: "Yu Mincho", "Hiragino Mincho ProN", "Hiragino Mincho Pro", serif;
    --sans: "Helvetica Neue", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;

    /* 余白の級。padding / margin / gap は var(--sp-N) だけを書く。1〜2px の線まわりだけ px を直接書いてよい。 */
    --sp-4: 4px;
    --sp-8: 8px;
    --sp-12: 12px;
    --sp-16: 16px;
    --sp-20: 20px;
    --sp-24: 24px;
    --sp-28: 28px;
    --sp-32: 32px;
    --sp-40: 40px;
    --sp-48: 48px;
    --sp-56: 56px;
    --sp-64: 64px;
    --sp-72: 72px;
    --sp-80: 80px;

    /* 文字の級（スマホの値）。PCは 768px〜 の :root で同じ名前を書き換える。
     * 文字寸法は var(--fs-N) だけを使う。px を直接書かない。 */
    --fs-1: 6px;
    --fs-2: 7px;
    --fs-3: 8px;
    --fs-4: 9px;
    --fs-5: 10px;
    --fs-6: 11px;
    --fs-7: 12px;
    --fs-8: 14px;
    --fs-9: 16px;
    --fs-10: 18px;
    --fs-11: 20px;
    --fs-12: 22px;
    --fs-13: 25px;
    --fs-14: 28px;
    --fs-15: 31px;
    --fs-16: 34px;
    --fs-17: 40px;
    --fs-18: 52px;
  }

  @media (min-width: 768px) {
    :root {
      --fs-1: 9px;
      --fs-2: 10px;
      --fs-3: 12px;
      --fs-4: 13px;
      --fs-5: 14px;
      --fs-6: 15px;
      --fs-7: 17px;
      --fs-8: 18px;
      --fs-9: 20px;
      --fs-10: 22px;
      --fs-11: 23px;
      --fs-12: 25px;
      --fs-13: 29px;
      --fs-14: 32px;
      --fs-15: 33px;
      --fs-16: 36px;
      --fs-17: 42px;
      --fs-18: 55px;
    }
  }

  :root {
    --pad:  20px;    /* ブロックの左右。全ページ共通 */
    --tall: 72px;    /* 本体の縦 */
    --thin: 18px;    /* 帯の縦 */
    --mid:  52px;    /* 文字の表紙の縦 */
  }

  @media (min-width: 768px) {
    :root {
      --pad:  clamp(24px, 4vw, 56px);
      --tall: clamp(64px, 6vw, 104px);
      --thin: 22px;
      --mid:  clamp(56px, 5vw, 88px);
    }
  }

  :root {
    --shell:  1200px;                      /* 並べる幅 */
    --read:   680px;                       /* 読む幅。日本語で36字前後 */
    --pin:    clamp(420px, 44vw, 660px);   /* 左に固定する表紙の幅 */
    --navh:   64px;                        /* 上のナビの高さ */
  }
}

@layer base {
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; background: var(--sand-deep); }
  body { margin: 0; color: var(--ink); background: var(--sand-deep); font-family: var(--sans); -webkit-font-smoothing: antialiased; }
  body.is-menu-open { overflow: hidden; }
  a { color: inherit; text-decoration: none; }
  img { display: block; width: 100%; }
  button { color: inherit; font: inherit; }
  h1, h2, h3, p, figure { margin-top: 0; }
  .l-page { position: relative; width: 100%; max-width: 430px; min-height: 100vh; margin-inline: auto; overflow: hidden; background: var(--paper); box-shadow: var(--shadow-lift); }

  /* main 直下の既定。部品が自分で上書きできるよう、いちばん下の層に置く */
  main > * { padding-inline: var(--pad); margin-inline: 0; }
  @media (min-width: 1200px) {
    main > * { position: relative; z-index: 1; }
  }
  @media (min-width: 768px) {
    main img { max-height: 72vh; }
  }
}

@layer surfaces {
  /* ── 面（節の背景と文字色）─────────────────────────────
   * main の直下に置く節の色は、ここの8つから選ぶ。
   * :where() で詳細度を0にしてあるので、部品が自分で持つ文字色（パンくずなど）を上書きしない。
   * 2026-09-20 まで、背景色は節ごとに個別のルールに書かれていた（73件）。
   * sand は薄い3色（#eee5dc / #e8e2d5 / #e8e2d7）を1つにしたもの。 */
  :where(.l-surface--ink)   { color: var(--cream); background: var(--ink); }
  :where(.l-surface--moss)  { color: var(--cream); background: var(--moss); }
  :where(.l-surface--blue)  { color: var(--cream); background: var(--blue); }
  :where(.l-surface--red)   { color: var(--cream); background: var(--red); }
  :where(.l-surface--cream) { color: var(--ink); background: var(--cream); }
  :where(.l-surface--paper) { color: var(--ink); background: var(--paper); }
  :where(.l-surface--sand)  { color: var(--ink); background: var(--sand); }
  :where(.l-surface--mist)  { color: var(--ink); background: var(--mist); }
}

@layer parts {
  /* ── c-card ───────────────────────────────────────────
   * 選ぶのは「型」1つ ＋ 見た目の切り替え（任意）。
   *   型      （既定＝写真が上）／ --side 写真が左 ／ --text 写真なし ／
   *           --event 日付つき ／ --entry 番号つき ／ --tile 文字だけの箱 ／ --story 見出しつきの1枚
   *   写真の比率  （既定 3:2）／ --square ／ --portrait 4:5 ／ --free 元のまま
   *   面      --boxed クリームの台（角丸＋影）
   *   飾り    --soft 写真の四隅を丸める（side・text は上の罫つき）
   * スロット  c-card-media / -badge / -overlay / -meta / -body / -kicker / -title / -text / -tags / -action
   * 暗い地（l-surface--ink など）の上では、文字色が自動で明るくなる。 */
  .c-card { --ratio: 3 / 2; position: relative; display: block; }
  .c-card[hidden] { display: none; }
  .c-card > a { display: block; }
  .c-card-media { position: relative; display: block; overflow: hidden; }
  img.c-card-media, .c-card-media > img { display: block; width: 100%; aspect-ratio: var(--ratio); object-fit: cover; }
  .c-card--square { --ratio: 1 / 1; }
  .c-card--portrait { --ratio: 4 / 5; }
  .c-card--free { --ratio: auto; }
  .c-card--event { --ratio: 11 / 10; border-bottom: var(--bw) solid var(--line); }
  .c-card--entry { --ratio: 1 / 1.08; min-width: 84%; margin: 0; padding-bottom: var(--sp-20); background: var(--cream); scroll-snap-align: center; }
  .c-card--free img.c-card-media, .c-card--free .c-card-media > img { height: auto; }
  .c-card-body { display: flex; flex-direction: column; padding: var(--sp-16) 0 0; }
  .c-card-kicker, .c-card-title, .c-card-text, .c-card-tags { margin: 0; }
  .c-card-kicker { margin-bottom: var(--sp-12); font-size: var(--fs-1); font-weight: 700; letter-spacing: .1em; color: var(--ink-mute); }
  .c-card-title { font-family: var(--serif); font-size: var(--fs-11); font-weight: 500; line-height: 1.65; }
  .c-card-text { margin-top: var(--sp-12); font-size: var(--fs-4); line-height: 1.9; color: var(--ink-mute); }
  .c-card-tags { margin-top: var(--sp-12); padding-top: var(--sp-12); border-top: var(--bw) solid var(--line); font-size: var(--fs-2); font-style: normal; color: var(--ink-mute); }
  .c-card-action { align-self: flex-end; margin-top: var(--sp-16); font-size: var(--fs-2); font-style: normal; font-weight: 700; }
  .c-card-badge { position: absolute; z-index: 1; top: 12px; left: 12px; padding: var(--sp-8); color: var(--cream); background: var(--ink); font-size: var(--fs-1); font-style: normal; font-weight: 700; letter-spacing: .1em; }
  .c-card-badge--light { color: var(--ink); background: var(--cream-glass); }
  .c-card-badge--blue { background: var(--blue); }
  .c-card-badge--moss { background: var(--moss); }
  .c-card-badge--red { background: var(--red); }
  .c-card-overlay { position: absolute; z-index: 1; bottom: var(--sp-20); left: 18px; display: flex; align-items: baseline; gap: var(--sp-8); color: var(--cream); font-family: var(--serif); font-size: var(--fs-17); font-weight: 500; letter-spacing: .04em; }
  .c-card-overlay small { font-family: var(--sans); font-size: var(--fs-2); font-weight: 700; letter-spacing: .1em; }
  .c-card-media:has(.c-card-overlay)::after { position: absolute; inset: 0; content: ""; background: linear-gradient(180deg, transparent 45%, rgba(0,0,0,.6)); pointer-events: none; }

  /* 面と飾り */
  .c-card--boxed { overflow: hidden; color: var(--ink); background: var(--cream); border-radius: var(--radius); box-shadow: var(--shadow); }
  .c-card--boxed .c-card-body { padding: var(--sp-20); }
  /* 特集の入口（トップの moss の節）のカードだけ、文字は墨色のまま（元の見た目を保つ。コントラストは低めなので要確認） */
  .c-shelf .c-card { color: var(--ink); }
  .c-card--soft .c-card-media { border-radius: var(--radius); }

  /* 暗い地の上では、文字を明るくする（台つきは除く） */
  :where(.l-surface--ink, .l-surface--moss, .l-surface--blue, .l-surface--red) .c-card:not(.c-card--boxed) .c-card-kicker { color: var(--on-dark-weak); }
  :where(.l-surface--ink, .l-surface--moss, .l-surface--blue, .l-surface--red) .c-card:not(.c-card--boxed) .c-card-text { color: var(--on-dark); }
  :where(.l-surface--ink, .l-surface--moss, .l-surface--blue, .l-surface--red) :is(.c-card--side, .c-card--text) { border-color: var(--rule-dark); }

  /* --side 写真が左 */
  .c-card--side { display: grid; padding-block: var(--sp-16); border-top: var(--bw) solid var(--line); grid-template-columns: 118px 1fr; gap: var(--sp-16); --ratio: 4 / 5; }
  .c-card--side > a { display: contents; }
  .c-card--side .c-card-body { min-width: 0; padding: 0; }
  .c-card--side .c-card-title { font-size: var(--fs-9); line-height: 1.6; }
  .c-card--side .c-card-action { margin-top: auto; }

  /* --text 写真なし（題と、右端の矢印） */
  .c-card--text { padding-block: var(--sp-16); border-top: var(--bw) solid var(--line); display: flex; align-items: end; justify-content: space-between; gap: var(--sp-12); }
  .c-card--text .c-card-body { padding: 0; }
  .c-card--text .c-card-title { font-size: var(--fs-7); line-height: 1.7; }
  .c-card--text .c-card-action { margin: 0; padding-bottom: 2px; }

  .c-filter { position: sticky; top: 58px; z-index: 10; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; background: var(--cream); border-bottom: var(--bw) solid var(--line); }
  .c-filter button { padding: var(--sp-16) var(--sp-4) var(--sp-16); cursor: pointer; border: 0;
    border-bottom: var(--bw-strong) solid transparent; background: transparent; font-size: var(--fs-4); }
  .c-filter button.is-active { border-bottom-color: var(--red); font-weight: 700; }
  .c-sectionhead { position: relative; margin-bottom: var(--sp-32); }
  .c-cta { display: flex; justify-content: space-between; }
  .c-notice { font-size: var(--fs-3); line-height: 1.9; }
  .c-lead { margin: 0 0 var(--sp-32); font-family: var(--serif); font-size: var(--fs-6); line-height: 2; color: var(--ink-soft); }
  :where(.l-surface--ink, .l-surface--moss, .l-surface--blue, .l-surface--red) .c-lead { color: var(--on-dark); }
  .c-lead--large { font-size: var(--fs-9); color: inherit; }
  /* 見出しのすぐ下にリード文が来るときの間隔は、見出し側が持つ。
   * かつては リード文が -11/-12/-13px の負のmargin で自分を引き上げていた。
   * 負のmarginは「隣に何が来るか」で壊れるので使わない（2026-09-16）。 */
  .c-sectionhead:has(+ .c-lead, + .c-notice) { margin-bottom: var(--sp-24); }


  .c-header { position: sticky; z-index: 50; top: 0; display: flex; align-items: center; justify-content: space-between; height: 58px; padding: 0 var(--sp-20); color: var(--cream); background: var(--ink); }
  .c-header-logo { line-height: 1; }
  .c-header-logo span { display: block; font-family: "Shippori Mincho", var(--serif); font-size: var(--fs-10); font-weight: 600; letter-spacing: .16em; }
  .c-header-logo small { display: block; margin-top: var(--sp-4); font-size: var(--fs-3); font-weight: 400; letter-spacing: .12em; opacity: .78; }
  .c-footer-brand .c-header-logo { font-family: "Shippori Mincho", var(--serif); font-size: var(--fs-9); font-weight: 600; letter-spacing: .16em; }
  .c-menubutton { position: relative; z-index: 2; display: grid; width: 38px; height: 38px; padding: 0; cursor: pointer; border: 0; background: transparent; place-content: center; gap: var(--sp-8); }
  .c-menubutton span { display: block; width: 21px; height: 1px; background: currentColor; transition: transform .25s; }
  .c-menubutton[aria-expanded="true"] span:first-child { transform: translateY(3.5px) rotate(45deg); }
  .c-menubutton[aria-expanded="true"] span:last-child { transform: translateY(-3.5px) rotate(-45deg); }
  .c-menu { position: fixed; z-index: 1; top: 58px; width: min(100%, 430px); height: calc(100dvh - 58px); padding: var(--sp-28) var(--sp-20); color: var(--cream); background: var(--ink); opacity: 0; visibility: hidden; transform: translateY(-8px); transition: .25s ease; }
  .c-menu[aria-hidden="false"] { opacity: 1; visibility: visible; transform: none; }
  .c-menu a { display: grid; grid-template-columns: 35px 1fr; padding: var(--sp-16) 0; font-family: var(--serif); font-size: var(--fs-12); border-bottom: var(--bw) solid var(--rule-dark-faint); }
  .c-menu small { padding-top: var(--sp-8); font-family: var(--sans); font-size: var(--fs-2); }

  .c-breadcrumb { overflow-x: auto; padding-block: var(--sp-12) var(--sp-12); color: var(--ink-soft); border-bottom: var(--bw) solid var(--line); scrollbar-width: none; }
  .c-breadcrumb::-webkit-scrollbar { display: none; }
  .c-breadcrumb ol { display: flex; align-items: center; width: max-content; margin: 0; padding: 0; list-style: none; }
  .c-breadcrumb li { display: flex; align-items: center; font-size: var(--fs-4); font-weight: 700; line-height: 1.45; letter-spacing: .06em; white-space: nowrap; }
  .c-breadcrumb li + li::before { margin: 0 var(--sp-8); content: "/"; opacity: .34; }
  .c-breadcrumb a { padding-bottom: 2px; border-bottom: var(--bw) solid currentColor; }
  .c-breadcrumb li[aria-current="page"] { max-width: 155px; overflow: hidden; font-weight: 400; opacity: .72; text-overflow: ellipsis; }
  .c-breadcrumb--dark { color: var(--on-dark); border-color: var(--rule-dark-faint); }

  .c-back { position: fixed; z-index: 44; bottom: max(16px, env(safe-area-inset-bottom)); left: max(14px, calc(50% - 201px)); display: grid; width: 38px; height: 38px; padding: 0; place-items: center; cursor: pointer; color: var(--cream); background: rgba(23,23,20,.7); border: var(--bw) solid var(--rule-dark); border-radius: 50%; box-shadow: var(--shadow); font-family: inherit; font-size: var(--fs-10); font-weight: 300; line-height: 1; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); transition: opacity .2s, transform .2s, background .2s; }
  .c-back span { display: block; transform: translateY(-1px); }
  .c-back:hover { background: rgba(23,23,20,.84); transform: translateY(-1px); }
  .c-back:focus-visible { outline: var(--bw-strong) solid var(--cream); outline-offset: 2px; }
  .c-back--with-cta { bottom: calc(88px + env(safe-area-inset-bottom)); }
  .is-menu-open .c-back { opacity: 0; pointer-events: none; }

  @keyframes hero-in { from { opacity: .2; } to { opacity: 1; } }

  .c-sectionhead--main { }
  .c-sectionhead--main .c-sectionhead-kicker { margin-bottom: var(--sp-12); font-size: var(--fs-3); font-weight: 700; letter-spacing: .16em; }
  .c-sectionhead--main .c-sectionhead-kicker span { display: inline-block; min-width: 31px; }
  .c-sectionhead--main .c-sectionhead-title { margin: 0; font-family: var(--serif); font-size: var(--fs-14); font-weight: 500; line-height: 1.55; letter-spacing: .035em; }
  .c-sectionhead--main .c-sectionhead-aside { position: absolute; right: 0; bottom: 5px; font-size: var(--fs-2); letter-spacing: .13em; }
  .c-collection--rule { border-top: var(--bw) solid var(--line); }
  .c-cta--more { margin-top: var(--sp-28); padding: var(--sp-16) 1px; font-size: var(--fs-4); font-weight: 700; letter-spacing: .08em; border-bottom: var(--bw) solid var(--ink); }


  .c-notice--shelf { margin: var(--sp-48) 0 0; padding-top: var(--sp-20); color: var(--on-dark-weak); border-top: var(--bw) solid var(--rule-dark); }

  .c-sectionhead--type { display: grid; grid-template-columns: 27px 1fr auto; grid-template-rows: auto 1fr; gap: 0 var(--sp-12); align-items: start; padding-top: var(--sp-16); border-top: var(--bw) solid currentColor; }
  .c-sectionhead--type .c-sectionhead-kicker { grid-row: 1 / span 2; margin: 0; padding-top: var(--sp-4); font-size: var(--fs-2); font-weight: 800; letter-spacing: .08em; writing-mode: vertical-rl; }
  .c-sectionhead--type .c-sectionhead-title { grid-column: 2; margin: 0 0 var(--sp-4); font-family: var(--serif); font-size: var(--fs-12); font-weight: 500; }
  .c-sectionhead--type .c-sectionhead-note { grid-column: 2; margin: 0; font-size: var(--fs-3); opacity: .6; }
  .c-sectionhead--type .c-sectionhead-aside { grid-column: 3; grid-row: 1; padding-top: var(--sp-4); font-size: var(--fs-2); font-weight: 700; letter-spacing: .08em; }
  /* c-rail: 横に流す帯（スマホ）。PCでは格子に開く。--flow は PC でも流したままにする（写真だけの帯） */
  .c-rail { display: flex; gap: var(--sp-12); overflow-x: auto; padding-block: 0 var(--sp-20); outline: none; scroll-padding-inline: 20px; scroll-snap-type: x mandatory; scrollbar-width: none; }
  .c-rail::-webkit-scrollbar { display: none; }
  .c-rail > .c-card { flex: 0 0 78%; scroll-snap-align: start; }

  .c-card--story { display: flex; overflow: hidden; flex-direction: column; padding: var(--sp-20); background: var(--cream); border-radius: var(--radius); box-shadow: var(--shadow); }
  .c-card--story .c-rail { margin-top: var(--sp-16); padding-bottom: 0; }
  .c-card--story .c-rail > .c-card-media { flex: 0 0 84%; scroll-snap-align: start; }
  .c-card--story .c-rail > .c-card-media:only-child { flex-basis: 100%; }
  :where(.c-card--story) .c-card-meta{ display: flex; align-items: center; justify-content: space-between; padding: 1px 2px var(--sp-12); border-bottom: var(--bw) solid var(--line); }
  :where(.c-card--story) .c-card-meta b{ font-size: var(--fs-2); letter-spacing: .12em; }
  :where(.c-card--story) .c-card-meta small{ font-size: var(--fs-1); letter-spacing: .08em; color: var(--ink-mute); }
  :where(.c-card--story) .c-card-media i{ position: absolute; top: 50%; left: 50%; min-width: 74%; padding: var(--sp-8) var(--sp-8); color: var(--ink); background: var(--cream-glass); font-family: var(--serif); font-size: var(--fs-3); font-style: normal; line-height: 1.7; text-align: center; transform: translate(-50%,-50%); }
  .c-card--story > em { align-self: flex-end; margin-top: var(--sp-16); font-size: var(--fs-2); font-style: normal; font-weight: 700; letter-spacing: .08em; }

  .c-cta--gateway { align-items: center; margin-block: var(--sp-64) 0; padding: var(--sp-24) 2px; border-top: var(--bw) solid var(--ink); border-bottom: var(--bw) solid var(--ink); }
  .c-cta--gateway span { display: flex; flex-direction: column; }
  .c-cta--gateway small { margin-bottom: var(--sp-8); font-size: var(--fs-2); letter-spacing: .12em; }
  .c-cta--gateway strong { font-family: var(--serif); font-size: var(--fs-10); font-weight: 500; }
  .c-cta--gateway b { font-size: var(--fs-10); font-weight: 400; }

  .c-notice--priority { margin: 0 0 var(--sp-28); padding-left: var(--sp-12); font-family: var(--serif); color: var(--on-dark-weak); border-left: var(--bw-strong) solid var(--moss); }

  /* この2つは、余白をカード側が持つ（格子の桝／横並びのため）。 基底の 20px を戻す */

  .c-cta--more-light { color: var(--cream); border-color: var(--rule-dark-strong); }
  .c-footer { padding: var(--sp-56) var(--sp-24) var(--sp-24); color: var(--cream); background: var(--ink); }
  .c-footer--with-cta { padding-bottom: 105px; }
  .c-footer-brand { padding-bottom: var(--sp-32); border-bottom: var(--bw) solid var(--rule-dark); }
  .c-footer .c-footer-brand .c-header-logo { display: inline-block; margin-bottom: var(--sp-16); font-size: var(--fs-12); }
  .c-footer .c-footer-brand p { margin: 0; font-family: var(--serif); font-size: var(--fs-8); }
  .c-footer-groups { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-24) var(--sp-12); padding: var(--sp-32) 0 var(--sp-40); }
  .c-footer-group { min-width: 0; }
  .c-footer-group--external { grid-column: auto; }
  .c-footer-group > small { display: block; margin-bottom: var(--sp-12); font-size: var(--fs-1); font-weight: 700; letter-spacing: .16em; opacity: .46; }
  .c-footer-group nav { display: flex; flex-direction: column; align-items: flex-start; gap: 0; padding: 0; font-size: var(--fs-4); border: 0; }
  .c-footer-group nav a { display: flex; width: 100%; justify-content: space-between; padding: var(--sp-8) 0; line-height: 1.5; border-bottom: var(--bw) solid var(--rule-dark-faint); overflow-wrap: anywhere; }
  .c-footer-group--external nav { flex-direction: column; gap: 0; }
  .c-footer-group--external nav a { width: 100%; min-width: 0; }
  .c-footer-group--external nav span { margin-left: var(--sp-16); }
  .c-footer-bottom { display: flex; justify-content: space-between; padding-top: var(--sp-20); border-top: var(--bw) solid var(--rule-dark); }
  .c-footer-bottom small { display: block; margin: 0; font-size: var(--fs-1); letter-spacing: .1em; opacity: .48; }

  .c-toast { position: fixed; z-index: 90; right: 18px; bottom: 24px; left: 18px; max-width: 394px; margin-inline: auto; padding: var(--sp-12) var(--sp-16); color: var(--cream); background: rgba(23,23,20,.95); font-size: var(--fs-5); text-align: center; opacity: 0; pointer-events: none; transform: translateY(10px); transition: .25s; }
  .c-toast.is-shown { opacity: 1; transform: none; }
  .u-reveal { opacity: 0; transform: translateY(15px); transition: opacity .65s ease, transform .65s ease; }
  .u-reveal.is-visible { opacity: 1; transform: none; }

  /* Shared detail pages */

  /* Event */
  .l-page--event { padding-bottom: var(--sp-72); }
  .l-page--event main [id] { scroll-margin-top: 58px; }
  /* c-sectionhead--rule: 罫線つきの小見出し（開催情報・開催した事実）。kicker と title が左右に離れる */
  .c-sectionhead--rule { display: flex; align-items: end; justify-content: space-between; padding-bottom: var(--sp-16); border-bottom: var(--bw-strong) solid var(--ink); }
  .c-sectionhead--rule .c-sectionhead-kicker { margin: 0; padding-bottom: var(--sp-4); font-size: var(--fs-2); font-weight: 700; letter-spacing: .13em; }
  .c-sectionhead--rule .c-sectionhead-title { margin: 0; font-family: var(--serif); font-size: var(--fs-14); font-weight: 500; }
  /* すぐ下に断り書きが続くときは、その間隔をこちらが持つ */
  .c-facts:has(+ .c-notice) { margin-bottom: var(--sp-20); }
  .c-facts { margin: 0 0 var(--sp-28); border-top: var(--bw) solid var(--line); }
  .c-facts > div { display: grid; grid-template-columns: 74px 1fr; padding: var(--sp-16) 0; border-bottom: var(--bw) solid var(--line); }
  .c-facts dt { padding-top: var(--sp-4); font-size: var(--fs-2); font-weight: 700; letter-spacing: .13em; }
  .c-facts dd { margin: 0; font-family: var(--serif); font-size: var(--fs-7); line-height: 1.75; }
  .c-facts dd b { font-size: var(--fs-9); font-weight: 500; }
  .c-facts dd small { color: var(--ink-mute); }
  .c-cta--action { width: 100%; align-items: center; padding: var(--sp-16) var(--sp-20); color: var(--cream); background: var(--red); border: 0; cursor: pointer; font-size: var(--fs-5); font-weight: 700; letter-spacing: .07em; }
  .c-cta--action-light { color: var(--ink); background: var(--cream); }
  .c-poster { margin-bottom: var(--sp-40); aspect-ratio: auto; object-fit: contain; width: auto; max-width: 100%; height: auto; max-height: min(120vw, 720px); margin-inline: auto; }
  .c-essay { margin-left: var(--sp-28); padding-left: var(--sp-20); border-left: var(--bw) solid var(--rule-dark); }
  .c-essay > p:last-child { margin: 0; font-size: var(--fs-5); line-height: 2.15; color: var(--on-dark); }

  .c-pair { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-8); }
  .c-pair figure { margin: 0; }
  .c-pair img { height: 260px; object-fit: cover; }
  .c-pair figcaption { min-height: 77px; padding: var(--sp-12) var(--sp-12); font-family: var(--serif); font-size: var(--fs-9); background: rgba(0,0,0,.13); }
  .c-pair figcaption small { display: block; margin-bottom: var(--sp-8); font-family: var(--sans); font-size: var(--fs-1); }
  .c-notice--notes { margin-top: var(--sp-28); border-top: var(--bw) solid var(--rule-dark); }
  .c-notice--notes p { display: grid; grid-template-columns: 80px 1fr; gap: var(--sp-12); margin: 0; padding: var(--sp-16) 0; font-size: var(--fs-4); line-height: 1.9; color: var(--on-dark); border-bottom: var(--bw) solid var(--rule-dark); }
  .c-notice--notes b { color: var(--cream); font-size: var(--fs-3); }
  .c-program { position: relative; margin: 0; padding: 0; list-style: none; }
  .c-program::before { position: absolute; top: 9px; bottom: 9px; left: 49px; width: 1px; content: ""; background: var(--line); }
  .c-program li { position: relative; display: grid; grid-template-columns: 50px 1fr; min-height: 93px; }
  .c-program time { padding-top: 2px; font-size: var(--fs-3); font-weight: 700; }
  .c-program li::after { position: absolute; top: 4px; left: 46px; width: 7px; height: 7px; content: ""; background: var(--red); border-radius: 50%; }
  .c-program span { padding-left: var(--sp-20); }
  .c-program b { display: block; margin-bottom: var(--sp-8); font-family: var(--serif); font-size: var(--fs-8); font-weight: 500; }
  .c-program small { display: block; font-size: var(--fs-3); line-height: 1.8; color: var(--ink-mute); }
  .c-summary { margin: var(--sp-28) 0 var(--sp-28); border-top: var(--bw) solid var(--rule-dark); }
  .c-summary > div { display: grid; grid-template-columns: 72px 1fr; padding: var(--sp-16) 0; border-bottom: var(--bw) solid var(--rule-dark); }
  .c-summary dt { padding-top: 2px; font-size: var(--fs-2); opacity: .55; }
  .c-summary dd { margin: 0; font-family: var(--serif); font-size: var(--fs-7); line-height: 1.65; }
  .c-context { padding-block: var(--sp-72) var(--sp-72); }
  .c-context h2 { margin-bottom: var(--sp-32); font-family: var(--serif); font-size: var(--fs-13); font-weight: 500; line-height: 1.85; }
  .c-context dl { margin: 0 0 var(--sp-28); border-top: var(--bw) solid var(--rule-dark); }
  .c-context dl > div { display: grid; grid-template-columns: 76px 1fr; padding: var(--sp-16) 0; border-bottom: var(--bw) solid var(--rule-dark); }
  .c-context dt { padding-top: 2px; font-size: var(--fs-2); opacity: .62; }
  .c-context dd { margin: 0; font-family: var(--serif); font-size: var(--fs-7); }
  .c-context dd b { display: inline-grid; width: 22px; height: 22px; margin-right: var(--sp-8); color: var(--blue); background: var(--cream); font-family: var(--sans); font-size: var(--fs-2); place-items: center; border-radius: 50%; }
  .c-context > a { display: flex; justify-content: space-between; padding: var(--sp-16) 0; font-size: var(--fs-3); font-weight: 700; border-top: var(--bw) solid var(--rule-dark-strong); border-bottom: var(--bw) solid var(--rule-dark-strong); }
  .c-stickybar { position: fixed; z-index: 45; right: 0; bottom: 0; left: 0; display: grid; grid-template-columns: 104px 1fr; gap: var(--sp-8); max-width: 430px; min-height: 76px; margin: auto; padding: 8px 9px calc(8px + env(safe-area-inset-bottom)); color: var(--cream); background: rgba(23,23,20,.96); box-shadow: var(--shadow-up); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
  .c-stickybar-meta { display: flex; min-width: 0; flex-direction: column; justify-content: center; padding-left: var(--sp-8); }
  .c-stickybar-meta b { margin-bottom: var(--sp-4); font-size: var(--fs-6); letter-spacing: .02em; }
  .c-stickybar-meta small { font-size: var(--fs-2); letter-spacing: .07em; opacity: .68; }
  .c-cta--sticky { min-height: 60px; align-items: center; padding: var(--sp-8) var(--sp-12) var(--sp-8) var(--sp-16); color: var(--cream); background: var(--red); border: var(--bw) solid var(--rule-dark); border-radius: var(--radius); box-shadow: var(--shadow); cursor: pointer; text-align: left; transition: transform .15s ease, box-shadow .15s ease, background .15s ease; }
  .c-cta--sticky > span { display: flex; flex-direction: column; }
  .c-cta--sticky small { margin-bottom: var(--sp-4); font-size: var(--fs-2); font-weight: 500; letter-spacing: .08em; opacity: .76; }
  .c-cta--sticky strong { font-size: var(--fs-7); letter-spacing: .035em; }
  .c-cta--sticky > b { display: grid; width: 28px; height: 28px; flex: 0 0 28px; margin-left: var(--sp-8); color: var(--red); background: var(--cream); font-size: var(--fs-8); place-items: center; border-radius: 50%; }
  .c-cta--sticky:hover { background: var(--red-light); }
  .c-cta--sticky:active { box-shadow: none; transform: translateY(3px); }
  .c-cta--sticky:focus-visible { outline: var(--bw-strong) solid var(--cream); outline-offset: 2px; }

  /* Finished event */
  .l-page--event-finished { padding-bottom: 0; }

  .c-notice--box { margin-block: var(--sp-24); padding: var(--sp-12) var(--sp-16); background: var(--sand); }
  .c-details { border-top: var(--bw) solid var(--line); border-bottom: var(--bw) solid var(--line); }
  .c-details summary { padding: var(--sp-16) 2px; cursor: pointer; font-size: var(--fs-3); font-weight: 700; }
  .c-details > div { padding: 0 var(--sp-4) var(--sp-20); }
  .c-details p { font-size: var(--fs-4); line-height: 1.9; color: var(--ink-soft); }
  .c-details a { display: block; padding-top: var(--sp-12); font-size: var(--fs-3); border-top: var(--bw) solid var(--line); }

  /* Continuing series */

  .l-page--series { background: var(--cream); }
  .c-principles { margin: var(--sp-32) 0 0; padding: 0; list-style: none; border-top: var(--bw) solid var(--line); }
  .c-principles li { display: grid; grid-template-columns: 40px 1fr; padding: var(--sp-16) 1px; border-bottom: var(--bw) solid var(--line); }
  .c-principles span { padding-top: 2px; font-size: var(--fs-2); }
  .c-principles b { font-family: var(--serif); font-size: var(--fs-8); font-weight: 500; }

  .c-card-links { display: flex; gap: var(--sp-8); padding-top: var(--sp-12); border-top: var(--bw) solid var(--line); }
  .c-card-links i { padding: var(--sp-4) var(--sp-8); background: var(--sand); font-size: var(--fs-1); font-style: normal; font-weight: 700; letter-spacing: .07em; }

  .c-next { margin-top: var(--sp-20); padding: var(--sp-24) var(--sp-20) var(--sp-24); border: var(--bw) solid var(--line-strong); border-radius: var(--radius); }
  .c-next > span { display: flex; flex-direction: column; }
  .c-next small { margin-bottom: var(--sp-8); font-size: var(--fs-1); font-weight: 700; letter-spacing: .12em; color: var(--ink-mute); }
  .c-next strong { font-family: var(--serif); font-size: var(--fs-10); font-weight: 500; line-height: 1.65; }
  .c-next p { margin: var(--sp-12) 0 0; font-size: var(--fs-3); line-height: 1.85; color: var(--ink-mute); }

  /* Photo story */
  .l-page--article { background: var(--cream); }
  .l-page--article-post { background: var(--sand-light); }
  .c-article-chapters { background: var(--cream); }
  .c-article-chapter { padding: var(--sp-56) var(--sp-20) var(--sp-72); }
  .c-article-chapter + .c-article-chapter { border-top: var(--bw) solid var(--line); }
  .c-article-chapter header { padding: 0 var(--sp-4) var(--sp-28); }
  .c-article-chapter header small { display: block; margin-bottom: var(--sp-16); font-size: var(--fs-2); font-weight: 700; letter-spacing: .13em; }
  .c-article-chapter header h2 { margin-bottom: var(--sp-20); font-family: var(--serif); font-size: var(--fs-13); font-weight: 500; line-height: 1.65; }
  .c-article-chapter header p { margin: 0; font-family: var(--serif); font-size: var(--fs-6); line-height: 2.1; color: var(--ink-soft); }
  .c-article-chapter--blue { color: var(--cream); background: var(--blue); border-top: 0 !important; }
  .c-article-chapter--blue header p { color: var(--on-dark); }
  .c-photo { display: block; margin-top: var(--sp-16); }
  .c-photo + .c-photo { margin-top: var(--sp-40); }
  .c-photo figure { position: relative; overflow: visible; margin: 0; }
  .c-photo img { width: 100%; height: auto; object-fit: contain; }
  .c-photo figcaption { padding-top: var(--sp-12); font-family: var(--serif); font-size: var(--fs-4); line-height: 1.8; }
  .c-photo--full { margin-right: -20px; margin-left: -20px; }
  .c-photo--full figcaption { padding-inline: var(--sp-20); }
  .c-photo--standard img { border-radius: var(--radius); }
  .c-photo--inset-left, .c-photo--inset-right { width: 76%; }
  .c-photo--inset-left { margin-right: auto; }
  .c-photo--inset-right { margin-left: auto; }
  /* 縦の写真は、横長に切ると読めなくなる。収めて見せる */
  .c-photo--portrait figure img { width: auto; max-height: min(120vw, 760px); margin-inline: auto; background: rgba(23,23,20,.05); }
  /* 章の頭の、時刻と場所 */
  .c-article-stamp { margin: 0 0 var(--sp-12); font-size: var(--fs-4); font-weight: 700; letter-spacing: .16em; opacity: .62; }
  .c-photo--inset-left img { border-radius: var(--radius); }
  .c-photo--inset-right img { border-radius: var(--radius); }
  .c-photo--pair { display: flex; flex-direction: column; gap: var(--sp-28); }
  .c-photo--pair img { border-radius: var(--radius); }
  .c-photo--pair figure:first-child { width: 88%; }
  .c-photo--pair figure:nth-child(2) { width: 76%; margin-top: 0; margin-left: auto; }
  .c-article-footer { margin-block: var(--sp-20) 0; padding: var(--sp-20) 0; border-top: var(--bw) solid var(--line); border-bottom: var(--bw) solid var(--line); }
  .c-article-footer p { margin-bottom: var(--sp-12); font-size: var(--fs-3); font-weight: 700; letter-spacing: .05em; }
  .c-article-footer small { display: block; font-size: var(--fs-3); line-height: 1.7; color: var(--ink-mute); }

  /* Field log */
  .l-page--field-log { background: var(--cream); }
  .c-stop.is-active { opacity: 1; transform: scale(1.12); }
  .c-notice--map { margin: var(--sp-16) 2px 0; color: var(--on-dark-weak); }
  .c-sectionhead--entries { display: grid; grid-template-columns: auto auto; justify-content: space-between; align-items: end; }
  .c-sectionhead--entries .c-sectionhead-kicker { grid-column: 1 / -1; margin-bottom: var(--sp-12); font-size: var(--fs-2); font-weight: 700; letter-spacing: .15em; }
  .c-sectionhead--entries .c-sectionhead-title { margin: 0; font-family: var(--serif); font-size: var(--fs-14); font-weight: 500; }
  .c-sectionhead--entries .c-sectionhead-aside { padding-bottom: var(--sp-4); font-size: var(--fs-2); font-weight: 700; letter-spacing: .08em; }
  .c-card--entry header { display: grid; grid-template-columns: 42px 1fr; grid-template-rows: auto 1fr; margin-bottom: var(--sp-20); padding: var(--sp-20) var(--sp-20) 0; }
  :where(.c-card--entry) .c-card-meta { grid-row: 1 / span 2; padding-top: 2px; font-size: var(--fs-3); font-weight: 700; }
  :where(.c-card--entry) .c-card-kicker { grid-column: 2; margin-bottom: var(--sp-8); font-size: var(--fs-2); font-weight: 700; letter-spacing: .12em; }
  :where(.c-card--entry) .c-card-title { grid-column: 2; margin: 0; font-family: var(--serif); font-size: var(--fs-13); font-weight: 500; }
  :where(.c-card--entry) .c-card-text { max-width: 310px; margin: var(--sp-16) var(--sp-20) 0; font-family: var(--serif); font-size: var(--fs-6); line-height: 2; }
  .c-progress { display: flex; gap: var(--sp-8); align-items: center; justify-content: center; margin-top: var(--sp-8); }
  .c-progress span { width: 5px; height: 5px; border-radius: 50%; background: rgba(23,23,20,.22); transition: transform .2s, background .2s; }
  .c-progress span.is-active { background: var(--ink); transform: scale(1.35); }
  .c-progress b { margin-left: var(--sp-8); font-size: var(--fs-2); font-weight: 700; }

  /* Feature hub */

  /* Dense feature: multiple journeys, lenses, records and events */
  .c-volume { padding-block: var(--sp-32) var(--sp-32); }
  .c-volume > p { margin-bottom: var(--sp-16); font-size: var(--fs-1); font-weight: 700; letter-spacing: .16em; opacity: .58; }
  .c-volume dl { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: 0; border-top: var(--bw) solid var(--rule-dark); border-left: var(--bw) solid var(--rule-dark); }
  .c-volume dl > div { display: grid; grid-template-columns: 43px 1fr; gap: var(--sp-8); min-height: 80px; align-items: center; padding: var(--sp-12); border-right: var(--bw) solid var(--rule-dark); border-bottom: var(--bw) solid var(--rule-dark); }
  .c-volume dt { font-family: var(--serif); font-size: var(--fs-13); }
  .c-volume dd { margin: 0; font-size: var(--fs-1); font-weight: 700; line-height: 1.7; letter-spacing: .08em; }
  .c-volume dd span { font-family: var(--serif); font-size: var(--fs-3); font-weight: 400; letter-spacing: 0; opacity: .62; }
  .c-volume > small { display: block; margin-top: var(--sp-16); font-family: var(--serif); font-size: var(--fs-4); opacity: .65; }
  .c-sectionhead--feature { }
  .c-sectionhead--feature .c-sectionhead-kicker { margin-bottom: var(--sp-16); font-size: var(--fs-2); font-weight: 700; letter-spacing: .15em; }
  .c-sectionhead--feature .c-sectionhead-title { margin-bottom: var(--sp-20); font-family: var(--serif); font-size: var(--fs-14); font-weight: 500; line-height: 1.65; }
  .c-sectionhead--feature .c-sectionhead-note { margin: 0; font-size: var(--fs-4); line-height: 2; color: var(--ink-mute); }
  :where(.l-surface--ink, .l-surface--moss, .l-surface--blue, .l-surface--red) .c-sectionhead--feature .c-sectionhead-note { color: var(--on-dark); }

  .c-bridge { display: grid; grid-template-columns: 1fr auto; gap: var(--sp-20); padding-block: var(--sp-24); color: var(--cream); background: var(--blue); }
  .c-bridge div { display: flex; flex-direction: column; }
  .c-bridge small { margin-bottom: var(--sp-12); font-size: var(--fs-1); letter-spacing: .13em; opacity: .63; }
  .c-bridge strong { font-family: var(--serif); font-size: var(--fs-10); font-weight: 500; line-height: 1.65; }
  .c-bridge p { margin: var(--sp-12) 0 0; font-size: var(--fs-3); line-height: 1.9; opacity: .68; }
  .c-bridge > b { align-self: center; font-size: var(--fs-9); font-weight: 400; }
  .c-lenses { padding-block: var(--sp-72) var(--sp-80); }
  .c-lenses-item { margin-bottom: var(--sp-28); padding: var(--sp-16); color: var(--ink); background: var(--cream); }
  .c-lenses-item:last-child { margin-bottom: 0; }
  .c-sectionhead--lens { display: grid; grid-template-columns: 33px 1fr; grid-template-rows: auto 1fr; margin-bottom: 0; padding-bottom: var(--sp-16); border-bottom: var(--bw) solid var(--line); }
  .c-sectionhead--lens > b { grid-row: 1 / span 2; padding-top: var(--sp-4); font-size: var(--fs-2); }
  .c-sectionhead--lens .c-sectionhead-kicker { grid-column: 2; margin-bottom: var(--sp-4); font-size: var(--fs-1); letter-spacing: .1em; color: var(--ink-mute); }
  .c-sectionhead--lens .c-sectionhead-title { grid-column: 2; margin: 0; font-family: var(--serif); font-size: var(--fs-13); font-weight: 500; }

  .c-cta--all { margin-block: var(--sp-24) 0; padding: var(--sp-16) 1px; border-top: var(--bw) solid var(--ink); border-bottom: var(--bw) solid var(--ink); font-size: var(--fs-3); font-weight: 700; }
  .c-readings { margin: 0; padding: 0; list-style: none; counter-reset: none; }
  .c-readings li { border-top: var(--bw) solid var(--rule-dark); }
  .c-readings li:last-child { border-bottom: var(--bw) solid var(--rule-dark); }
  .c-readings a { display: flex; flex-direction: column; padding: var(--sp-20) 1px var(--sp-20); }
  .c-readings small { margin-bottom: var(--sp-8); font-size: var(--fs-1); font-weight: 700; letter-spacing: .1em; opacity: .55; }
  .c-readings strong { font-family: var(--serif); font-size: var(--fs-8); font-weight: 500; line-height: 1.8; }
  .c-readings em { align-self: flex-end; margin-top: var(--sp-12); font-size: var(--fs-2); font-style: normal; opacity: .68; }

  .c-cta--series-standalone { display: grid; grid-template-columns: 1fr auto; align-items: center; margin-top: var(--sp-32); padding: var(--sp-16) 1px; border-top: var(--bw) solid var(--rule-dark-strong); border-bottom: var(--bw) solid var(--rule-dark-strong); }
  .c-cta--series-standalone > span { display: flex; flex-direction: column; }
  .c-cta--series-standalone small { margin-bottom: var(--sp-8); font-size: var(--fs-1); letter-spacing: .11em; opacity: .62; }
  .c-cta--series-standalone strong { font-family: var(--serif); font-size: var(--fs-7); font-weight: 500; }
  .c-cta--series-standalone > b { font-size: var(--fs-6); font-weight: 400; }

  /* Theme index and keyword detail */
  .l-page--collection { background: var(--cream); }

  /* キーワード一覧の絞り込み。CSSが無く、素のボタンのままだった（2026-09-16に発覚） */
  .c-results > header { display: flex; justify-content: space-between; padding-bottom: var(--sp-12); border-bottom: var(--bw-strong) solid var(--ink); }
  .c-results > header small, .c-results > header b { font-size: var(--fs-2); letter-spacing: .12em; }

  /* 余白はカード側が持つ（格子の桝のため）。基底の20pxを戻す */

  /* Record archive */
  .l-page--records { background: var(--paper); }
  .c-filter-set { position: relative; z-index: 5; border-bottom: var(--bw) solid var(--line); }
  .c-filter--record { z-index: 9; grid-template-columns: .7fr 1fr 1.12fr; padding-inline: var(--sp-12); }
  .c-filter--record button { min-width: 0; padding-inline: var(--sp-4); font-size: var(--fs-2); letter-spacing: .03em; }
  .c-filter--record button.is-active { font-weight: 800; }
  .c-filter-panel { margin-block: 0; border-bottom: var(--bw) solid var(--line); }
  .c-filter-panel summary { position: relative; display: grid; grid-template-columns: 74px 1fr; gap: var(--sp-8); align-items: center; padding: var(--sp-16) 2px; cursor: pointer; list-style: none; }
  .c-filter-panel summary::-webkit-details-marker { display: none; }
  .c-filter-panel summary::after { position: absolute; right: 2px; content: "+"; font-size: var(--fs-9); font-weight: 300; }
  .c-filter-panel[open] summary::after { content: "−"; }
  .c-filter-panel summary span { font-size: var(--fs-3); font-weight: 800; letter-spacing: .08em; }
  .c-filter-panel summary b { overflow: hidden; padding-right: var(--sp-24); color: var(--ink-mute); font-size: var(--fs-2); font-weight: 400; text-overflow: ellipsis; white-space: nowrap; }
  .c-filter-group { display: flex; flex-wrap: wrap; gap: var(--sp-8); padding: var(--sp-16) 0 var(--sp-4); border-top: var(--bw) solid var(--line); }
  .c-filter-group p { flex: 0 0 100%; margin: 0 0 var(--sp-4); font-size: var(--fs-2); font-weight: 800; letter-spacing: .12em; }
  .c-filter-group button { padding: var(--sp-8) var(--sp-12); cursor: pointer; border: var(--bw) solid var(--line); background: transparent; font-size: var(--fs-3); border-radius: var(--radius); }
  .c-filter-group button.is-active { color: var(--cream); background: var(--ink); border-color: var(--ink); }
  .c-filter-reset { width: 100%; margin: var(--sp-20) 0 var(--sp-16); padding: var(--sp-12); cursor: pointer; border: var(--bw) solid var(--line); background: var(--sand-light); font-size: var(--fs-2); }
  .c-resultbar { display: flex; align-items: center; justify-content: space-between; padding-block: var(--sp-16) var(--sp-16); }
  .c-resultbar p { margin: 0; font-size: var(--fs-4); }
  .c-resultbar p b { font-size: var(--fs-10); font-weight: 500; }
  .c-resultbar p span { font-size: var(--fs-1); letter-spacing: .12em; opacity: .6; }
  .c-resultbar label { display: flex; align-items: center; gap: var(--sp-8); font-size: var(--fs-2); font-weight: 700; }
  .c-resultbar select { max-width: 133px; padding: var(--sp-8) var(--sp-24) var(--sp-8) var(--sp-8); border: var(--bw) solid var(--line); color: var(--ink); background: var(--cream); font: inherit; font-size: var(--fs-3); border-radius: var(--radius); }

  .c-empty { padding: var(--sp-64) var(--sp-24); font-family: var(--serif); font-size: var(--fs-9); line-height: 2; text-align: center; }
  .c-empty button { margin-top: var(--sp-24); padding: var(--sp-12) var(--sp-20); cursor: pointer; border: var(--bw) solid var(--ink); background: transparent; font: inherit; font-size: var(--fs-3); }
  .c-filter button b { display: inline-grid; min-width: 18px; height: 18px; margin-left: var(--sp-4); color: var(--ink-mute); background: var(--sand); font-size: var(--fs-2); place-items: center; border-radius: 50%; }
  .c-filter button.is-active b { color: var(--cream); background: var(--red); }
  .c-collection--headed { padding-block: var(--sp-40) var(--sp-72); }
  .c-collection--headed > header { margin-bottom: var(--sp-28); padding-bottom: var(--sp-16); border-bottom: var(--bw-strong) solid var(--ink); }
  .c-collection--headed > header small { display: block; margin-bottom: var(--sp-8); font-size: var(--fs-1); font-weight: 700; letter-spacing: .14em; color: var(--ink-mute); }
  .c-collection--headed > header h2 { margin: 0; font-family: var(--serif); font-size: var(--fs-12); font-weight: 500; }
  .c-card--event[data-event-status="held"] .c-card-media { filter: saturate(.72); }
  :where(.c-card--event) .c-card-link{ position: relative; display: block; }
  :where(.c-card--event) .c-card-meta{ position: absolute; z-index: 2; top: 0; left: 0; display: flex; min-width: 57px; align-items: center; flex-direction: column; padding: var(--sp-8) var(--sp-12) var(--sp-12); color: var(--ink); background: var(--cream); }
  :where(.c-card--event) .c-card-meta > b{ font-family: var(--serif); font-size: var(--fs-13); font-weight: 500; }
  :where(.c-card--event) .c-card-meta > small{ margin-top: var(--sp-4); font-size: var(--fs-1); line-height: 1.6; text-align: center; }
  .c-card--event .c-card-badge { top: auto; right: 9px; bottom: 9px; left: auto; }
  .c-role { display: inline-block; margin-right: var(--sp-4); padding: var(--sp-4) var(--sp-8); color: var(--cream); background: var(--red); font-size: var(--fs-1); font-style: normal; letter-spacing: .08em; }
  .c-role--collab { background: var(--blue); }

  :where(.c-card--event) .c-card-extra{ display: grid; grid-template-columns: 94px 1fr auto; gap: var(--sp-8); align-items: center; margin: 0; padding: var(--sp-12) 2px var(--sp-16) var(--sp-16); color: var(--cream); background: var(--moss); }
  :where(.c-card--event) .c-card-extra small{ font-size: var(--fs-1); font-weight: 700; letter-spacing: .1em; opacity: .7; }
  :where(.c-card--event) .c-card-extra span{ font-family: var(--serif); font-size: var(--fs-4); line-height: 1.65; }
  :where(.c-card--event) .c-card-extra b{ padding-right: var(--sp-12); font-size: var(--fs-4); font-weight: 500; }

  .c-brandlist { border-top: var(--bw) solid var(--rule-dark-strong); }
  .c-brandlist a { display: flex; flex-direction: column; padding: var(--sp-20) 1px; border-bottom: var(--bw) solid var(--rule-dark-strong); }
  .c-brandlist small { margin-bottom: var(--sp-8); font-size: var(--fs-1); font-weight: 700; letter-spacing: .12em; color: var(--on-dark-weak); }
  .c-brandlist strong { font-family: var(--serif); font-size: var(--fs-10); font-weight: 500; }
  .c-brandlist span { margin-top: var(--sp-12); font-size: var(--fs-2); color: var(--on-dark); }


  /* 縦位置の写真を、横長の枠で切らない（紙テープの見送りなど） */

  /* ── FIELD LOG（field-log-ama）──────────────────────
   * 2026-09-16まで、この12ルールはページの <style> に直接書いてあった。
   * CMSは本文を差し替えるので、ページの中にCSSがあると管理できない。
   */
  .c-source{ margin:0; padding-block:var(--sp-16) var(--sp-20); font-size: var(--fs-4); line-height:1.95; }
  .c-source b{display:block;margin-bottom:var(--sp-4);font-size: var(--fs-3);letter-spacing:.13em}
  .c-day{margin:0 0 var(--sp-24);padding:0;list-style:none}
  .c-day > b{display:block;margin-bottom:var(--sp-12);font-size: var(--fs-3);font-weight:700;letter-spacing:.15em;opacity:.7}
  .c-day li{display:grid;grid-template-columns:54px 1fr;gap:var(--sp-12);padding:var(--sp-12) 0;
  border-top:var(--bw) solid var(--rule-dark-faint);font-size: var(--fs-6);line-height:1.55}
  .c-day li > span{padding-top:var(--sp-4);font-size: var(--fs-4);font-weight:700;opacity:.78}
  .c-day li em{display:block;font-style:normal;font-family:var(--serif);font-size: var(--fs-7)}
  .c-reelhead{display:flex;align-items:baseline;justify-content:space-between;
  margin:0 0 var(--sp-16);font-size: var(--fs-3);font-weight:700;letter-spacing:.13em}
  .c-reelhead span{opacity:.55}
  .c-after > p{font-family:var(--serif);font-size: var(--fs-6);line-height:2}
  .c-after .c-card--entry{min-width:0;background:var(--paper)}
  .c-after .c-card--entry img{aspect-ratio:1/.86}
  .c-day--next { margin-top: var(--sp-28); }
  /* 一覧の中の見出しだけ、左右に余白を足す */
  .c-sectionhead--inset { margin-inline: var(--sp-20); }

  /* ── 節の中身の部品（2026-09-20）──────────────────────
   * 写真と文の節（loop / after-event / personal-record / series-origin）は、
   * 文の中に別々のものを持っていた。それぞれを部品にした。 */

  /* 項目名と説明の一覧 */
  .c-defs { margin: 0; padding: 0; }
  .c-defs > div { padding: var(--sp-12) 0; border-top: var(--bw) solid var(--rule-dark); }
  .c-defs > div:last-child { border-bottom: var(--bw) solid var(--rule-dark); }
  .c-defs dt { margin-bottom: var(--sp-4); font-size: var(--fs-2); font-weight: 700; letter-spacing: .08em; }
  .c-defs dd { margin: 0; font-family: var(--serif); font-size: var(--fs-4); opacity: .76; }

  /* 工程表（矢印でつなぐ） */
  .c-steps { display: grid; grid-template-columns: repeat(3, 1fr); margin: var(--sp-28) 0 0; padding: var(--sp-20) 0; list-style: none; border-top: var(--bw) solid var(--rule-dark); border-bottom: var(--bw) solid var(--rule-dark); }
  .c-steps-item { position: relative; text-align: center; font-size: var(--fs-3); font-weight: 700; }
  .c-steps-item:not(:last-child)::after { position: absolute; top: 8px; right: -3px; content: "→"; font-weight: 400; }
  .c-steps-note { display: block; margin-top: var(--sp-4); font-size: var(--fs-2); font-weight: 400; opacity: .65; }

  /* リンクカード（小見出し・題・リンク文言を1本のリンクにしたもの） */
  .c-linkcard { display: flex; flex-direction: column; margin-top: var(--sp-32); padding: var(--sp-20) 0; border-top: var(--bw) solid var(--rule-dark-strong); border-bottom: var(--bw) solid var(--rule-dark-strong); }
  .c-linkcard-kicker { margin: 0 0 var(--sp-8); font-size: var(--fs-1); letter-spacing: .12em; opacity: .65; }
  .c-linkcard-title { margin: 0; font-family: var(--serif); font-size: var(--fs-9); font-weight: 500; line-height: 1.6; }
  .c-linkcard-action { align-self: flex-end; margin-top: var(--sp-12); font-size: var(--fs-2); font-weight: 700; }

  /* 全幅リンク（文と矢印）。c-cta の変種 */
  .c-cta--band { margin-top: var(--sp-28); padding: var(--sp-16) 0; font-size: var(--fs-3); font-weight: 700; border-block: var(--bw) solid var(--rule-dark-strong); }
  .c-band-kicker { display: block; margin: 0 0 var(--sp-16); font-size: var(--fs-2); font-weight: 700; letter-spacing: .15em; opacity: .65; }
  .c-band-lead { margin: 0 0 var(--sp-24); font-family: var(--serif); font-size: var(--fs-9); line-height: 1.8; }
  .c-band-action { display: block; padding-top: var(--sp-16); font-size: var(--fs-3); border-top: var(--bw) solid var(--rule-dark-strong); }
  .c-band--rule .c-band-lead { margin-bottom: 0; }
  .c-band--records .c-band-kicker { margin-bottom: var(--sp-16); letter-spacing: .14em; }
  .c-band--records .c-band-lead { margin-bottom: var(--sp-32); font-size: var(--fs-11); line-height: 1.9; }
  .c-band--records .c-band-action { font-weight: 700; }
  .c-band--scope .c-band-kicker { margin-bottom: var(--sp-12); font-size: var(--fs-1); letter-spacing: .14em; opacity: .58; }
  .c-band--scope .c-band-lead { margin: 0; font-size: var(--fs-5); line-height: 1.9; color: var(--on-dark); }
  .c-band--scope .c-band-lead b { color: var(--cream); font-weight: 600; }
  .c-band--index .c-band-kicker { letter-spacing: .14em; opacity: .6; }
  .c-band--index .c-band-lead { margin: 0; font-size: var(--fs-9); line-height: 1.9; }
  .c-band--ending .c-band-kicker, .c-band--question .c-band-kicker { margin-bottom: var(--sp-16); opacity: 1; }
  .c-band--ending .c-band-lead { margin-bottom: var(--sp-40); font-size: var(--fs-12); line-height: 1.9; }
  .c-band--ending .c-band-action { border-top-color: var(--ink); }
  .c-band--question { padding-bottom: var(--sp-72); }
  .c-band--question .c-band-lead { margin: 0; font-size: var(--fs-13); line-height: 1.9; }
  .c-band-note { margin-top: var(--sp-32); padding-top: var(--sp-24); border-top: var(--bw) solid var(--rule-dark); font-size: var(--fs-4); line-height: 2.1; color: var(--on-dark); }

  /* ── 呼びかけ帯（題と本文つき）c-band --message ───────────
   * 小見出し → 題 → 本文 →（リンクやカード）。read-deeper / story-next / series-next /
   * series-about / application / field-to-story / series-difference の7つを、
   * c-band の題・本文の入れ物にした（2026-09-20）。 */
  .c-band--message .c-band-kicker { margin: 0 0 var(--sp-12); font-size: var(--fs-3); letter-spacing: .16em; opacity: 1; }
  .c-band-title { margin: 0 0 var(--sp-24); font-family: var(--serif); font-size: var(--fs-14); font-weight: 500; line-height: 1.7; }
  .c-band-text { margin: 0; font-size: var(--fs-5); line-height: 2.1; }
  .c-band-fine { display: block; margin: var(--sp-12) 0 0; font-size: var(--fs-2); opacity: .5; }
  .c-band--deeper .c-band-title, .c-band--next .c-band-title, .c-band--next-origin .c-band-title { margin-bottom: var(--sp-20); line-height: 1.65; }
  .c-band--deeper .c-band-text { margin-bottom: var(--sp-28); color: var(--on-dark-weak); }
  .c-band--series .c-cta { margin-top: var(--sp-32); }
  .c-band--about { color: inherit; background: none; }
  .c-band--about .c-band-text { margin-bottom: 1em; line-height: 2.15; color: var(--ink-soft); }
  .c-band--apply .c-band-title { margin-bottom: .83em; font-size: var(--fs-14); line-height: 1.62; }
  .c-band--apply .c-band-text { margin-bottom: var(--sp-28); line-height: 1.9; color: var(--on-dark-weak); }
  .c-band--tostory .c-band-title { margin-bottom: var(--sp-20); line-height: 1.65; }
  .c-band--tostory .c-band-text { margin-bottom: var(--sp-32); font-size: var(--fs-4); line-height: 2; color: var(--on-dark); }
  .c-band--place { color: inherit; }
  .c-band--place .c-band-text { margin: var(--sp-24) 0 var(--sp-32); font-size: var(--fs-4); line-height: 2; color: var(--ink-soft); }
  .c-band--place .c-cta { margin: 0; }

  .c-cover-kicker { display: block; margin: 0 0 var(--sp-16); font-size: var(--fs-3); font-weight: 700; letter-spacing: .17em; opacity: .62; }
  .c-cover-note { display: block; margin: 0 0 var(--sp-16); font-size: var(--fs-2); font-weight: 700; letter-spacing: .12em; opacity: .74; }
  .c-cover-title { margin: 0 0 var(--sp-24); font-family: var(--serif); font-size: var(--fs-16); font-weight: 500; line-height: 1.55; }
  .c-cover-text { max-width: 340px; margin: 0; font-size: var(--fs-5); line-height: 2; color: var(--on-dark-weak); }
  .c-cover--paper { border-bottom: var(--bw) solid var(--line); }
  .c-cover--paper .c-cover-title { margin-bottom: var(--sp-20); font-size: var(--fs-18); line-height: normal; }
  .c-cover--paper .c-cover-text { max-width: none; line-height: 1.9; color: var(--ink-mute); }
  .c-cover--blue .c-cover-kicker, .c-cover--story .c-cover-kicker { font-size: var(--fs-2); letter-spacing: .16em; }
  .c-cover--blue .c-cover-kicker { margin-bottom: var(--sp-16); }
  .c-cover--blue .c-cover-title { margin-bottom: var(--sp-24); font-size: var(--fs-17); }
  .c-cover--blue .c-cover-text { max-width: 330px; font-family: var(--serif); font-size: var(--fs-6); color: var(--on-dark); }
  .c-cover--story .c-cover-title { margin-bottom: var(--sp-24); font-size: var(--fs-15); }
  .c-cover--story .c-cover-text { max-width: 330px; margin-bottom: var(--sp-16); font-family: var(--serif); font-size: var(--fs-6); color: var(--on-dark); }
  /* 写真の表紙（c-cover の変種。l-hero に載せる）
   *   --photo   写真の下に kicker / title / text を置く（記録・特集・シリーズ）
   *   --poster  写真の上に、中央寄せで告知を載せる（催しの詳細。文字は写真に焼き込まない）
   *   --stack   写真が切り替わる（トップ。JS が c-cover-panel の is-active を付け替える）
   * 共通のスロット：c-cover-media（写真）/ c-cover-shade（暗幕）/ c-cover-body（文）/ c-cover-stamp（丸い印） */
  .c-cover-media { width: 100%; height: 100%; object-fit: cover; object-position: 55% center; }
  .c-cover-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.1) 45%, rgba(0,0,0,.78)); }
  .c-cover--photo { position: relative; height: calc(86svh - 58px); min-height: 600px; }
  .c-cover--photo .c-cover-body { position: absolute; z-index: 2; right: 22px; bottom: 36px; left: 22px; }
  .c-cover--photo .c-cover-kicker { margin-bottom: var(--sp-12); letter-spacing: .14em; opacity: 1; }
  .c-cover--photo .c-cover-title { margin-bottom: var(--sp-16); font-size: var(--fs-17); line-height: 1.4; }
  .c-cover--photo .c-cover-text { max-width: none; font-family: var(--serif); font-size: var(--fs-9); line-height: 1.9; color: inherit; }
  .c-cover--photo .c-cover-title:last-child, .c-cover--photo .c-cover-text:last-child { margin-bottom: 0; }
  .c-cover--photo .c-cover-title--display { font-size: var(--fs-18); letter-spacing: .08em; line-height: normal; }
  .c-cover-stamp { position: absolute; z-index: 2; top: 20px; right: 18px; display: grid; width: 88px; height: 88px; color: var(--ink); background: var(--cream); font-size: var(--fs-2); line-height: 1.7; letter-spacing: .12em; text-align: center; place-content: center; border-radius: 50%; transform: rotate(5deg); }

  .c-cover--poster { position: relative; display: grid; place-items: center; overflow: hidden; min-height: min(88vh, 700px); text-align: center; color: var(--cream); }
  .c-cover--poster > .c-cover-media { position: absolute; inset: 0; object-position: center 42%; }
  .c-cover--poster .c-cover-shade { background-color: rgba(16,16,14,.22); background-image: linear-gradient(180deg, rgba(16,16,14,.62) 0%, rgba(16,16,14,.42) 46%, rgba(16,16,14,.68) 100%); }
  .c-cover--poster .c-cover-body { position: relative; z-index: 1; width: calc(100% - 40px); padding: var(--sp-56) 0; }
  .c-cover--poster .c-cover-kicker { margin: 0; font-size: var(--fs-4); letter-spacing: .32em; color: var(--red); opacity: 1; }
  .c-cover-status { margin: var(--sp-12) 0 0; font-size: var(--fs-8); font-weight: 700; letter-spacing: .18em; }
  .c-cover-status::after { content: ""; display: block; width: 38px; height: 1px; margin: var(--sp-16) auto 0; background: var(--red); }
  .c-cover--poster .c-cover-title { margin: var(--sp-28) 0 0; font-size: var(--fs-15); line-height: 1.5; letter-spacing: .08em; }
  .c-cover--poster .c-cover-text { max-width: none; margin: var(--sp-20) 0 0; font-size: var(--fs-6); line-height: 2.1; color: inherit; opacity: .94; }
  .c-cover-rule { display: block; width: 44px; height: 1px; margin: var(--sp-28) auto; background: var(--rule-dark-strong); }
  .c-cover-when { margin: 0; font-size: var(--fs-9); font-weight: 700; letter-spacing: .06em; }
  .c-cover-where { margin: var(--sp-8) 0 0; font-size: var(--fs-6); line-height: 1.9; opacity: .92; }
  .c-cover-origin { margin: var(--sp-12) 0 0; font-size: var(--fs-5); letter-spacing: .06em; opacity: .86; }
  .c-cover-origin::before { content: ""; display: inline-block; width: 5px; height: 5px; margin-right: var(--sp-8); border-radius: 50%; background: var(--red); vertical-align: middle; }

  .c-cover--stack { position: relative; height: calc(82svh - 58px); min-height: 565px; }
  .c-cover-panel { position: absolute; inset: 0; display: none; }
  .c-cover-panel.is-active { display: block; animation: hero-in .6s ease both; }
  .c-cover-panel > .c-cover-media { object-position: center; }
  .c-cover-panel:nth-child(1) > .c-cover-media { object-position: 54% center; }
  .c-cover--stack .c-cover-body { position: absolute; right: 24px; bottom: 36px; left: 23px; display: flex; flex-direction: column; }
  .c-cover--stack .c-cover-kicker { margin-bottom: var(--sp-12); letter-spacing: .18em; opacity: 1; }
  .c-cover--stack .c-cover-title { max-width: 340px; margin-bottom: var(--sp-24); font-size: clamp(34px, 10vw, 43px); line-height: 1.43; letter-spacing: .035em; }
  .c-cover-action { display: flex; justify-content: space-between; padding: var(--sp-16) 0; font-size: var(--fs-4); font-style: normal; font-weight: 700; letter-spacing: .1em; border-top: var(--bw) solid var(--rule-dark-strong); border-bottom: var(--bw) solid var(--rule-dark-strong); }
  .c-cover-random { position: absolute; z-index: 2; top: 18px; right: 10px; margin: 0; font-size: var(--fs-2); letter-spacing: .17em; writing-mode: vertical-rl; }


  /* c-split: 写真と文を並べる帯（l-section--bleed の中に img.c-split-media と .l-split-body）。
   * 文の側の箱は、kicker / title / text の3つ。そのあとに c-cta--band・c-steps・c-defs・c-linkcard を置く。
   *   --side   スマホでも写真と文を左右に並べる（トップの「体験から日常へ」） */
  .c-split-media { aspect-ratio: 4 / 3; object-fit: cover; filter: saturate(.72); }
  .c-split-kicker { margin-bottom: var(--sp-12); font-size: var(--fs-3); font-weight: 700; letter-spacing: .16em; }
  .c-split-title { margin-bottom: var(--sp-24); font-family: var(--serif); font-size: var(--fs-14); font-weight: 500; line-height: 1.7; }
  .c-split-text { font-size: var(--fs-5); line-height: 2.1; color: var(--on-dark); }
  .c-split--side { display: grid; grid-template-columns: .9fr 1.1fr; min-height: 565px; }
  .c-split--side > .c-split-media { height: 100%; aspect-ratio: auto; }
  .c-split--side .c-split-title { margin-bottom: var(--sp-20); font-size: var(--fs-17); line-height: 1.48; }
  .c-split--side .c-split-text { margin-bottom: var(--sp-28); }

  /* c-strip: 1〜2行の帯（l-section--thin に載せる）。kicker / text / note の3スロット。
   *   既定   中央に積む（「ここで終わり」の帯）
   *   --row  左に kicker、右に text と note（「EVENT ／ 開催済み」の帯） */
  .c-strip { text-align: center; }
  .c-strip-kicker { margin: 0 0 var(--sp-8); font-size: var(--fs-2); font-weight: 700; letter-spacing: .16em; }
  .c-strip-text { margin: 0; font-family: var(--serif); font-size: var(--fs-5); line-height: 1.8; }
  .c-strip-note { margin: 0; font-size: var(--fs-1); letter-spacing: .1em; opacity: .7; }
  .c-strip--row { display: grid; grid-template-columns: 64px 1fr; gap: var(--sp-12); text-align: left; }
  .c-strip--row .c-strip-kicker { grid-row: span 2; align-self: center; margin: 0; font-size: var(--fs-5); }
  .c-strip--row .c-strip-text { font-size: var(--fs-7); line-height: normal; }

  /* c-index: 番号つきの案内リスト（ページ内の目次・入口）。label / item（num / title / note / arrow）。--dark は暗い地用 */
  .c-index-label { margin-bottom: var(--sp-8); font-size: var(--fs-1); font-weight: 700; letter-spacing: .16em; color: var(--ink-mute); }
  .c-index-item { display: grid; grid-template-columns: 34px 1fr auto; gap: var(--sp-8); align-items: center; padding: var(--sp-16) 2px; border-top: var(--bw) solid var(--line); }
  .c-index-item:last-of-type { border-bottom: var(--bw) solid var(--line); }
  .c-index-num { font-size: var(--fs-1); }
  .c-index-title { font-family: var(--serif); font-size: var(--fs-8); }
  .c-index-note { display: block; margin-top: var(--sp-4); font-family: var(--sans); font-size: var(--fs-1); color: var(--ink-mute); }
  .c-index-arrow { font-size: var(--fs-5); font-style: normal; }
  .c-index--dark .c-index-item { border-color: var(--rule-dark); }
  .c-index--large .c-index-item { padding-block: var(--sp-20); }
  .c-index--large .c-index-title { font-size: var(--fs-10); }
  .c-index--large .c-index-num { font-size: var(--fs-2); font-weight: 700; }
  .c-index--large .c-index-arrow { font-size: var(--fs-6); font-weight: 400; }
  .c-index--plain .c-index-item { grid-template-columns: 1fr auto; }

  /* c-person: 人の紹介（写真・kicker・名前・ひとこと）。--dark は暗い地用、--spaced は前後を広く取る */
  .c-person { display: grid; grid-template-columns: 64px 1fr; gap: var(--sp-16); align-items: center; margin-block: var(--sp-40) 0; padding-block: var(--sp-20); border-top: var(--bw) solid var(--line); border-bottom: var(--bw) solid var(--line); }
  .c-person-media { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; filter: saturate(.72); }
  .c-person-body { display: flex; min-width: 0; flex-direction: column; }
  .c-person-kicker { margin-bottom: var(--sp-4); font-size: var(--fs-2); font-weight: 700; letter-spacing: .13em; }
  .c-person-name { font-family: var(--serif); font-size: var(--fs-9); font-weight: 500; }
  .c-person-text { margin: var(--sp-8) 0 0; font-size: var(--fs-3); line-height: 1.7; color: var(--ink-mute); }
  .c-person--dark { border-color: var(--rule-dark); }
  .c-person--dark .c-person-text { color: var(--on-dark-weak); }
  .c-person--spaced { margin-block: var(--sp-56); }

  /* c-kicker: 小さな見出しの上の英字ラベル */
  .c-kicker { margin-bottom: var(--sp-12); font-size: var(--fs-3); font-weight: 700; letter-spacing: .16em; }

  /* c-lede: 縦書きのひとこと ＋ 題と本文（トップの宣言・記録の前書き） */
  .c-lede { display: grid; grid-template-columns: .6fr 1.5fr; gap: var(--sp-20); }
  .c-lede-vertical { align-self: start; justify-self: center; font-family: var(--serif); font-size: var(--fs-8); line-height: 1.8; writing-mode: vertical-rl; }
  .c-lede-title { margin-bottom: var(--sp-24); font-family: var(--serif); font-size: var(--fs-13); font-weight: 500; line-height: 1.8; }
  .c-lede-text { margin: 0; font-size: var(--fs-6); line-height: 2.1; color: var(--ink-soft); }

  /* c-timeline: 点と線でつなぐ年表（暗い地用） */
  .c-timeline-head { margin-bottom: var(--sp-32); }
  .c-timeline-title { margin-bottom: var(--sp-24); font-family: var(--serif); font-size: var(--fs-14); font-weight: 500; line-height: 1.7; }
  .c-timeline-list { margin: 0; padding: 0; list-style: none; }
  .c-timeline-item { position: relative; display: grid; grid-template-columns: 68px 1fr; min-height: 114px; padding-bottom: var(--sp-28); }
  .c-timeline-item:not(:last-child)::before { position: absolute; top: 7px; bottom: 0; left: 57px; width: 1px; content: ""; background: var(--rule-dark); }
  .c-timeline-item::after { position: absolute; top: 4px; left: 54px; width: 7px; height: 7px; content: ""; background: var(--red); border-radius: 50%; }
  .c-timeline-time { padding-top: 1px; font-size: var(--fs-1); letter-spacing: .08em; opacity: .6; }
  .c-timeline-body { padding-left: var(--sp-16); }
  .c-timeline-name { display: block; margin-bottom: var(--sp-8); font-family: var(--serif); font-size: var(--fs-8); font-weight: 500; }
  .c-timeline-note { display: block; font-size: var(--fs-3); line-height: 1.8; opacity: .62; }
  .c-timeline-link { display: inline-block; margin-top: var(--sp-12); padding-bottom: var(--sp-4); font-size: var(--fs-2); border-bottom: var(--bw) solid var(--rule-dark-strong); }

  /* c-readlist: 外部の長文への案内（見出し ＋ 行 × n ＋ もっと見る）。暗い地用 */
  .c-readlist { margin-top: var(--sp-64); }
  .c-readlist-head { margin-bottom: var(--sp-24); }
  .c-readlist-kicker { display: block; margin-bottom: var(--sp-12); font-size: var(--fs-1); font-weight: 700; letter-spacing: .14em; color: var(--on-dark-weak); }
  .c-readlist-title { margin: 0 0 var(--sp-12); font-family: var(--serif); font-size: var(--fs-12); font-weight: 500; line-height: 1.55; }
  .c-readlist-note { margin: 0; font-size: var(--fs-3); line-height: 1.8; color: var(--on-dark-weak); }
  .c-readlist-item { display: grid; grid-template-columns: 72px 1fr auto; gap: var(--sp-8); align-items: center; padding: var(--sp-16) 0; border-top: var(--bw) solid var(--rule-dark); }
  .c-readlist-item-kicker { font-size: var(--fs-1); font-weight: 700; line-height: 1.6; letter-spacing: .1em; color: var(--on-dark-weak); }
  .c-readlist-item-title { font-family: var(--serif); font-size: var(--fs-6); font-weight: 500; line-height: 1.7; }
  .c-readlist-item-arrow { font-size: var(--fs-4); font-weight: 500; }
  .c-readlist-foot > a { display: flex; justify-content: space-between; margin-top: var(--sp-8); padding-top: var(--sp-16); font-size: var(--fs-2); font-weight: 700; border-top: var(--bw) solid var(--rule-dark-strong); }

  /* c-linkbar: 2組の「ラベル／名前」を並べた1行のリンク帯（l-section--thin に載せる） */
  .c-linkbar { display: grid; grid-template-columns: 1fr 1.45fr auto; gap: var(--sp-12); align-items: center; border-bottom: var(--bw) solid var(--line); }
  .c-linkbar-item { display: flex; min-width: 0; flex-direction: column; }
  .c-linkbar-kicker { margin-bottom: var(--sp-4); font-size: var(--fs-1); letter-spacing: .1em; color: var(--ink-mute); }
  .c-linkbar-text { font-family: var(--serif); font-size: var(--fs-6); font-weight: 500; }
  .c-linkbar-arrow { font-size: var(--fs-5); font-weight: 400; }

  /* ── キーワードの一覧（keywords.html）──────────────────
   * 独立したページとして作った（2026-09-15 本人）。
   * それまではトップの #keywords（アンカー）しかなかった。
   */
  .c-card--tile {
    position: relative;
    display: block;
    padding: var(--sp-20);
    color: var(--ink);
    background: var(--cream);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    transition: transform .22s ease, box-shadow .22s ease;
  }
  .c-card--tile:hover { transform: translateY(-3px); box-shadow: var(--shadow-lift); }
  .c-card--tile strong {
    display: block;
    font-family: var(--serif);
    font-size: var(--fs-12);
    font-weight: 500;
    letter-spacing: .04em;
  }
  .c-card--tile small {
    display: block;
    margin-top: var(--sp-8);
    font-size: var(--fs-4);
    letter-spacing: .08em;
    opacity: .58;
  }
  .c-card--tile p {
    margin: var(--sp-12) 0 0;
    font-size: var(--fs-6);
    line-height: 1.75;
    opacity: .76;
  }
  :where(.c-card--tile) .c-card-meta{
    position: absolute;
    top: 18px;
    right: 20px;
    font-family: var(--serif);
    font-size: var(--fs-9);
    opacity: .42;
  }

  /* c-collection: カードを並べる入れ物。スマホは縦一列、PCは幅に応じて列が増える。
   *   --stack     PCでも1列（催しの一覧）
   *   --masonry   写真の縦横が混じるものを切らずに敷き詰める（記録の一覧） */
  .c-collection { display: grid; gap: var(--sp-24); }
  /* 子どもの間は gap だけが受け持つ。子ども側の余白と二重にしない */
  .c-collection:is(ol, ul) { margin: 0; padding: 0; list-style: none; }
  .c-collection > * { margin-block: 0; }
  .c-collection > .c-sectionhead { margin-bottom: 0; }
}

@layer blocks {
  /* =============================================================
   * ACADELI Media ── ブロックと余白
   *
   * なぜこのファイルがあるか
   *   main の直下に並ぶ塊が76種類あり、その1つ1つが自前の padding を
   *   持っていた（70/71/72/73/74/75/76/77/78/79/80px、左右は16/17/18/
   *   20/22/23/24/25/26px）。PCで揃えるには全部を打ち消すしかなく、
   *   `main > *:not(A):not(B)…` と9個の :not() を連ねる羽目になった。
   *   打ち消しの打ち消しが増え、1か所直すと別が壊れた。
   *
   * 決めごと
   *   1. **main の直下に置く塊を「ブロック」と呼ぶ。**ブロックは入れ子にしない
   *   2. **ブロックの型は4つだけ。**cover／title／strip／body
   *   3. **左右の余白はブロックが持つ。中身は持たない。**
   *      サイト全体で横の余白を決める指定は、下の1本だけ
   *   4. **型に合わないものが出ても、型を増やさない。**中身の作りを見直す
   *
   *   ブロックの型
   *     l-hero        写真の表紙。縦0。1200px以上で左に固定
   *     l-hero--text  文字だけの表紙。1200px以上で左に固定
   *     l-section--thin 細い帯（パンくず・絞り込み・ひとこと）
   *     l-section     本体。既定
   *   添え物（型ではなく、型に足す）
   *     l-section--tight-top     上を詰める（絞り込みの帯にすぐ続く一覧）
   *     l-section--tight-bottom  下を詰める（すぐ次のブロックが続く見出しだけの塊）
   *     l-section--bleed   余白なし。写真を縁まで出す。中身が自分で余白を持つ
   * ============================================================= */




  /* ── 横。サイト全体でただ1本 ─────────────────────
   * これが効くのは、ブロックの側が左右の余白を持たなくなったから。
   * 持っていたころは `.manifesto { padding: 73px 23px 76px }` に
   * 詳細度で負け、:not() を9個つなぐしかなかった。 */

  /* ── 縦。型ごとに1つ ──────────────────────────── */
  main > .l-section  { padding-block: var(--tall); }
  main > .l-section--thin { padding-block: var(--thin); }
  main > .l-hero--text { padding-block: var(--mid); }
  main > .l-hero { padding: 0; }

  main > .l-section--tight-top    { padding-block-start: 0; }
  main > .l-section--tight-bottom { padding-block-end: 0; }
  /* 写真を縁まで出す塊。ブロックは余白を持たず、中の文だけが持つ。
   * 文の側には l-split-body を付け、値は他のブロックと同じものを使う。 */
  main > .l-section--bleed { padding: 0; }

  .l-split-body { padding: var(--tall) var(--pad); }

  /* ── 中身が持っていた「親の余白の肩代わり」を外す ──────
   * 親が0だった時代に、中身の側が 20px を足して字下げを作っていた。
   * ブロックが余白を持つようになったので、そのままだと二重になる。 */
  main > * > .c-sectionhead--type { margin-inline: 0; }

}

@layer pc {
  @media (min-width: 431px) { .l-page { margin-block: var(--sp-24); min-height: calc(100vh - 48px); } .c-header { top: 24px; } }
  @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .u-reveal { opacity: 1; transform: none; } .c-cover-panel.is-active { animation: none; } }
  /* =============================================================
   * 2  PCの文字寸法（768px〜）
   *
   *   文字の大きさは、18段の級 --fs-1 〜 --fs-18 だけを使う。
   *   スマホの値は :root（先頭）、PCの値は下の @media 内の :root で書き換える。
   *   ふつうの文字寸法は、ここに書かずに済む（var(--fs-N) と1回書くだけ）。
   *     6→9 ／ 7→10 ／ 8→12 ／ 9→13 ／ 10→14 ／ 11→15 ／ 12→17 ／ 14→18 ／ 16→20 ／ 18→22 ／ 20→23 ／ 22→25 ／ 25→29 ／ 28→32 ／ 31→33 ／ 34→36 ／ 40→42 ／ 52→55（px）
   *   以前は font-size を 44 種類・339 件の上書きで管理していた。
   *   下に残るのは、級では足りない例外だけ。
   * ============================================================= */
  @media (min-width: 768px) {

    .c-cover--paper .c-cover-title { font-size: 51px; }

  }

  /* =============================================================
   * ACADELI Media ── PC版の骨格
   *
   * 決めごと
   *   1. **CSSは styles.css の1本だけ。**古い版を打ち消す指定は書かない（直すときは元の指定を直す）
   *   2. **区切りは4つだけ。**431 / 768 / 1000 / 1200。増やさない
   *   3. **同じセレクタを2度書かない。**打ち消しの打ち消しを作らない
   *   4. **背景色を持つ節は中央寄せにしない。**左端がずれて段差に見える。
   *      幅は padding で取る
   *   5. 詳細度を上げるための `.l-page` 前置は、**必要な箇所にだけ**使う
   *
   * 目次
   *   0  決めごとの値
   *   1  端末枠の名残を消す        431px〜
   *   2  ページの土台と余白        768px〜
   *   3  部品（表紙・一覧・カード・フッター） 768px〜
   *   4  ナビを横並びに            1000px〜
   *   5  表紙を左に固定する2カラム  1200px〜
   * ============================================================= */

  /* ── 0  決めごとの値 ──────────────────────────── */

  /* ── 1  端末枠の名残を消す（431px〜）──────────────────
   * styles.css に
   *     @media (min-width:431px){ .l-page{margin-block:24px} .c-header{top:24px} }
   * がある。スマホのモックを「机の上の端末」に見せる演出。
   * 枠のない画面では、**ヘッダーの上に24pxの隙間**として残る。
   */
  @media (min-width: 431px) {
    .l-page {
      margin-block: 0;
      max-width: none;
      min-height: 100vh;
      box-shadow: none;
      border-radius: 0;
      /* **`overflow: hidden` を解く。**styles.css が端末枠を切るために
       * 付けているが、これがあると中の `position: sticky` が一切効かない。
       * 表紙を左に固定できなくなる（2026-09-15 本人「左領域が固定じゃなくなってる」）。 */
      overflow: visible;
    }
    .c-header { top: 0; }
    .c-back { display: none; }
  }

  /* ── 2  ページの土台（768px〜）───────────────────── */
  @media (min-width: 768px) {

    /* 節の左右・上下の余白は、**このファイルでは決めない。**
     * ブロックの型で決まる（上の「ブロックと余白」）。
     * かつてここには `main > *:not(A):not(B)…` と9個の :not() を連ねた
     * 打ち消しがあった。塊が自前の padding を持っていたためで、
     * 塊の側から余白を取り上げたことで要らなくなった。 */

    /* 読む文の幅。左端は揃えたまま、右だけで折る */
    .c-essay, .c-article-chapter p, .c-article-chapter header,
    .c-lede-body, .c-lead,
    .c-notice--notes, .c-notice--box, .c-source, .c-after > p, .c-day li,
    .c-notice--priority,
    .c-notice--map,
    .c-article-footer,
    .c-person-text, .c-program li, .c-strip-text,
    .c-context h2, .c-details p, .c-person-text, .c-sectionhead--feature .c-sectionhead-note,
    .c-bridge p, .c-next p,
    .c-timeline-item,
    .c-band--rule .c-band-lead, .c-band--deeper > p, .c-band--tostory > p, .c-band--about p, .c-band--place p, .c-band--scope .c-band-lead, .c-band--index, .c-split-text {
      max-width: var(--read);
    }
    /* 表紙の説明も読む幅まで。story だけは元から 330px に絞っている */
    .c-cover:not(.c-cover--story) .c-cover-text { max-width: var(--read); }
    /* 横に並ぶカードの中の文は、カードの幅に従う */

    /* はみ出しを止める */
    img, video { max-width: 100%; }
  }

  /* ── 3  部品（768px〜）─────────────────────────── */
  @media (min-width: 768px) {

    /* 3-1  表紙 ------------------------------------------------
     * 画面を写真で埋めない。スマホの `min-height` を解いて高さを決める。 */
    .c-cover--stack, .c-cover--photo, .c-cover--poster {
      min-height: 0;
      height: min(56vh, 460px);
    }
    .c-cover-panel > .c-cover-media, .c-cover--photo > .c-cover-media, .c-cover--poster > .c-cover-media {
      width: 100%; height: 100%; max-height: none; object-fit: cover;
    }
    .c-cover--stack .c-cover-body, .c-cover--photo .c-cover-body, .c-cover--poster .c-cover-body {
      width: min(var(--shell), calc(100% - var(--pad) * 2));
      margin-inline: auto;
      left: 0; right: 0;
    }
    .c-cover--stack .c-cover-title {
      max-width: min(16em, 100%);
      font-size: clamp(32px, 2.8vw, 46px);
    }
    .c-cover-random { right: var(--pad); }

    /* 催しの縦位置のちらしは、切らずに全体を見せる */
    .c-poster {
      width: auto; max-width: 100%; height: auto;
      aspect-ratio: auto;
      max-height: min(60vh, 520px);
      margin-inline: auto;
      object-fit: contain;
    }

    /* 3-2  一覧を横に並べる ------------------------------------
     * スマホでは縦一列でよいが、PCで一列だとカードが伸びて間延びする。 */
    .c-collection,
    .c-lenses,
    .c-rail:not(.c-rail--flow) {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: var(--sp-24);
      align-items: start;
      overflow-x: visible;          /* 横スクロールの帯をやめる */
      scroll-snap-type: none;
    }
    /* 帯の中のカードは「画面幅の8割」指定を解く */

    /* 写真だけを横に流す帯（.c-rail--flow）は、流したままでよい。
     * **2枚はぴったり収め、3枚以上なら3枚目が少し覗く**幅にする
     * （2026-09-15 本人）。覗かせることで「まだ続く」と分かる。
     * 2.18 で割ると、2枚ぶん＋0.18枚が見える。 */
    .c-rail--flow {
      gap: var(--sp-12);
      padding-inline: 0;
      scroll-padding-inline: 0;
    }
    .c-rail--flow > .c-card--entry {
      flex: 0 0 calc((100% - 13px * 1.18) / 2.18);
      min-width: 0;
      max-width: none;
    }
    /* 2枚しかない帯は、2枚でちょうど埋める */
    .c-rail--flow:has(> :last-child:nth-child(2)) > .c-card--entry {
      flex: 0 0 calc((100% - 13px) / 2);
    }

    /* 節の中に入れ子になっている一覧は、親がすでに余白を持つので二重にしない */
    main > section .c-collection, main > section .c-lenses,
    main > section .c-rail {
      padding-inline: 0;
    }

    /* 見出しや前書きは、並びの上に幅いっぱいで置く */
    .c-collection > header, .c-collection > .c-sectionhead,
    .c-collection > .c-lead { grid-column: 1 / -1; }

    /* 3-3  カードの写真 ----------------------------------------
     * 縦位置と横位置が混じる。比率は c-card の --ratio で決め、cover で切る。 */
    .c-card--square, .c-card--event, .c-card--entry, .c-card--boxed.c-card--portrait { --ratio: 3 / 2; }
    /* 列が広いときに写真が伸びすぎないよう、高さの上限を決める */
    .c-card--square .c-card-media > img, .c-card--boxed.c-card--portrait .c-card-media > img { max-height: 440px; }

    /* 3-4  記録一覧は敷き詰める（ピンタレスト型）----------------
     * 写真の縦横が混じるので、高さを揃えようとすると必ずどちらかを切る。
     * 列に流せば、切らずに埋まる。
     * 並びは「1列目を埋めてから2列目」になるが、日付順に意味はない（本人）。 */
    .c-collection--masonry {
      display: block;
      column-count: 2;              /* `columns: 3 300px` は幅が優先されて2列になる */
      column-gap: var(--sp-24);
    }
    .c-collection--masonry > .c-card { margin: 0 0 var(--sp-24); break-inside: avoid; -webkit-column-break-inside: avoid; transition: transform .22s ease, box-shadow .22s ease; }
    .c-collection--masonry > .c-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lift); }
    .c-collection--masonry .c-card-text { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

    /* 3-4b 催しの一覧は、カードの高さを揃える。
     * `.c-card-extra`（緑の「この会につながる…」）は1枚だけが持つため、
     * 504/536/409px とばらついていた。一覧では出さない
     * （2026-09-15 本人「このリンクはいらない」）。詳細ページには残る。 */
    .c-card-extra { display: none; }

    .c-collection--stack { align-items: stretch; }
    .c-card--event, .c-card--event > a, .c-card--event .c-card-link { height: 100%; }
    .c-card--event .c-card-body { display: flex; flex-direction: column; }
    .c-card--event .c-card-body > *:last-child { margin-top: auto; }

    /* 3-5  スクロール演出を止める ------------------------------
     * `.u-reveal` は threshold 0.08 で出るが、PCでは節が画面より高く、
     * 8%が入っても発火しないことがある。27個中17個が透明のままだった。 */
    .u-reveal { opacity: 1 !important; transform: none !important; }

    /* 3-6  フッター --------------------------------------------
     * 節は CONTENTS / INFORMATION / FOLLOW & READ の3つ。 */
    .c-footer { padding: clamp(48px, 5vw, 72px) var(--pad) 28px; }
    .c-footer > * { width: min(var(--shell), 100%); margin-inline: auto; }
    .c-footer-brand {
      display: flex; align-items: baseline; gap: var(--sp-20); padding-bottom: var(--sp-24);
    }
    .c-footer .c-footer-brand p { margin: 0; opacity: .72; }
    .c-footer-groups { padding: var(--sp-28) 0 var(--sp-32); }
    .c-footer-group nav { display: grid; gap: var(--sp-8); }
  }


  /* ── 4  ナビを横並びに（1000px〜）───────────────────
   * 999px以下はハンバーガーのまま。項目が6つあり、
   * 横に並べると1000px未満では収まらない。
   */
  @media (min-width: 1000px) and (max-width: 1199px) {
    .c-collection--masonry { column-count: 3; }
  }

  @media (min-width: 1000px) {
    .c-header {
      height: var(--navh);
      padding-inline: var(--pad);
      justify-content: space-between;
    }
    .c-header-logo span { font-size: var(--fs-8); }
    .c-menubutton { display: none; }
    .c-menu {
      position: static;
      display: flex;
      flex-direction: row;
      align-items: center;
      justify-content: flex-end;
      gap: clamp(16px, 2vw, 30px);
      width: auto; height: auto; padding: 0;
      background: transparent;
      opacity: 1; visibility: visible; transform: none;
      flex-wrap: nowrap;
    }
    .c-menu a {
      display: block;
      grid-template-columns: none;   /* スマホの「番号＋文字」の並びを解く */
      padding: var(--sp-8) 0;
      font-family: var(--sans);
      font-size: var(--fs-4);
      letter-spacing: .04em;
      white-space: nowrap;
      border: 0;
      color: rgba(251,249,241,.82);
    }
    .c-menu a b { display: none; }   /* スマホ用の番号はPCでは非表示 */
    .c-menu a:hover { color: var(--cream); }
  }

  /* ── 5  表紙を左に固定する2カラム（1200px〜）─────────────
   *
   * なぜ  表紙が画面の高さを大きく取り、1画面に入る中身が少ない。
   *       表紙を左に貼りつけ、右だけをスクロールさせて中身を早く見せる。
   *
   * 組み方（試行錯誤の末の結論）
   *   main に左の余白を取り、表紙だけ負の margin でそこへ戻す。
   *   表紙は float + sticky。
   *   **grid は使えない。**表紙を grid の子にすると、その高さが1行目になり、
   *   中身が下へ押し出されて最初の画面が空になる。
   *   **絶対配置も使えない。**中の文字が入れものの高さぶん縦に積まれ、画面外へ出る。
   *   **幅を割合で書かない。**`46%` は「main の内容幅」が基準になり、半分以下になる。
   */
  @media (min-width: 1200px) {

    main { padding-left: calc(var(--pin) + var(--pad)); }

    /* 表紙（写真の表紙と文字の表紙。どちらも型で分かる） */
    main > .l-hero,
    main > .l-hero--text {
      position: sticky;
      top: var(--navh);
      float: left;
      clear: left;
      width: var(--pin);
      height: calc(100dvh - var(--navh));
      margin: 0 0 0 calc((var(--pin) + var(--pad)) * -1);
      padding: 0;
      box-sizing: border-box;
      overflow: hidden;
      display: flex;
      flex-direction: column;
      justify-content: flex-end;    /* 文は下寄せ。写真は上に広く出る */
    }
    /* 文字の表紙は、内側に余白を取る */
    main > .l-hero--text { padding: var(--pad); }

    /* 写真は窓いっぱいに。
     * トップは `.c-cover--stack > .c-cover-panel > .c-cover-media` の二重の入れ子で、
     * パネルがすでに absolute。img は中で伸ばすだけにする。 */
    main > .c-cover--stack .c-cover-panel > .c-cover-media,
    main > .c-cover--photo > .c-cover-media,
    main > .c-cover--poster > .c-cover-media {
      width: 100%; height: 100%; max-height: none; object-fit: cover;
    }
    main > .c-cover--stack .c-cover-body { position: absolute; z-index: 2; }

    /* パンくずは表紙より先にあるため、そのままだと表紙が
     * 46pxぶん下がって左上に空白ができる。右側に回す。 */
    main > .c-breadcrumb { float: right; width: 100%; margin: 0; }

    /* 表紙は画面の高さぶんしかないので、それを過ぎると左側が
     * 土台の色（.l-page--collection は cream）のまま残り、右の節（paper）と
     * 色が食い違って**背景が切れて見える**（2026-09-15 本人）。
     * main の左に、下まで届く帯を敷いて色を揃える。 */
    main { position: relative; }
    main::before {
      content: "";
      position: absolute;
      top: 0; bottom: 0; left: 0;
      width: var(--pin);
      background: var(--paper);
      z-index: 0;
    }
    /* 表紙と中身は、その帯より前に出す */
    main > .l-hero,
    main > .l-hero--text { z-index: 2; }

    /* 催しの表紙の題は、画面幅ではなく柱の幅（--pin）に収める。
     * 32pxのままだと「中国ナチュラルワイン6種飲み比べ」の最後の1字が
     * あふれて、1文字だけの行ができる。 */
    main > .c-cover--poster .c-cover-title { font-size: 28px; }
    .c-collection, .c-lenses,
    .c-rail:not(.c-rail--flow) {
      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    }
  }


  @media (min-width: 768px) {
    .c-card--tile strong { font-size: var(--fs-11); }
    .c-card--tile p { font-size: var(--fs-3); }
  }

  /* ── 催しの一覧は1列 ──────────────────────────────
   * 一度に何件も並ぶものではないので、PCでも1列のまま見せる
   * （2026-09-16 本人）。区切りの中に置くと 768px と 1200px の
   * 両方で打ち消すことになるため、いちばん後ろに1本だけ置く。
   */
  .c-collection--stack { grid-template-columns: 1fr; }

  /* 特集ページ（密）の表紙は、PCでも「main 直下の表紙」の高さより優先する */
  .l-page--feature-dense main [id] { scroll-margin-top: 58px; }
  .l-page--feature-dense .c-cover--photo { height: calc(82svh - 58px); min-height: 560px; }
  .l-page--feature-dense .c-cover--photo > .c-cover-media { object-position: 56% center; }
}
