/* D-2246②: 和文書体の自己ホスト。変更前は Google Fonts の <link rel=stylesheet> で、
   トップの要求だけで CSS 自体が 1,035,075 B・@font-face 1,111 本あり（2026-08-13 実測・
   モバイル UA）、head で描画を止めていた。書体・ウェイト・字面は変えていない —
   google/fonts が配るのと同じ実体を tools/build-font-subsets.py で収録字集合に絞っただけ。
   ここに置くのは、この CSS が既に読み込まれているから（リクエストも待ちも増えない）。 */


@font-face{
  font-family:'Shippori Mincho';font-style:normal;
  font-weight:400;font-display:swap;
  src:url('fonts/shippori-mincho-400.woff2') format('woff2');
}
@font-face{
  font-family:'Shippori Mincho';font-style:normal;
  font-weight:500;font-display:swap;
  src:url('fonts/shippori-mincho-500.woff2') format('woff2');
}
@font-face{
  font-family:'Shippori Mincho';font-style:normal;
  font-weight:700;font-display:swap;
  src:url('fonts/shippori-mincho-700.woff2') format('woff2');
}
@font-face{
  font-family:'Shippori Mincho';font-style:normal;
  font-weight:800;font-display:swap;
  src:url('fonts/shippori-mincho-800.woff2') format('woff2');
}
@font-face{
  font-family:'Zen Kaku Gothic New';font-style:normal;
  font-weight:300;font-display:swap;
  src:url('fonts/zen-kaku-gothic-new-300.woff2') format('woff2');
}
@font-face{
  font-family:'Zen Kaku Gothic New';font-style:normal;
  font-weight:400;font-display:swap;
  src:url('fonts/zen-kaku-gothic-new-400.woff2') format('woff2');
}
@font-face{
  font-family:'Zen Kaku Gothic New';font-style:normal;
  font-weight:500;font-display:swap;
  src:url('fonts/zen-kaku-gothic-new-500.woff2') format('woff2');
}
@font-face{
  font-family:'Zen Kaku Gothic New';font-style:normal;
  font-weight:700;font-display:swap;
  src:url('fonts/zen-kaku-gothic-new-700.woff2') format('woff2');
}
@font-face{
  font-family:'Zen Kaku Gothic New';font-style:normal;
  font-weight:900;font-display:swap;
  src:url('fonts/zen-kaku-gothic-new-900.woff2') format('woff2');
}
@font-face{
  font-family:'JetBrains Mono';font-style:normal;
  font-weight:100 800;font-display:swap;
  src:url('fonts/jetbrains-mono-var.woff2') format('woff2');
}
/* ══════════════════════════════════════════════════════════════
   V6 ── トップページ（/）だけが使う系統。
   ・ブロック番号 01–11 ＋ 左レール
   ・BLOCK 07 双円錐 = Three.js 3D（ドラッグ回転・自動回転）
   ・図（黒板/譜面/文字盤/関門）は v3 の作法のまま改良して継承
   ・暗地3案：A 深宙 / B 深藍 / C 深緑（?palette=a|b|c で切替・既定は a）
   ・役割色は3案共通（役割＝情報。配色＝空気）
   ・v8（2026-08-20）で地を反転した。紙の色に残したのは --hum（人間）だけで、
     「人間が決めるところだけが紙に戻る」を色で言うため。
     見た目を足す部品は末尾の v8 レイヤに固めてあるので、
     配色を戻したいときは上のトークンだけを差し替えれば骨格は動く。

   書体のウェイトについて: 自己ホストしている Shippori Mincho は 400/500/700/800
   の 4 本で、600 は配っていない。600 を書くとブラウザが 700 に寄せるので、
   はじめから 700 と書く（何が描かれるかを CSS の字面と一致させる）。
   JetBrains Mono は可変（100–800）なので 600 をそのまま使える。
   ══════════════════════════════════════════════════════════════ */
:root{
  --mi:"Shippori Mincho",serif;
  --jp:"Zen Kaku Gothic New",sans-serif;
  --mo:"JetBrains Mono",monospace;
  --max:min(1440px,92vw); --pad:clamp(20px,4vw,56px);
  --r:24px; --rs:14px;
  /* 役割色（全テーマ共通・情報を担う色）。
     v7 までは「白い紙の上に置く色」だったので、そのまま暗い地に置くと沈む。
     明度を上げてあるが、色相は変えていない（役割と色の対応は覚え直さなくていい）。
     例外は --hum（人間）。ここだけ紙の色に置いた ──
     このページで唯一、人間が決めるところだけが紙の色に戻るという意味づけ。 */
  /* 2026-09-15: 地を真っ白に戻したので、役割色も白の上で読める濃さ（比 4.5 以上）へ下げた。
     色相は変えていない。 */
  --obs:#2F78AE; --kno:#8E6310; --cir:#10785A; --cirS:rgba(16,120,90,.5);
  --orc:#B23C74; --jud:#6A4FD0; --hum:#EFE3D5; --no:#C0392E; --biz:#4550C8;
}
/* 3 案とも地は真っ白（2026-09-15・依頼「背景を真っ白に、全体的に」）。
   差し色の色相は暗地の頃のまま、白の上で読める濃さに下げてある。 */
/* ── A 深宙 ── シアンと菫（既定） ── */
:root,[data-theme="a"]{
  --paper:#FFFFFF; --card:#FFFFFF;
  --ink:#14161C; --mute:#4A5266; --dim:#5C6477;
  --hair:rgba(20,30,60,.14); --hair2:rgba(20,30,60,.08);
  --pa:#0B7FA6; --pb:#7B55D9; --pc:#0D7A58;
  --ac:#0A6F94; --ac2:#7A45C9;
  --glow:rgba(10,111,148,.22); --glow2:rgba(122,69,201,.2);
  --sh:0 24px 60px rgba(20,30,60,.12); --shs:0 8px 24px rgba(20,30,60,.08);
}
/* ── B 深藍 ── 藍に、藤と瑠璃 ── */
[data-theme="b"]{
  --paper:#FFFFFF; --card:#FFFFFF;
  --ink:#161A28; --mute:#4A5270; --dim:#5A6380;
  --hair:rgba(22,26,60,.14); --hair2:rgba(22,26,60,.08);
  --pa:#3565CC; --pb:#7F4FC4; --pc:#1D78B0;
  --ac:#2E55B8; --ac2:#7A48B8;
  --glow:rgba(46,85,184,.22); --glow2:rgba(122,72,184,.2);
  --sh:0 24px 60px rgba(22,26,60,.12); --shs:0 8px 24px rgba(22,26,60,.08);
}
/* ── C 深緑 ── 松に、若草と金 ── */
[data-theme="c"]{
  --paper:#FFFFFF; --card:#FFFFFF;
  --ink:#142019; --mute:#46584E; --dim:#56685E;
  --hair:rgba(20,50,35,.14); --hair2:rgba(20,50,35,.08);
  --pa:#12805B; --pb:#557C1B; --pc:#826A10;
  --ac:#136E4C; --ac2:#56691A;
  --glow:rgba(19,110,76,.22); --glow2:rgba(86,105,26,.2);
  --sh:0 24px 60px rgba(20,50,35,.12); --shs:0 8px 24px rgba(20,50,35,.08);
}

/* ── 全体を真っ黒にする（2026-09-03・依頼）─────────────────
   地（--paper）は 3 つの配色とも #000。そのうえで、色を足していた 2 つを止める:
     ・body::before のオーロラ（朱・藍・翠の巨大な滲み 3 枚）
     ・節ごとの色被せ（.tint-*）
   --card は下げていない。地が #000 になったぶん、面と枠は自然に立つ。 */
:root{--bgaurora:none}
/* 2026-09-03: 方眼（72px のメッシュ）も消した。地は素の #000 だけ。 */
body::before{background:none!important}
.tint-a,.tint-b,.tint-c,.tint-ab,.tint-bc{background:none}

*{margin:0;padding:0;box-sizing:border-box}
/* 字を一龊に大きくする（2026-09-06「文字がすべて小さい」）。
   この頁の寸法はほとんど rem で書いてあるので、根を 16px から上げれば
   全体が同じ割合で伸びる。個々の数値を触ると、相対の大小（見出し＞
   本文＞小字）が崩れるし、見落としも出る。
   ◆ clamp(a, ○vw, b) で書いた見出しだけは、幅の広い画面で vw が選ばれて
     いるあいだ伸びない（rem ではないため）。本文と小字が上がることで
     見出しとの差は縮まる。 */
html{font-size:17.9px;scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* 背景の層（2026-09-03）。他の 55 頁と同じ作り。
   画面に貼り付いているので、読み進んでも ◇ と星空は動かない。
   地は html が持つ ── body が地色を持つと、後ろの層を覆ってしまう。 */
/* #scene 自身には z-index を置かない（night.css と同じ理由）。 */
#scene{position:fixed;inset:0;pointer-events:none;overflow:hidden}
#scene canvas{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:-1}
/* 0.68 -> 0.90 -> 0.78 -> 0.92（2026-09-05「暗い」）。
   地は #000 なので、下げるほど図は黒に溶けて締まりが無くなる。
   字の読みやすさは #story .st::before の霞と text-shadow が持っているので、
   ここを下げて逃げる必要はない ── 下げると図だけが暗くなり、
   字が乗っていない所まで巻き添えで沈む。1.00 にしないのは、
   本文の後ろに在る層だという建前を残すため。 */
#scene #shapes{opacity:.92}
#scene #flow{opacity:.85}
@media(max-width:900px){ #scene #shapes{display:none} }
body{font-family:var(--jp);color:var(--ink);background:var(--paper);line-height:1.95;font-size:24.9px;transition:background .5s}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2.5px solid var(--jud);outline-offset:4px;border-radius:6px}
img,canvas,svg{display:block;max-width:100%}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.skip{position:absolute;left:-9999px;top:0;z-index:300}
.skip:focus{left:14px;top:14px;background:var(--card);padding:10px 18px;border-radius:99px;box-shadow:var(--sh)}
.grain{
  position:fixed;inset:0;z-index:200;pointer-events:none;mix-blend-mode:multiply;opacity:.18;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}

/* ══════════ 配色切替（検討用・本番では出さない） ══════════
 * 既定は hidden。v3.js が localhost のときだけ外す。
 * 本番の配色確認は ?palette=a|b|c で行う（UI を出さずに済む）。 */
.themebar[hidden]{display:none}
.themebar{position:fixed;right:16px;bottom:16px;z-index:90;background:var(--card);border:1px solid var(--hair);border-radius:999px;box-shadow:var(--shs);display:flex;align-items:center;gap:4px;padding:6px}
.themebar span{font-family:var(--mo);font-size:.6rem;letter-spacing:.14em;color:var(--dim);padding:0 8px 0 10px}
.themebar button{font-family:var(--jp);font-size:.78rem;letter-spacing:.08em;border:0;cursor:pointer;padding:8px 14px;border-radius:999px;background:transparent;color:var(--mute)}
.themebar button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.themebar i{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:-1px}
.themebar .sa i{background:#F0A0BC}.themebar .sb i{background:#8FBAE8}.themebar .sc i{background:#84CFA7}

/* ══════════ ブロック番号レール ══════════ */
.rail{position:fixed;left:14px;top:50%;transform:translateY(-50%);z-index:80;display:flex;flex-direction:column;align-items:center;gap:10px;font-family:var(--mo)}
.rail .now{font-size:1.5rem;font-weight:600;color:var(--ac);line-height:1;transition:color .5s}
.rail .of{font-size:.58rem;letter-spacing:.2em;color:var(--dim);writing-mode:vertical-rl}
.rail .line{width:1px;height:74px;background:var(--hair);position:relative}
.rail .line i{position:absolute;left:-1.5px;width:4px;border-radius:2px;background:var(--ac);transition:top .3s,height .3s}
@media(max-width:1080px){.rail{display:none}}

/* ══════════ ブロック番号タグ ══════════ */
.blocktag{display:flex;align-items:baseline;gap:14px;margin-bottom:26px}
.blocktag .no{font-family:var(--mo);font-weight:600;font-size:clamp(1.6rem,3vw,2.2rem);color:var(--ac);line-height:1}
.blocktag .lb{font-family:var(--mo);font-size:.62rem;letter-spacing:.22em;color:var(--mute);border-left:1px solid var(--hair);padding-left:14px;text-transform:uppercase}
.blocktag .lb b{display:block;font-weight:400;color:var(--dim);margin-top:2px;letter-spacing:.14em}

/* ══════════ NAV ══════════
 * .navshell が固定の器。中の <nav class="nav"> は tools/nav.py が組み立てる
 * 8項目そのもの（差し替え位置なので、この入れ子を崩さないこと）。 */
.navshell{position:sticky;top:12px;z-index:120;padding:0 var(--pad)}
.pill{max-width:var(--max);margin:0 auto;background:color-mix(in srgb,var(--card) 82%,transparent);backdrop-filter:blur(16px);border:1px solid var(--hair);border-radius:999px;display:flex;align-items:center;gap:8px;padding:10px 12px 10px 22px;box-shadow:var(--shs);position:relative}
.logo{font-family:var(--mi);font-weight:700;font-size:1.05rem;letter-spacing:.1em;white-space:nowrap}
.pill .nav{margin-left:auto;display:flex;align-items:center;gap:4px}
.pill .nav a{font-size:.78rem;color:var(--mute);padding:7px 12px;border-radius:999px;white-space:nowrap;transition:.28s}
.pill .nav a:hover{color:var(--ink);background:color-mix(in srgb,var(--pa) 40%,transparent)}
.pill .nav a[aria-current=page]{color:var(--ink);background:color-mix(in srgb,var(--pa) 46%,transparent)}
.pill .nav a.go{background:var(--ac);color:#fff}
.pill .nav a.go:hover{background:var(--ac2);color:#fff}
.navshell .bar{position:absolute;left:22px;right:22px;bottom:3px;height:2px;overflow:hidden;border-radius:99px}
.navshell .bar i{display:block;height:100%;width:0;background:var(--ac);opacity:.55}

/* ══ 送りの帯（2026-09-06・言庵の PROCESS の作りを写す）══════════════
   言庵 kotoan-website の src/components/ProcessSteps.tsx と同じ**仕掛け**:
   ・番号の丸を横に並べ、あいだに山括弧
   ・いま読んでいる段だけ丸を塗りつぶす
   ・丸はその段へ飛ぶ入口
   ・帯は貼り付き、下を本文が流れる
   写したのは仕掛けだけで、色と文言はこの頁のもの（金茶は使わない）。

   貼り付く高さは JS が測って --steptop に入れる。ナビの丸帯は
   position:sticky top:12px で、高さは書体の実寸で決まる ── px を写して
   持つと、ナビを直した日に帯がナビの裏へ潜る。 */
.stepbarhell{position:sticky;top:var(--steptop,84px);z-index:110;
  padding:8px var(--pad) 0;pointer-events:none}
.stepbar{max-width:var(--max);margin:0 auto;pointer-events:auto;
  /* backdrop-filter はやめた（2026-09-06「重い」）。貼り付いた帯は
     読み進むあいだずっと画面に残るので、後ろのぼかしを毎コマ引き直す
     ことになる。地を 96% まで濃くすれば、ぼかし無しでも下の ◇ は透けない。 */
  background:color-mix(in srgb,var(--card) 96%,transparent);
  border:1px solid var(--hair);border-radius:22px;box-shadow:var(--shs);
  padding:14px 18px 12px}
.stepbar ol{list-style:none;display:flex;align-items:flex-start;margin:0;padding:0}
.stepbar li{display:flex;align-items:flex-start;flex:1 1 0;min-width:0}
.stepbar a{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;
  gap:7px;text-align:center;text-decoration:none;padding:0 2px}
.stepbar .sn{display:flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:50%;flex:0 0 auto;
  font-family:var(--mo);font-size:.78rem;line-height:1;
  border:1px solid color-mix(in srgb,var(--ac) 38%,transparent);
  color:color-mix(in srgb,var(--ac) 82%,var(--mute));
  background:transparent;transition:border-color .28s,color .28s,background .28s,box-shadow .28s,transform .28s}
.stepbar .sl2{font-family:var(--mi);font-weight:700;font-size:.8rem;line-height:1.35;
  letter-spacing:.03em;color:var(--mute);transition:.3s;
  word-break:auto-phrase}
/* 触れたときに明るくなる（2026-09-06・依頼）。
   点いている段（塗りつぶし）とは別物に見せる必要があるので、
   触れたほうは塗りつぶさず、枠と字を上げて周りに淡い暈をかける。
   .sn を上へ 1px 逃がすのは、押せる物だと分かるようにするため。 */
.stepbar a:hover .sn,.stepbar a:focus-visible .sn{
  border-color:var(--ac);color:var(--ink);
  background:color-mix(in srgb,var(--ac) 20%,transparent);
  box-shadow:0 0 16px color-mix(in srgb,var(--ac) 40%,transparent);
  transform:translateY(-1px)}
.stepbar a:hover .sl2,.stepbar a:focus-visible .sl2{color:var(--ink)}
/* 点いている段に触れたときは、暈だけ強める（塗りつぶしはそのまま）。 */
.stepbar a[aria-current]:hover .sn{background:var(--ac);color:var(--paper);
  box-shadow:0 0 26px color-mix(in srgb,var(--ac) 65%,transparent)}
.stepbar a:focus-visible{outline:none}
.stepbar a{border-radius:14px}
.stepbar a:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--ac) 55%,transparent)}
/* いま読んでいる段。丸を塗りつぶす ── 参考にした頁と同じ見せ方。 */
.stepbar a[aria-current] .sn{background:var(--ac);border-color:var(--ac);color:var(--paper);
  box-shadow:0 0 18px color-mix(in srgb,var(--ac) 45%,transparent)}
.stepbar a[aria-current] .sl2{color:var(--ink)}
.stepbar .sc2{flex:0 0 auto;margin-top:11px;font-family:var(--mo);font-size:.8rem;
  color:color-mix(in srgb,var(--dim) 80%,transparent);user-select:none}
/* 飛び先が帯の裏に隠れないよう、着地を帯のぶん下げる。 */
[data-step-target]{scroll-margin-top:var(--stepland,150px)}
@media(max-width:900px){
  /* 狭い画面では字を落として番号だけにし、横に送れるようにする。
     10 個を折り返すと帯だけで画面の 1/3 を占める。 */
  .stepbarhell{padding-top:6px}
  .stepbar{padding:10px 12px;border-radius:16px;overflow-x:auto}
  .stepbar ol{gap:4px}
  .stepbar li,.stepbar a{flex:0 0 auto}
  .stepbar .sl2,.stepbar .sc2{display:none}
  .stepbar .sn{width:34px;height:34px}
}
@media(prefers-reduced-motion:reduce){.stepbar .sn,.stepbar .sl2{transition:none}}

/* 引き出し（狭い画面） */
.navtoggle{
  display:none;align-items:center;justify-content:center;flex-direction:column;gap:4px;
  width:40px;height:40px;border-radius:50%;margin-left:auto;border:0;cursor:pointer;
  background:color-mix(in srgb,var(--card) 90%,transparent);box-shadow:var(--shs);
}
.navtoggle span{display:block;width:15px;height:1.5px;border-radius:99px;background:var(--ink);transition:.26s}
.navtoggle[aria-expanded=true] span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.navtoggle[aria-expanded=true] span:nth-child(2){opacity:0}
.navtoggle[aria-expanded=true] span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
#drawer{
  position:fixed;inset:0;z-index:119;background:color-mix(in srgb,var(--paper) 97%,transparent);backdrop-filter:blur(20px);
  display:none;align-items:center;justify-content:center;padding:96px var(--pad) 40px;overflow:auto;
}
#drawer.on{display:flex}
#drawer .inner{width:100%;max-width:var(--max)}
#drawer nav{display:grid;gap:2px}
#drawer nav a{
  display:flex;align-items:baseline;gap:16px;padding:16px 4px;border-bottom:1px solid var(--hair2);
  font-family:var(--mi);font-weight:700;font-size:1.15rem;
}
#drawer nav a i{font-family:var(--mo);font-style:normal;font-size:9.5px;letter-spacing:.2em;color:var(--dim)}
/* 「できること」の子項目（tools/nav.py の NAV_SUB）。ピルの中は hover / focus で開く */
.pill .nav .nav-item{position:relative;display:flex;align-items:center}
.pill .nav .nav-dropdown{position:absolute;top:100%;left:0;margin-top:10px;min-width:15em;padding:8px;
  display:none;flex-direction:column;gap:2px;background:var(--card);border:1px solid var(--hair);border-radius:16px;box-shadow:var(--shs)}
.pill .nav .nav-dropdown::before{content:"";position:absolute;left:0;right:0;top:-11px;height:11px}
.pill .nav .nav-item:hover .nav-dropdown,.pill .nav .nav-item:focus-within .nav-dropdown{display:flex}
/* 引き出しは親のリンクを残し、横のボタンで子を開く */
.drawer-item{display:grid;grid-template-columns:1fr auto;align-items:center;border-bottom:1px solid var(--hair2)}
#drawer nav .drawer-item>a{border-bottom:0}
.drawer-expand{position:relative;width:44px;height:44px;background:none;border:0;cursor:pointer;color:var(--ink)}
.drawer-expand::before{content:"";position:absolute;left:50%;top:50%;width:9px;height:9px;
  border-right:1.4px solid currentColor;border-bottom:1.4px solid currentColor;transform:translate(-50%,-70%) rotate(45deg)}
.drawer-expand[aria-expanded="true"]::before{transform:translate(-50%,-30%) rotate(225deg)}
.drawer-sub[hidden]{display:none}
.drawer-sub{grid-column:1/-1;display:flex;flex-direction:column;padding:0 0 12px 2.6em}
#drawer nav .drawer-sub a{padding:10px 4px;border-bottom:0;font-size:1rem}
@media(max-width:1020px){.pill .nav .nav-item{display:none}}
@media(max-width:1020px){
  .pill .nav a:not(.go){display:none}
  .pill .nav{margin-left:auto}
  .navtoggle{display:flex;margin-left:4px}
}

/* ══════════ 01 HERO ＋ 共有黒板 ══════════ */
.hero{position:relative;padding:clamp(60px,9vw,110px) 0 clamp(38px,6vw,66px);overflow:hidden}
/* ── 1 枚目の地を真っ黒にする（2026-09-03）──────────────────
   ◇ の後ろは #000。膜（.veil）が敷いていた朱と藍の滲みは、ここでは出さない
   ── 黒に落とすと、◇ の縁の照りと奥の霞みだけが色を持つ。
   膜は要素ごと消さずに、色だけ無くす（他の頁の .hero では今までどおり効く）。 */
.hero .veil{background:none}

/* ── 主題（BLOCK 01）── hero から独立させた節（2026-09-03）──
   hero に居た頃は .hero h1 の寸法で出ていた。移した先でも同じ大きさで出す。 */
/* ── 粉々になった直後に、字が出てくる（2026-09-03）──────────
   参考動画では、絵が留まったまま字が入れ替わる。字は一斉には出ず、
   上から順に、遅れて、ゆっくり立ち上がる。
   既定の .reveal（0.7 秒・14px・一律）はこの節では速すぎて軽いので、
   ここだけ 1.15 秒・38px・三段の遅れに差し替える。
   出方の曲線は cubic-bezier(.22,.61,.36,1) ── 出だしが速く、終わりで止まる。
   直線だと「止まった瞬間」が目に付く（◇ の割れで smoothstep にしたのと同じ理由）。 */
.subject .reveal{opacity:0;transform:translateY(38px);
  transition:opacity 1.15s cubic-bezier(.22,.61,.36,1),
             transform 1.15s cubic-bezier(.22,.61,.36,1)}
.subject .reveal.in{opacity:1;transform:none}
.subject .blocktag.reveal{transition-delay:0s}
.subject h1.reveal{transition-delay:.20s}
.subject p.reveal{transition-delay:.42s}
@media(prefers-reduced-motion:reduce){
  .subject .reveal{opacity:1;transform:none;transition:none}
}
/* 字は hero の中（コマの下）に戻した。z-index を上げるのは、粒（z-index:2）より
   前に置くため。
   上の余白は明示して持たせる ── 別の節（.sheet）だった頃は
   padding:clamp(60px,8.5vw,110px) が付いていて、hero の中へ移した時点で
   それが外れ、01 が 50px ほど上へ詰まった（2026-09-03 実測）。
   .sheet と同じ刻みを、こんどは margin で持たせる。 */
/* .hero .wrap{margin-top:0} のほうが詳細度で勝つので、こちらも 3 つ重ねる
   （2026-09-03 実測: .subject だけでは効かず、余白は 49px のままだった）。 */
.hero .wrap.subject{position:relative;z-index:4;margin-top:clamp(60px,8.5vw,110px)}
.subject h1{font-family:var(--mi);font-weight:700;font-size:clamp(2.7rem,8.6vw,6.2rem);
  line-height:1.24;letter-spacing:.02em;margin:14px 0 22px}
.subject h1 em{font-style:normal;color:var(--ac)}
.subject p{max-width:640px}
/* 環（3D・/assets/ring.js）。**黒板と膜より手前**に置く。
   奥に置いていた頃は、膜が文章側を最大 95% 紙色で覆うので環の左半分が消え、
   その上に黒板の文字が重なって「薄い」としか見えなかった（2026-08-29 実測）。
   文字の読みやすさは、膜ではなく .wrap の下に敷く地（下の ::before）で守る。
   pointer-events:none ── 背景であって、押せる物ではない。 */
#ring{position:absolute;inset:0;z-index:2;width:100%;height:100%;display:block;pointer-events:none;
  mask-image:linear-gradient(180deg,#000 0%,#000 88%,transparent 100%);
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 88%,transparent 100%)}
/* 粒（/assets/flow.js）。黒板より**下**（z-index:0 で、DOM も黒板より前）。
   下端は霞ませる ── 粒が hero の切れ目で真横に断たれると、面が板に見える。 */
#flow{position:absolute;inset:0;z-index:0;width:100%;height:100%;display:block;pointer-events:none;
  mask-image:linear-gradient(180deg,#000 0%,#000 72%,transparent 100%);
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 72%,transparent 100%)}
/* 〇 ◇ △ ☆ の立体（/assets/shapes.js）。
   黒板（0）と膜（1）の手前、本文（3）の後ろ ── 環と同じ層。
   狭い窓では出さない（本文が幅いっぱいになり、4 つの置き場所が無くなる）。 */
#shapes{position:absolute;inset:0;z-index:2;width:100%;height:100%;display:block;pointer-events:none;
  /* 端で霞ませる。散った粒は canvas の外まで行こうとするが、hero は overflow:hidden
     なので、そのままだと**真横の直線**で切れる（2026-09-03 実測: y=640 に切り口）。
     霞ませれば、切れ目ではなく「遠ざかって消えた」に見える。 */
  mask-image:linear-gradient(180deg,transparent 0%,#000 7%,#000 86%,transparent 100%);
  -webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 7%,#000 86%,transparent 100%)}
#shapeband{height:0}
/* ── 01〜09（粒が散ったあとに順に出る）───────────────────
   出方は #subject の字と同じ考え方 ── 一斉ではなく順に、遅れて、ゆっくり。
   ただしこちらは**スクロール量に連動**させる（時間ではなく読み進みで進む）。
   下の字（#subject）と重ならないよう、コマの下から 24vh の位置に置く。 */
/* 番号は**コマの中**に置く。画面の下からの距離で置くと、コマの高さを変えるたびに
   ◇ との位置関係が狂う（2026-09-03: コマを 88vh から 48vh に縮めて実際に狂った）。 */
/* ── 01〜09 の説明が入れ替わる（2026-09-03）─────────────
   参考動画と同じ作り ── 絵は留めたまま、字だけが送られていく。
   9 つとも**同じ枡**（grid-area 1/1）に置くので、箱の高さはいちばん長い文で決まる。
   高さが動かないので、入れ替わっても下の節が飛び跳ねない。
   出るときは下から、消えるときは上へ ── 番号（#dustidx）と同じ向きに揃える。 */
#storystick{position:relative}
/* 2026-09-03: ◇ と説明を切り離した。
   重ねて貼り付けていた頃は、こまの高さが画面ぶんに固定され、
   それを超える中身（写真の並びなど）へ**構造的に到達できなかった**。
   いまは上に ◇ の 1 画面、その下に説明が普通に流れる。
   全部スクロールで読める代わりに、読んでいるあいだ ◇ は画面に残らない。 */
@media(min-width:901px){
  .hero{position:relative;height:100vh;padding:0}
}
#story{position:static;display:block;z-index:4;margin-top:0;padding-top:clamp(28px,6vh,72px)}
#story .st{opacity:1;transform:none;pointer-events:auto;padding-bottom:14vh}
#story .sh{font-family:var(--mi);font-weight:700;
  font-size:clamp(1.9rem,5.1vw,4.2rem);line-height:1.3;letter-spacing:.02em;
  margin:0 0 18px;color:var(--ink)}
#story .sh em{font-style:normal;color:var(--ac)}
#story .sl{max-width:900px;color:var(--mute);font-size:1.06rem}
#story .sl strong{color:var(--ink);font-weight:700}
/* 図の上に字を置いているので、**字の側で**読めるようにする（2026-09-05・指摘）。
   canvas を薄くして逃げると図そのものが死ぬので、そちらは触らない。
   ・こまの下に暗い霞を敷く（字のある所だけ地を黒へ戻す）
   ・字にも暗い縁を付ける（霞の外へはみ出した行のため）
   霞は .st の ::before に置く。.st に z-index を持たせて重なりの文脈を作り、
   霞 0 / 字 1 と並べる ── 位置指定の無い要素に z-index を書いても効かないので、
   position:relative もここで必ず付ける。 */
#story .st{position:relative;z-index:1}
/* 霞は 2 枚重ね（2026-09-06「暗くて見えにくい」）。
   1 枚目は見出し用の濃い丸（32% 46% ＝ 見出しの位置）。これだけだと
   **節の下半分に地が無く**、囲みの外に置いた本文（.lead や
   まだ測れていないこと）が ◇ の明るい面に直接乗って読めなかった。
   2 枚目で箱の全体を薄く敷く。縁は透明へ抜くので境目は出ない。 */
#story .st::before{content:"";position:absolute;z-index:0;pointer-events:none;
  inset:-3vh -6vw;
  background:
    radial-gradient(62% 66% at 32% 46%,
      rgba(0,0,0,.84) 0%, rgba(0,0,0,.64) 42%, rgba(0,0,0,.30) 68%, transparent 84%),
    radial-gradient(98% 92% at 46% 52%,
      rgba(0,0,0,.60) 0%, rgba(0,0,0,.46) 54%, rgba(0,0,0,.22) 78%, transparent 93%)}
/* **これが要る。** ::before は位置指定つき（z-index:0）なので、位置指定の
   無い兄弟── つまり .secbody の中の囲み全部 ──より**上に**塗られる。
   その結果、黒い霞が囲みの上に掛かり、L3/L2/L1/L0 の札や四門の札が
   軒並み沈んでいた（費用の節で一度やった取り違えと同じ・2026-09-06 実測）。
   中身の側に位置指定と z-index を与えて、霞を確実に下へ回す。 */
#story .st>*{position:relative;z-index:1}
/* ただし**ヒーローだけは 1 枚目に戻す**。ここの箱は画面の高さぶんあり、
   字は左上に寄っているのに、2 枚目は箱の全体を覆う。掛けると ◇ の朱・藍・
   緑が一様に沈み、最初に見える面が濁った（2026-09-06 実測・平均 6.8）。
   ヒーローの字は 1 枚目（32% 46%）の内側に収まっているので、それで足りる。 */
#story #top::before{
  background:radial-gradient(62% 66% at 32% 46%,
    rgba(0,0,0,.84) 0%, rgba(0,0,0,.64) 42%, rgba(0,0,0,.30) 68%, transparent 84%)}
#story .sh,#story .sl{position:relative;z-index:1}
#story .sh{text-shadow:0 2px 10px rgba(0,0,0,.85), 0 0 26px rgba(0,0,0,.70)}
#story .sl{text-shadow:0 1px 6px rgba(0,0,0,.90), 0 0 16px rgba(0,0,0,.75)}
@media(prefers-reduced-motion:reduce){
  /* 動かさない。読み進みで切り替わること自体は残す（中身が読めなくなるので消さない）。 */
  #story .st{transition:none}
}
/* 2026-09-03: 番号は粒が組み立てるようになったので、DOM 側は出さない。
   同じ場所に 2 つ重なると、粒の字が「にじみ」に見えてしまう。
   要素は残す ── 送りの仕掛けがここから番号の文字を読んでいる。 */
#dustidx{visibility:hidden}
#dustidx-unused{position:absolute;left:0;right:0;top:0;height:var(--shapeband);
  z-index:3;pointer-events:none;
  display:grid;place-items:center;padding:0 var(--pad);
  font-family:var(--mo);font-size:clamp(2.2rem,5vw,4rem);letter-spacing:.14em}
/* 9 つとも**同じ枡**に置く（grid-area 1/1）。だから重なり、1 つだけが見える。
   出るときは下から、消えるときは上へ抜ける ── 同じ向きに動くので、
   「入れ替わった」ではなく「送られていく」と読める。 */
#dustidx i{grid-area:1/1;font-style:normal;color:var(--ac);
  opacity:0;transform:translateY(30px);
  transition:opacity .45s cubic-bezier(.22,.61,.36,1),
             transform .45s cubic-bezier(.22,.61,.36,1)}
#dustidx i.on{opacity:.95;transform:none}
#dustidx i.past{opacity:0;transform:translateY(-30px)}
@media(prefers-reduced-motion:reduce){ #dustidx i{transition:none} }
/* 狭い窓では ◇ を出さないので、番号だけ出ても意味がない。 */
@media(max-width:900px){ #dustidx{display:none} }
@media(max-width:900px){ #shapes{display:none} }
@media(min-width:901px){
  /* ◇ に画面 1 枚ぶんを与える。コマの高さがそのまま ◇ の大きさになる
     ── shapes.js は「コマの高さ」を基準に 1 単位を決める（uU）。
     88vh で頭打ちにするのは、下に字が続くことを 1 枚目で見せるため
     （画面ぴったりだと、下に何かあると気づかれない）。 */
  /* 2026-09-03: 1 枚目に字も入れたので、コマを 88vh から 48vh へ縮めた。
     画面 1 枚ぶん取っていると、◇ の下に字を置く場所が残らない。 */
  /* 字を下げたぶん、◇ の帯も 48vh -> 40vh に詰める。
     帯を詰めると ◇ の中心も上がり、字との間が空く。 */
  .hero{--shapeband:min(clamp(300px,34vw,500px),40vh)}
  #shapeband{height:var(--shapeband)}
}
#board{position:absolute;inset:0;z-index:0;display:grid;align-content:start;overflow:hidden;user-select:none;pointer-events:none;
  font-family:var(--mo);font-size:11px;line-height:22px;text-align:center;color:color-mix(in srgb,var(--ink) 9%,transparent);
  mask-image:linear-gradient(180deg,#000 0%,#000 60%,transparent 100%)}
#board span{display:block}
.hero .veil{position:absolute;inset:0;z-index:1;background:
  radial-gradient(50% 62% at 16% 20%, color-mix(in srgb,var(--pa) 80%,transparent) 0%, transparent 70%),
  radial-gradient(46% 58% at 86% 12%, color-mix(in srgb,var(--pb) 78%,transparent) 0%, transparent 72%),
  radial-gradient(64% 72% at 58% 100%, color-mix(in srgb,var(--pc) 70%,transparent) 0%, transparent 76%)}
.hero .wrap{position:relative;z-index:3}
/* 文章の下にだけ敷く地。環を手前へ出したぶん、字の読みやすさはここで守る。
   膜（.veil）のような全面の覆いにしないのは、それだと環がまた沈むから。
   右へ向かって消えるので、環の見せ場（中央〜右）には掛からない。 */
.hero .wrap::before{content:"";position:absolute;z-index:-1;
  left:-4%;right:42%;top:-3%;bottom:-3%;pointer-events:none;
  background:linear-gradient(100deg,
    color-mix(in srgb,var(--paper) 88%,transparent) 0%,
    color-mix(in srgb,var(--paper) 78%,transparent) 52%,
    transparent 100%);
  filter:blur(14px)}
@media(max-width:900px){ .hero .wrap::before{right:-4%}}
/* 2026-09-03: 01 ／ 見出し ／ 本文を 1 コマぶん下げる。
   1 コマ = blocktag が元から持つ下の余白（26px）と同じ刻み。窓幅で伸びる。
   .hero に限る ── 同じ .blocktag は 02 以降の節でも使っており、そちらは動かさない。 */
.hero .blocktag{margin-top:clamp(26px,3.4vw,56px)}

/* ── 環と字を分ける（2026-09-03）─────────────────────────────
   これまでは、環が hero いっぱいに広がり、その上に字を載せていた。
   だから「字を守る板・影」を何枚も足す必要があり、板を厚くすると環が沈み、
   薄くすると字が読めない、という綱引きが続いていた。
   分ければ、その綱引きが要らなくなる ── 上は環だけ、下は字だけ。
   環が先。まず環を見て、それから字を読む。
   ring.js は canvas の中央に描くので（uC）、canvas を上の帯に縮めれば
   環もその帯の中央へ来る。js は触らない。 */
#ringband{height:0}
/* 環を止めているあいだ（data-ring="off"）── 環が無かった頃の hero に戻す。 */
.hero[data-ring="off"] #ring{display:none}
.hero[data-ring="off"] #ringband{height:0}
@media(min-width:901px){
  /* 環は止めたまま。上の余白は ◇ のコマが持つので 0 にする
     ── コマと余白の両方があると、字が画面 2 枚ぶん下へ行く。 */
  .hero[data-ring="off"]{padding-top:0}
}
@media(min-width:901px){
  /* 環に 1 コマまるごと与える。コマの高さがそのまま環の大きさになる
     ── ring.js は「コマの高さ」を基準に環を描く（uU）。
     90vh で頭打ちにするのは、環だけで画面が埋まって下の字が見えなくなるのを避けるため。 */
  .hero{--ringband:min(clamp(600px,76vw,1200px),90vh);padding-top:0}
  #ringband{height:var(--ringband)}
  /* canvas は「環のコマ＋こまが降りて行く先」ぶん。hero 全部にはしない。
     ring.js は画素の総数で上限を掛けるので（MAXPX）、面を広げるとそのぶん
     1 画素あたりの密度が落ちて環の輪郭が甘くなる。
     420px ＝ 01 の下に、広がった弧の半径ぶんの余地。
     下端の霞みは切る ── 霞ませると、降りて来たこまが途中で消える。 */
  #ring{height:min(100%,calc(var(--ringband) + 420px));
    mask-image:none;-webkit-mask-image:none}
  .hero .wrap{margin-top:0}
}
.hero h1{font-family:var(--mi);font-weight:700;font-size:clamp(2.7rem,7vw,5rem);line-height:1.24;letter-spacing:.02em;margin:12px 0 20px}
.hero h1 em{font-style:normal;color:var(--ac);border-bottom:4px solid color-mix(in srgb,var(--ac) 38%,transparent)}
.hero p{max-width:620px;color:var(--mute);font-size:.95rem}
.row{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.btn{font-size:.85rem;letter-spacing:.08em;padding:13px 26px;border-radius:999px;border:1px solid var(--hair);background:var(--card);box-shadow:var(--shs);transition:transform .18s}
.btn:hover{transform:translateY(-2px)}
.btn.solid{background:var(--ac);border-color:var(--ac);color:#fff}
@media(prefers-reduced-motion:reduce){.btn:hover{transform:none}}
.roles{display:flex;gap:8px;flex-wrap:wrap;margin-top:38px}
.chip{font-family:var(--mo);font-size:.66rem;letter-spacing:.1em;background:color-mix(in srgb,var(--card) 86%,transparent);border:1px solid var(--hair);border-radius:999px;padding:6px 13px;display:inline-flex;align-items:center;gap:7px;color:var(--mute)}
.chip i{width:8px;height:8px;border-radius:50%;background:var(--c,var(--ac))}

/* ══════════ セクション ══════════ */
.sheet{padding:clamp(60px,8.5vw,110px) 0;position:relative}
.tint-a{background:linear-gradient(170deg,color-mix(in srgb,var(--pa) 55%,var(--paper)),var(--paper) 58%)}
.tint-b{background:linear-gradient(170deg,color-mix(in srgb,var(--pb) 55%,var(--paper)),var(--paper) 58%)}
.tint-c{background:linear-gradient(170deg,color-mix(in srgb,var(--pc) 55%,var(--paper)),var(--paper) 58%)}
.tint-ab{background:linear-gradient(172deg,color-mix(in srgb,var(--pa) 50%,var(--paper)),color-mix(in srgb,var(--pb) 46%,var(--paper)) 48%,var(--paper) 90%)}
.tint-bc{background:linear-gradient(176deg,color-mix(in srgb,var(--pb) 46%,var(--paper)),color-mix(in srgb,var(--pc) 46%,var(--paper)) 64%,var(--paper) 97%)}
h2.t{font-family:var(--mi);font-weight:700;font-size:clamp(1.7rem,3.8vw,2.7rem);line-height:1.42;margin-bottom:18px}
p.lead{max-width:640px;color:var(--mute);font-size:.93rem;margin-bottom:36px}
/* 節の中の .lead は囲みの外＝◇ の上に直に乗る。--mute のままでは沈むので、
   ここだけ --ink 寄りに上げ、字にも暗い縁を付ける（2026-09-06）。 */
#story p.lead{color:color-mix(in srgb,var(--ink) 62%,var(--mute));font-size:.97rem;
  text-shadow:0 1px 6px rgba(0,0,0,.90), 0 0 16px rgba(0,0,0,.72)}

/* ══════════ 03 制作するもの ══════════ */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.card{background:var(--card);border:1px solid var(--hair);border-radius:var(--r);padding:28px 24px;box-shadow:var(--shs);transition:transform .2s}
.card:hover{transform:translateY(-4px)}
.card .badge{font-family:var(--mo);font-weight:600;font-size:.8rem;width:40px;height:40px;border-radius:50%;background:var(--bg,var(--pa));display:grid;place-items:center;margin-bottom:16px;color:var(--ink)}
.card h3{font-family:var(--mi);font-weight:700;font-size:1.06rem}
.card .en{font-family:var(--mo);font-size:.58rem;letter-spacing:.24em;color:var(--dim);margin:4px 0 12px;text-transform:uppercase}
.card p{font-size:.82rem;color:var(--mute)}

.cone-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:16px}
.cf{background:var(--card);border:1px solid var(--hair);border-radius:var(--rs);padding:16px 18px;box-shadow:var(--shs);border-left:4px solid var(--fc,var(--pa))}
.cf .k{font-family:var(--mo);font-size:.66rem;letter-spacing:.18em;
  color:color-mix(in srgb,var(--mute) 78%,var(--ink))}
.cf b{font-family:var(--mi);font-weight:700;font-size:.98rem;display:block;margin:4px 0 3px}
.cf span{font-size:.78rem;color:color-mix(in srgb,var(--ink) 52%,var(--mute));line-height:1.8}

/* ══════════ 08 HUMAN ONLY ══════════ */
.only{text-align:center}
.only .blocktag{justify-content:center}
.only .g{font-family:var(--mi);font-weight:700;font-size:clamp(1.9rem,4.6vw,3.1rem);letter-spacing:.04em}
.only .en{font-family:var(--mo);font-size:.62rem;letter-spacing:.5em;color:var(--ac);margin:16px 0 22px}
.only p{max-width:580px;margin:0 auto;color:var(--mute);font-size:.9rem}

/* ══════════ 09 進め方 ══════════ */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.step{background:var(--card);border:1px solid var(--hair);border-radius:var(--r);padding:26px 22px;box-shadow:var(--shs)}
.step .n{color:#FFFFFF;font-family:var(--mo);font-weight:600;font-size:.8rem;width:40px;height:40px;border-radius:50%;background:var(--bg,var(--pa));display:grid;place-items:center;margin-bottom:14px}
.step h3{font-family:var(--mi);font-weight:700;font-size:1rem}
.step p{font-size:.78rem;color:var(--mute);margin-top:8px}

/* ══════════ 10 料金 ══════════ */
.price{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px}
@media(max-width:680px){.price{grid-template-columns:1fr}}
.pc{background:var(--card);border:1px solid var(--hair);border-radius:var(--r);padding:26px;box-shadow:var(--shs)}
.pc b{font-family:var(--mi);font-size:1.35rem;font-weight:700;display:block;margin:8px 0 6px}
.pc p{font-size:.8rem;color:var(--mute)}
.pc .k{font-family:var(--mo);font-size:.58rem;letter-spacing:.22em;color:var(--ac)}

/* ══════════ 11 相談 ＋ FOOTER ══════════ */
.contact-card{background:var(--card);border:1px solid var(--hair);border-radius:var(--r);box-shadow:var(--sh);padding:clamp(28px,5vw,56px)}
.contact-card h2{font-family:var(--mi);font-weight:700;font-size:clamp(1.6rem,3.6vw,2.4rem)}
.info{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:18px;margin:30px 0;font-size:.8rem;color:var(--mute)}
.info b{display:block;font-family:var(--mo);font-size:.56rem;letter-spacing:.24em;color:var(--ac);margin-bottom:5px}
.info a{font-family:var(--mo);font-weight:600;font-size:1rem;color:var(--ink)}
footer{margin-top:56px;font-size:.78rem;color:var(--mute)}
.foot{display:grid;grid-template-columns:1.1fr 1fr 1.3fr;gap:30px;padding-bottom:30px;border-bottom:1px solid var(--hair)}
@media(max-width:820px){.foot{grid-template-columns:1fr}}
.foot h4{font-family:var(--mo);font-size:.58rem;letter-spacing:.24em;color:var(--dim);margin-bottom:12px}
.ft-nav a,.ft-biz a{display:block;color:var(--mute);padding:3px 0}
.ft-nav a.sub{padding-left:1em;font-size:.9em}
.ft-nav a:hover,.ft-biz a:hover{color:var(--ink)}
.ft-biz .bn{display:block;font-weight:500;color:var(--ink)}
.ft-biz .bd{display:block;font-size:.68rem;color:var(--dim)}
.foot-legal{
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:flex-end;
  margin-top:34px;padding-top:22px;border-top:1px solid var(--hair2);
}
.foot-legal nav{display:flex;gap:18px;flex-wrap:wrap;font-size:.76rem;color:var(--mute)}
.foot-legal nav a:hover{color:var(--ink)}
.meta{font-family:var(--mo);font-size:.58rem;letter-spacing:.12em;color:var(--dim);line-height:2.1}
@media(max-width:900px){
  .foot-legal{flex-direction:column;align-items:flex-start}
}

@media(prefers-reduced-motion:no-preference){
  .reveal{opacity:0;transform:translateY(14px);transition:opacity .7s,transform .7s}
  .reveal.in{opacity:1;transform:none}
}

/* ══════════════════════════════════════════════════════════════
   TOP v7（2026-08-20）── 10ブロック構成で足した部品
   上のブロック番号つきの見出し（01 HERO 〜 11 相談）は v6 のときの並び。
   v7 の並びは index.html の先頭コメントが正本で、番号ではなく **何を答える節か**
   で対応する: 01 主題 / 02 ことば / 03 違い / 04 時間 / 05 費用 /
   06 実証 / 07 無人の時間 / 08 人間 / 09 疑い / 10 始め方。
   ここから下は v7 で新設した部品だけを置く（既存の部品は上をそのまま使う）。
   ══════════════════════════════════════════════════════════════ */

/* ── 節の中見出し（h2.t の下に挟む段） ── */
h3.sub{font-family:var(--mi);font-weight:700;font-size:clamp(1.1rem,2.2vw,1.45rem);
  margin:52px 0 14px;padding-top:22px;border-top:1px solid var(--hair)}

/* ── 実測タイルの並び。v6 では .figures の中だけだったので、節の中でも効くようにする ── */
.sheet .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px;margin-top:26px}

/* ── 01 ページの目次（ヒーロー内・10 の行き先。01 はこのページ自身） ── */
.toc10{display:flex;flex-wrap:wrap;gap:6px;margin-top:26px;max-width:640px}
/* 01〜10 は常に読める。
   2026-08-29 に hero の 3D を脳から環へ戻したので、隠す係は居ない。
   下の 2 行は /assets/brain.js を載せたときだけ効く（html.brain-on が付く）。
   脳へ戻す日にここを書き直さずに済むよう、消さずに置いてある。 */
html.brain-on .toc10 a{opacity:0;will-change:transform,opacity}
@media(prefers-reduced-motion:reduce){
  html.brain-on .toc10 a{opacity:1!important;transform:none!important}
}
.toc10 a{display:inline-flex;align-items:baseline;gap:7px;padding:7px 13px;border-radius:999px;
  border:1px solid var(--hair);background:var(--card);
  font-size:.72rem;color:var(--mute);transition:border-color .2s,color .2s}
.toc10 a:hover{border-color:var(--ac);color:var(--ink)}
.toc10 i{font-family:var(--mo);font-style:normal;font-size:.58rem;letter-spacing:.1em;color:var(--ac)}

/* ── 02 ことばの階段 ──────────────────────────────────────
   段が上がるほど左の柱が伸びる。伸びるのは「できることが増える」の一点だけを
   表しており、上の段が偉いという意味ではない（説明文の側でそう書いてある）。 */
.ladder{list-style:none;display:grid;gap:14px}
.lstep{display:grid;grid-template-columns:64px 1fr;gap:18px;align-items:stretch;
  background:var(--card);border:1px solid var(--hair);border-radius:var(--rs);
  padding:22px 22px 20px;box-shadow:var(--shs);position:relative;overflow:hidden}
.lstep::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--lc,var(--pa))}
.ln{display:flex;flex-direction:column;align-items:center;gap:10px}
.lno{font-family:var(--mo);font-size:.72rem;letter-spacing:.14em;color:var(--lc,var(--ac))}
.lbar{flex:1;width:9px;border-radius:5px;background:var(--hair2);display:block;
  position:relative;min-height:52px;overflow:hidden}
.lbar i{position:absolute;left:0;right:0;bottom:0;border-radius:5px;
  background:var(--lc,var(--pa));height:calc(var(--lv) * 20%)}
.lb2 h3{font-family:var(--mi);font-weight:700;font-size:clamp(1.02rem,2.1vw,1.28rem);line-height:1.5}
.lb2 h3 em{display:block;font-family:var(--mo);font-style:normal;font-weight:400;
  font-size:.56rem;letter-spacing:.2em;color:var(--dim);margin-top:6px}
.lb2 p{font-size:.85rem;color:var(--mute);line-height:1.95;margin:12px 0 14px}
.lcan,.lcant{display:flex;gap:10px;font-size:.76rem;line-height:1.8;padding:7px 0;
  border-top:1px solid var(--hair2);color:var(--mute)}
.lcan b,.lcant b{flex:0 0 auto;min-width:7.6em;white-space:nowrap;
  font-family:var(--mo);font-size:.56rem;letter-spacing:.14em;
  padding-top:.35em;font-weight:600}
.lcan b{color:var(--cir)}
.lcant b{color:var(--no)}
@media(max-width:640px){
  .lstep{grid-template-columns:1fr;gap:12px}
  .ln{flex-direction:row;align-items:center}
  .lbar{flex:0 0 auto;width:100%;height:9px;min-height:0}
  .lbar i{top:0;bottom:0;right:auto;height:auto;width:calc(var(--lv) * 20%)}
  .lcan b,.lcant b{min-width:6.6em}
}

/* ── 03 1体と、仕組み（対比） ── */
.vs{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:8px}
@media(max-width:820px){.vs{grid-template-columns:1fr}}
.vsc{background:var(--card);border:1px solid var(--hair);border-radius:var(--rs);
  padding:26px 24px;box-shadow:var(--shs);border-top:4px solid var(--vc,var(--pb))}
.vsc .k{font-family:var(--mo);font-size:.58rem;letter-spacing:.2em;color:var(--vc,var(--ac));display:block}
.vsc b{display:block;font-family:var(--mi);font-size:clamp(1.05rem,2.2vw,1.3rem);margin:10px 0 16px}
.vsc ul{list-style:none;display:grid;gap:9px}
.vsc li{font-size:.82rem;color:var(--mute);line-height:1.8;padding-left:18px;position:relative}
.vsc li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:2px;background:var(--vc,var(--pb))}

/* ── 04 効果量の帯 ────────────────────────────────────────
   横軸は -20% 〜 +60% の 80 目盛り。左端が -20%、ゼロ線が 25%。
   位置は本文側が --from / --w で持つ（式は index.html のコメントに書いた）。
   図の左半分は札の列、右半分が帯。札の幅は --lane に一本化してあるので、
   幅を変えるときはここ 1 か所を直す（軸・ゼロ線・帯が同時にずれるのを防ぐ）。 */
.effect{--lane:clamp(0px,22vw,210px);--vlane:92px;
  background:var(--card);border:1px solid var(--hair);border-radius:var(--r);
  box-shadow:var(--shs);padding:clamp(22px,3.4vw,34px);margin-bottom:26px}
.eplot{position:relative;padding-left:var(--lane);padding-right:var(--vlane)}
.eaxis{position:relative;height:18px}
.eaxis span{position:absolute;left:var(--x);transform:translateX(-50%);
  font-family:var(--mo);font-size:.58rem;letter-spacing:.1em;color:var(--dim);white-space:nowrap}
.etrack{position:relative;display:grid;gap:12px;padding-top:6px}
.ezero{position:absolute;top:0;bottom:0;left:25%;width:1px;background:var(--hair);z-index:0}
.erow{position:relative;min-height:38px}
.et{position:absolute;left:calc(-1 * var(--lane));width:var(--lane);padding-right:14px;
  font-size:.72rem;color:var(--ink);line-height:1.5}
.eb{position:absolute;left:var(--from);width:var(--w);height:14px;border-radius:3px;
  background:var(--ec,var(--pa));opacity:.86;z-index:1}
.ev{position:absolute;right:calc(-1 * var(--vlane));top:50%;transform:translateY(-50%);
  width:var(--vlane);padding-left:12px;text-align:right;z-index:2;
  font-family:var(--mo);font-size:.86rem;font-weight:600;color:var(--ec,var(--ink));line-height:1.3}
.ev small{display:block;font-family:var(--jp);font-weight:400;font-size:.6rem;color:var(--dim);letter-spacing:0}
.efoot{font-size:.72rem;color:var(--dim);line-height:1.9;margin-top:18px;
  padding-top:14px;border-top:1px solid var(--hair2)}
@media(max-width:720px){
  .effect{--lane:0px;--vlane:0px}
  .eplot{padding-left:0;padding-right:0}
  .erow{min-height:0;padding-bottom:30px}
  .et{position:static;width:auto;padding-right:0;display:block;margin-bottom:6px}
  .eb{top:auto;bottom:14px}
  .ev{position:static;transform:none;width:auto;text-align:left;padding-left:0}
  .ev small{display:inline;margin-left:8px}
}

/* ── 04 出典カード ── */
.srcs{display:grid;grid-template-columns:repeat(auto-fit,minmax(440px,1fr));gap:14px}
.src{background:var(--card);border:1px solid var(--hair);border-radius:var(--rs);
  padding:26px 24px;box-shadow:var(--shs);border-left:4px solid var(--sc,var(--pb))}
.src .sk{font-family:var(--mo);font-size:.56rem;letter-spacing:.2em;color:var(--sc,var(--ac));display:block}
.src h3{font-family:var(--mi);font-weight:700;font-size:1.02rem;line-height:1.6;margin:10px 0 12px}
.src p{font-size:.82rem;color:var(--mute);line-height:1.95}
.src dl{margin:14px 0 12px;border-top:1px solid var(--hair2);padding-top:12px}
.src dt{font-family:var(--mo);font-size:.55rem;letter-spacing:.16em;color:var(--dim);margin-top:9px}
.src dd{font-size:.74rem;color:var(--mute);line-height:1.85;margin-top:3px}
.slink{display:inline-block;font-family:var(--mo);font-size:.64rem;letter-spacing:.08em;
  color:var(--ac);border-bottom:1px solid currentColor;padding-bottom:2px;margin-top:6px}

/* ── 04 読み取り ── */
.reading{margin-top:26px;border-top:1px solid var(--hair);padding-top:26px}
.reading h3{font-family:var(--mi);font-weight:700;font-size:1.1rem;margin-bottom:16px}
.rg{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.rg>div{font-size:.8rem;color:var(--mute);line-height:1.95;padding-left:16px;border-left:2px solid var(--hair)}
.rg b{display:block;font-family:var(--mi);font-size:1.15rem;color:var(--ac);margin-bottom:6px}
.rnote{font-size:.8rem;color:var(--mute);line-height:1.95;margin-top:20px}
.rnote b{font-family:var(--mo);font-weight:600;color:var(--ink)}

/* ── 05 測っていないもの（墨地。ここだけ地を反転させる） ── */
.notmeasured{margin-top:34px;background:var(--hum);color:#EDE6DF;border-radius:var(--r);
  padding:clamp(26px,4vw,40px);box-shadow:var(--sh)}
.notmeasured .k{font-family:var(--mo);font-size:.58rem;letter-spacing:.2em;color:#C8A99A;display:block}
.notmeasured b{display:block;font-family:var(--mi);font-size:clamp(1.1rem,2.4vw,1.45rem);margin:12px 0 16px}
.notmeasured p{font-size:.82rem;line-height:2;color:#CFC4BB;margin-bottom:12px}
.notmeasured strong{color:#fff}
.notmeasured em{display:block;font-style:normal;font-size:.75rem;color:#A99B92;margin-top:8px}
.notmeasured .slink{color:#E5C7A8}

/* ── 09 まだ測れていないこと・向かないこと ── */
.limits{margin-top:26px;border-top:1px solid var(--hair);padding-top:26px}
.limits h3{font-family:var(--mi);font-weight:700;font-size:1.14rem;margin-bottom:14px;
  color:var(--ink)}
.limits ul{list-style:none;display:grid;gap:11px;max-width:820px}
.limits li{font-size:.88rem;color:color-mix(in srgb,var(--ink) 52%,var(--mute));
  line-height:1.9;padding-left:16px;border-left:2px solid var(--no)}
.limits b{display:block;font-family:var(--mi);color:var(--ink);font-size:.92rem;margin-bottom:3px}

/* 帯は「伸びて見える」ほうが読み方が伝わるので、動きを許す設定のときだけ伸ばす。
   既定（JS が動かない・動きを止めている）でも幅は --w のまま出る。 */
@media(prefers-reduced-motion:no-preference){
  .eb{width:0;transition:width .9s cubic-bezier(.2,.7,.2,1)}
  .effect.in .eb{width:var(--w)}
}

/* ══════════════════════════════════════════════════════════════
   v8 レイヤ（2026-08-20）── 地を反転したことで作り直しが要る部品
   ───────────────────────────────────────────────────────────────
   ここから下は「暗い地の上でどう見えるか」だけを担当する。
   上のトークンを明るい値に戻せば骨格（.sheet / .card / .mcard …）は
   そのまま動くので、配色を戻す判断は 1 か所で取り消せる。

   足した見せ方は 4 つ。いずれも情報を足していない ── 読む順を作るだけ。
     ① 地のメッシュとオーロラ  … 紙ではなく「空間」の上に居ることを言う
     ② 走査線（上端の進捗）    … 10 ブロックのどこに居るかを常に出す
     ③ 数字の発光              … このページで一番強いのは実測値、と目で言う
     ④ 人間の節だけ紙に戻る    … 反転を意味に使う（--hum は紙の色のまま）

   動きは全て prefers-reduced-motion を尊重する。止めても情報は落ちない。
   ══════════════════════════════════════════════════════════════ */

/* ── 地 ──────────────────────────────────────────────────────
   背景の実体は html に置く。body は透明にして、body::before を
   「メッシュ＋オーロラ」の層に使う（z-index:-1 で本文の後ろに敷く）。 */
html{background:var(--paper)}
body{background:transparent}
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    /* オーロラ（2枚の巨大な滲み） */
    radial-gradient(58% 44% at 12% 6%, color-mix(in srgb,var(--pa) 17%,transparent) 0%, transparent 68%),
    radial-gradient(52% 46% at 92% 18%, color-mix(in srgb,var(--pb) 15%,transparent) 0%, transparent 70%),
    radial-gradient(70% 50% at 50% 104%, color-mix(in srgb,var(--pc) 11%,transparent) 0%, transparent 72%),
    /* メッシュ（72px の方眼。奥へ薄くなる） */
    linear-gradient(var(--hair2) 1px, transparent 1px),
    linear-gradient(90deg, var(--hair2) 1px, transparent 1px);
  background-size:auto,auto,auto,72px 72px,72px 72px;
  background-position:0 0,0 0,0 0,center 0,center 0;
  mask-image:linear-gradient(180deg,#000 0%,#000 62%,rgba(0,0,0,.35) 100%);
}
/* オーロラだけをゆっくり泳がせる。方眼は動かさない（動くと目が滑るため）。 */
@media(prefers-reduced-motion:no-preference){
  body::before{animation:drift 44s ease-in-out infinite alternate}
}
@keyframes drift{
  from{background-position:0 0,0 0,0 0,center 0,center 0}
  to{background-position:6% 3%,-5% 4%,3% -3%,center 0,center 0}
}

/* 粒。暗い地では multiply が効かないので overlay に変える（白い粒だけが乗る）。 */
.grain{mix-blend-mode:overlay;opacity:.30}

/* ── 走査線 ── 上端 2px。10 ブロックのどこまで来たかを常に出す。
   スクロール駆動アニメーション（animation-timeline）が使える環境だけで出す。
   使えない環境では何も出ない ── 情報は本文と左レールが持っているので落ちない。 */
@keyframes scanx{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@supports (animation-timeline:scroll()){
  @media(prefers-reduced-motion:no-preference){
    body::after{
      content:"";position:fixed;left:0;top:0;height:2px;width:100%;z-index:210;
      transform:scaleX(0);transform-origin:0 50%;
      background:linear-gradient(90deg,var(--pa),var(--pb) 52%,var(--pc));
      box-shadow:0 0 16px var(--glow);
      animation:scanx linear both;animation-timeline:scroll(root block);
    }
  }
}

/* ── 節の地色 ──────────────────────────────────────────────
   v7 までは不透明の紙色で塗っていた。暗地では塗ると後ろのメッシュが消えるので、
   透明へ抜ける薄い染みにする（＝節の切れ目は分かるが、空間はつながって見える）。 */
.tint-a{background:linear-gradient(170deg,color-mix(in srgb,var(--pa) 11%,transparent),transparent 62%)}
.tint-b{background:linear-gradient(170deg,color-mix(in srgb,var(--pb) 11%,transparent),transparent 62%)}
.tint-c{background:linear-gradient(170deg,color-mix(in srgb,var(--pc) 10%,transparent),transparent 62%)}
.tint-ab{background:linear-gradient(172deg,color-mix(in srgb,var(--pa) 10%,transparent),color-mix(in srgb,var(--pb) 10%,transparent) 46%,transparent 88%)}
.tint-bc{background:linear-gradient(176deg,color-mix(in srgb,var(--pb) 10%,transparent),color-mix(in srgb,var(--pc) 10%,transparent) 60%,transparent 94%)}
/* 節と節の境に、光る髪の毛を 1 本置く。 */
.sheet::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--hair),transparent)}

/* ── 01 HERO ────────────────────────────────────────────────
   veil は「紙を白く飛ばす膜」だった。暗地では逆に、下から光が差す膜にする。 */
.hero .veil{background:
  radial-gradient(54% 62% at 14% 16%, color-mix(in srgb,var(--pa) 22%,transparent) 0%, transparent 70%),
  radial-gradient(48% 56% at 88% 8%, color-mix(in srgb,var(--pb) 20%,transparent) 0%, transparent 72%),
  radial-gradient(72% 76% at 56% 108%, color-mix(in srgb,var(--pc) 16%,transparent) 0%, transparent 78%)}
/* 共有黒板の文字は、暗地では明るい側へ寄せないと消える。 */
#board{color:color-mix(in srgb,var(--ink) 14%,transparent)}
.hero h1{letter-spacing:.01em;text-shadow:0 0 4px rgba(0,0,0,1),0 0 11px rgba(0,0,0,1),0 0 26px rgba(0,0,0,.86),0 0 58px rgba(0,0,0,.64)}
/* 見出しの下にも板を敷く。強調語（em）は背景を字型に切り抜いて描く色文字なので、
   黒い影では守れない ── 明るい環の上では色が沈む。地のほうを暗くする。 */
.hero h1{position:relative}
.hero h1::before{content:"";position:absolute;z-index:-1;
  inset:-6px -22px -2px -14px;pointer-events:none;border-radius:18px;
  background:linear-gradient(100deg,
    color-mix(in srgb,var(--paper) 88%,transparent) 0%,
    color-mix(in srgb,var(--paper) 82%,transparent) 58%,
    color-mix(in srgb,var(--paper) 62%,transparent) 100%);
  filter:blur(12px)}
/* 字の影を、面の覆いの代わりに使う（2026-08-29）。
   環を手前へ出して明るくしたので、覆いを厚くすると環がまた沈む。
   影は**字の画素だけ**を守るので、字と字のあいだでは環がそのまま見える。 */
.hero .wrap > p{position:relative;
  text-shadow:0 0 3px rgba(0,0,0,1),0 0 7px rgba(0,0,0,1),
              0 0 17px rgba(0,0,0,.95),0 0 36px rgba(0,0,0,.8)}
/* 本文の下だけに敷く板。h1 は字が大きいので影だけで足りるが、
   0.95rem の本文は環のいちばん明るい所と重なるので影だけでは届かない
   （実測 2.52:1）。板は本文の行の高さぶんしかないので、環は上下と右で見えたまま。 */
.hero .wrap > p::before{content:"";position:absolute;z-index:-1;
  inset:-10px -18px;pointer-events:none;border-radius:14px;
  background:linear-gradient(100deg,
    color-mix(in srgb,var(--paper) 92%,transparent) 0%,
    color-mix(in srgb,var(--paper) 88%,transparent) 62%,
    color-mix(in srgb,var(--paper) 74%,transparent) 100%);
  filter:blur(9px)}
/* 強調語は下線ではなく、グラデーションの文字そのものにする。
   background-clip が効かない環境では色が --ac のまま出る（読めなくならない）。 */
.hero h1 em{border-bottom:0;color:var(--ac);
  background:linear-gradient(96deg,var(--pa),var(--ac2));
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
  filter:drop-shadow(0 0 26px var(--glow))}
/* 強調語は「背景を字型に切り抜いた色文字」なので、親の**きつい黒影**を受けると
   影が字を塗り潰して黒く見える（2026-08-29 実測: 影を締めた途端に読めなくなった）。
   ここだけ影をゆるめ、読みやすさは h1 の下の板で作る。 */
.hero h1 em{text-shadow:0 0 20px rgba(0,0,0,.85),0 0 48px rgba(0,0,0,.6)}
@supports not ((-webkit-background-clip:text) or (background-clip:text)){
  .hero h1 em{-webkit-text-fill-color:currentColor;color:var(--ac)}
}

/* ── ブロック番号・左レール ── このページの背骨。発光させて最前面の情報にする。 */
.blocktag .no{font-size:clamp(2rem,4.4vw,3.1rem);
  background:linear-gradient(150deg,var(--ac),var(--ac2));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  filter:drop-shadow(0 0 18px var(--glow))}
@supports not ((-webkit-background-clip:text) or (background-clip:text)){
  .blocktag .no{-webkit-text-fill-color:currentColor;color:var(--ac)}
}
.rail .now{text-shadow:0 0 22px var(--glow)}
.rail .line i{box-shadow:0 0 12px var(--glow)}

/* ── 器（カード・タイル・札）────────────────────────────────
   紙の質感（白い面＋やわらかい影）から、暗い硝子（半透明＋縁の光）へ。 */
.card,.mcard,.vsc,.src,.lstep,.effect,.qi{
  background:color-mix(in srgb,var(--card) 78%,transparent);
  backdrop-filter:blur(10px)}
.card,.mcard,.vsc,.src,.lstep,.effect{
  border-color:var(--hair);
  box-shadow:var(--shs),inset 0 1px 0 rgba(255,255,255,.045)}
@media(prefers-reduced-motion:no-preference){
  .card,.mcard,.vsc,.src,.lstep{transition:transform .2s,border-color .2s,box-shadow .2s}
}
.card:hover,.mcard:hover,.vsc:hover,.src:hover,.lstep:hover{
  border-color:color-mix(in srgb,var(--ac) 45%,var(--hair));
  box-shadow:var(--shs),0 0 0 1px color-mix(in srgb,var(--ac) 22%,transparent),
             0 0 34px -6px var(--glow),inset 0 1px 0 rgba(255,255,255,.06)}

/* 実測値そのものを、このページで一番明るいものにする。 */
.rg b{text-shadow:0 0 18px var(--glow)}

/* ── ボタン・チップ・ナビ ── */
.btn{background:color-mix(in srgb,var(--card) 82%,transparent);backdrop-filter:blur(10px)}
.btn:hover{border-color:color-mix(in srgb,var(--ac) 50%,var(--hair));box-shadow:0 0 26px -8px var(--glow)}
.btn.primary,.btn[data-primary]{border-color:color-mix(in srgb,var(--ac) 55%,transparent);
  box-shadow:0 0 30px -10px var(--glow)}
.chip{background:color-mix(in srgb,var(--card) 74%,transparent);backdrop-filter:blur(8px)}
.pill{background:color-mix(in srgb,var(--card) 70%,transparent);
  box-shadow:var(--shs),inset 0 1px 0 rgba(255,255,255,.05)}
.navtoggle span{background:var(--ink)}
.toc10 a{background:color-mix(in srgb,var(--card) 70%,transparent);backdrop-filter:blur(8px)}
.toc10 a:hover{box-shadow:0 0 22px -8px var(--glow)}
.slink:hover{text-shadow:0 0 16px var(--glow)}

/* 配色切替 UI（手元だけ）の見本玉を、新しい3案の色に合わせる。 */
.themebar .sa i{background:#3BD8FF}
.themebar .sb i{background:#6E9BFF}
.themebar .sc i{background:#4FE3B4}

/* ── 効果量の帯 ── 帯そのものを光らせる（読み取りの主役なので）。 */
.eb{opacity:.95;box-shadow:0 0 18px -4px var(--ec,var(--pa))}
.ezero{background:color-mix(in srgb,var(--ink) 34%,transparent)}

/* ── 05「測っていないもの」── ここだけ紙に戻る ────────────────
   反転した地の上で、唯一 --hum（紙の色）を敷く節。
   「人間がまだ測っていない」と書いてある所を、人間の色で塗る。 */
.notmeasured{background:var(--hum);color:#1A1712;
  box-shadow:0 30px 70px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.12)}
.notmeasured .k{color:#6E5236}
.notmeasured p{color:#4A3C31}
.notmeasured strong{color:#120F0C}
.notmeasured em{color:#61503E}
.notmeasured .slink{color:#8A3A22}

/* ── 09 まだ測れていないこと ── 縁の赤を暗地用に上げてある（--no）。 */
.limits li{border-left-color:color-mix(in srgb,var(--no) 70%,transparent)}


/* ── 選択とフォーカス ── 暗地では既定の選択色が読めなくなるので明示する。 */
::selection{background:color-mix(in srgb,var(--ac) 40%,transparent);color:var(--ink)}
:focus-visible{outline-color:var(--ac)}

/* ── 明るいアクセントの上に置く文字 ────────────────────────────
   v7 までは --ac が茜（暗い赤）だったので、その上の文字は白でよかった。
   v8 の --ac はシアン（明るい）ので、白を載せると読めない（実測 1.9:1）。
   明るい面の上は必ず暗い文字にする。 */
/* 2026-09-15: 地を白にし --ac を濃い側へ下げたので、上に載る字は白へ戻した。 */
.btn.solid{color:#FFFFFF;font-weight:700;box-shadow:0 0 34px -10px var(--glow)}
.btn.solid:hover{background:var(--ac2);border-color:var(--ac2);color:#FFFFFF}
.pill .nav a.go{color:#FFFFFF;font-weight:700}
.pill .nav a.go:hover{background:var(--ac2);color:#FFFFFF}

/* ── HERO の可読性 ────────────────────────────────────────────
   黒板（#board）は 95 体の AI が書いている実物なので消したくない。
   だが暗地では文字が明るく出るぶん、上に載る本文と喧嘩する（実測: 本文が読めない）。
   そこで「文章が置かれる左側だけを暗く落とす膜」を veil の一番上に足す。
   右側は落とさない ── 黒板は見えたまま、文章は読めるようにするため。
   縦組み（狭い画面）では文章が全幅に広がるので、膜も縦方向に切り替える。 */
#board{opacity:.62}
/* 環は狭い窓では hero の上だけに置く（狭い窓の hero は縦に 1,000px を超える）。
   膜が全面に掛かる側なので、下まで描いても見えない ── 描く画素を減らす。 */
@media(max-width:900px){ #ring{height:min(100%,560px)} }
.hero .veil{background:
  linear-gradient(97deg,
    color-mix(in srgb,var(--paper) 95%,transparent) 0%,
    color-mix(in srgb,var(--paper) 88%,transparent) 34%,
    color-mix(in srgb,var(--paper) 55%,transparent) 62%,
    color-mix(in srgb,var(--paper) 12%,transparent) 84%,
    transparent 100%),
  radial-gradient(54% 62% at 14% 16%, color-mix(in srgb,var(--pa) 22%,transparent) 0%, transparent 70%),
  radial-gradient(48% 56% at 88% 8%, color-mix(in srgb,var(--pb) 20%,transparent) 0%, transparent 72%),
  radial-gradient(72% 76% at 56% 108%, color-mix(in srgb,var(--pc) 16%,transparent) 0%, transparent 78%)}
@media(max-width:900px){
  .hero .veil{background:
    linear-gradient(184deg,
      color-mix(in srgb,var(--paper) 40%,transparent) 0%,
      color-mix(in srgb,var(--paper) 90%,transparent) 26%,
      color-mix(in srgb,var(--paper) 94%,transparent) 100%),
    radial-gradient(60% 50% at 20% 8%, color-mix(in srgb,var(--pa) 20%,transparent) 0%, transparent 72%),
    radial-gradient(70% 60% at 60% 106%, color-mix(in srgb,var(--pc) 15%,transparent) 0%, transparent 78%)}
}
.hero p{color:color-mix(in srgb,var(--ink) 84%,var(--mute))}
.hero p strong{color:var(--ink);font-weight:700}

/* ══════════════════════════════════════════════════════════════
   TOP v9（2026-08-21・D-2434）── 主語を客の業務へ戻したときに足した部品
   ・04 つくるもの ── 実績写真つきの 4 枚
   ・07 始め方 ── 業務棚卸し（3問）のフォーム
   ・09 四門 ── 問答（同じ文が JSON-LD の FAQPage にも出る）
   写真は下から遅れて読ませる（loading="lazy"）。高さは CSS で先に確保して
   あるので、読み終わっても行が動かない（CLS を出さない）。
   ══════════════════════════════════════════════════════════════ */

/* ── 04 つくるもの ── */
/* 4 枚は 2×2 に置く。3+1 になると 4 枚目だけが浮いて、
   「4 種類ある」という主張が見た目で崩れる。 */
.made{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media(max-width:760px){.made{grid-template-columns:1fr}}
/* 広い画面では 4 枚を横一列に（2026-09-08・依頼「画像を横に、広げて」）。
   1 枚が 2 列のときの半分ほどの幅になるので、写真の丈もそれに合わせて下げる
   ── 丈をそのままにすると、横 320px に対して縦 260px の「ほぼ正方形」になり、
   画面の切り抜きが縦長に見えてしまう。 */
@media(min-width:1080px){
  .made{grid-template-columns:repeat(4,minmax(0,1fr))}
  .made .mcard img{height:clamp(150px,13vw,190px)}
}
.mcard{background:color-mix(in srgb,var(--card) 78%,transparent);backdrop-filter:blur(10px);
  border:1px solid var(--hair);border-radius:var(--r);box-shadow:var(--shs);overflow:hidden;
  display:flex;flex-direction:column}
.mcard figure{margin:0;background:color-mix(in srgb,var(--paper) 60%,var(--card))}
.mcard img{width:100%;height:clamp(180px,24vw,260px);object-fit:cover;object-position:50% 0;
  border-bottom:1px solid var(--hair)}
.mcard figcaption{font-family:var(--mo);font-size:.58rem;letter-spacing:.08em;color:var(--dim);
  line-height:1.9;padding:9px 20px 0}
.mcard figcaption a{color:var(--ac);text-decoration:underline;text-underline-offset:3px}
.mcard .mtx{padding:16px 20px 24px}
.mcard .badge{font-family:var(--mo);font-weight:600;font-size:.8rem;width:36px;height:36px;
  border-radius:50%;background:var(--bg,var(--pa));display:grid;place-items:center;
  margin-bottom:12px;color:#04121A}
.mcard h3{font-family:var(--mi);font-weight:700;font-size:1.06rem}
.mcard .en{font-family:var(--mo);font-size:.58rem;letter-spacing:.24em;color:var(--dim);
  margin:4px 0 12px;text-transform:uppercase}
.mcard p{font-size:.82rem;color:var(--mute)}

/* ── 07 業務棚卸し（3問） ── */
.inv{background:color-mix(in srgb,var(--card) 82%,transparent);backdrop-filter:blur(10px);
  border:1px solid color-mix(in srgb,var(--ac) 34%,var(--hair));border-radius:var(--r);
  box-shadow:var(--shs),0 0 34px -14px var(--glow);padding:clamp(22px,3.6vw,38px);margin-bottom:34px}
.inv-h .k{font-family:var(--mo);font-size:.58rem;letter-spacing:.22em;color:var(--ac);display:block}
.inv-h b{display:block;font-family:var(--mi);font-weight:700;
  font-size:clamp(1.05rem,2.2vw,1.35rem);margin:10px 0 8px}
.inv-h p{font-size:.8rem;color:var(--mute);margin-bottom:20px}
.inv-q{margin-bottom:14px}
.inv-q label{display:block;font-size:.82rem;margin-bottom:6px}
.inv-q label i{font-family:var(--mo);font-style:normal;font-size:.6rem;letter-spacing:.16em;
  color:var(--ac);margin-right:9px}
.inv-me{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0 14px}
@media(max-width:620px){.inv-me{grid-template-columns:1fr}}
.inv-me label{display:block;font-size:.76rem;color:var(--mute);margin-bottom:6px}
.inv textarea,.inv input[type="text"],.inv input[type="email"]{
  width:100%;font-family:var(--jp);font-size:.86rem;color:var(--ink);line-height:1.9;
  background:color-mix(in srgb,var(--paper) 62%,transparent);border:1px solid var(--hair);
  border-radius:var(--rs);padding:11px 14px;resize:vertical}
.inv textarea::placeholder{color:var(--dim)}
.inv :is(textarea,input):focus-visible{border-color:var(--ac);outline:none;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 22%,transparent)}
.inv [aria-invalid="true"]{border-color:var(--no)}
.inv-ok{display:flex;gap:10px;align-items:flex-start;font-size:.76rem;color:var(--mute);margin:6px 0 20px}
.inv-ok input{margin-top:6px;accent-color:var(--ac)}
.inv-ok a{color:var(--ac);text-decoration:underline;text-underline-offset:3px}
.inv-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.inv-go{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.inv-status{font-size:.78rem;color:var(--mute);line-height:1.8}
.inv-status.err{color:var(--no)}
.inv-status.ok{color:var(--cir)}
/* 確認画面（@HPルール No.11 v1.12: 入力 → 確認 → 完了）。入力欄は [hidden] で隠して値を残す。 */
.inv[hidden]{display:none}
.inv-confirm .inv-h b:focus{outline:none}
.inv-confirm-list{margin:0 0 20px;border-top:1px solid var(--hair)}
.inv-confirm-list dt{font-size:.72rem;color:var(--mute);margin-top:12px}
.inv-confirm-list dd{margin:4px 0 0;padding-bottom:12px;border-bottom:1px solid var(--hair);
  font-size:.86rem;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}
.inv-go .btn[disabled]{opacity:.45;cursor:progress}
.inv-done .inv-h p{margin-bottom:0}

/* ── 09 四門の問答 ── */
.qa{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
.qi{background:color-mix(in srgb,var(--card) 78%,transparent);backdrop-filter:blur(10px);
  border:1px solid var(--hair);border-radius:var(--rs);box-shadow:var(--shs);
  border-top:4px solid var(--cc,var(--pb));padding:22px}
.qi h3{font-family:var(--mi);font-weight:700;font-size:.98rem;line-height:1.7;margin-bottom:10px}
.qi p{font-size:.8rem;color:var(--mute);line-height:1.9}
.qi strong{color:var(--ink)}

/* ── 売り物の三行（01 と 02 のあいだの帯）── D-2433-b ────────────────────
   D-2433-b。**新しい色は 1 つも作らない。** 既にある変数（--card / --hair /
   --ink / --mute / --dim / --ac / --pa …）だけで組む。
   tools/contrast-selftest.mjs が見張っているのは :root の対で、ここで新しい
   16 進を足すとその対の外に色が生まれ、比で守れない面ができる。 */
.offers{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-top:26px}
.ocard{display:block;background:var(--card);border:1px solid var(--hair);border-radius:var(--r);
  padding:22px 20px 20px;box-shadow:var(--shs);position:relative;overflow:hidden;
  text-decoration:none;color:var(--ink);transition:transform .2s,border-color .2s,box-shadow .2s}
.ocard::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--pa)}
.ocard:nth-child(2)::before{background:var(--pb)}
.ocard:nth-child(3)::before{background:var(--pc)}
.ocard:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--ac) 45%,var(--hair));
  box-shadow:var(--shs),0 0 26px -10px var(--glow)}
.ocard .on{font-family:var(--mo);font-size:.58rem;letter-spacing:.24em;color:var(--dim);display:block}
.ocard .oh{font-family:var(--mi);font-weight:700;font-size:1.12rem;line-height:1.5;display:block;margin-top:6px}
.ocard .oh i{font-style:normal;font-size:.8em;margin-left:4px;color:var(--ac)}
.ocard .ok{font-family:var(--mo);font-size:.6rem;letter-spacing:.16em;color:var(--ac);display:block;margin-top:6px}
.ocard .od{font-size:.75rem;color:var(--mute);line-height:1.85;display:block;margin-top:10px}
@media(prefers-reduced-motion:reduce){.ocard:hover{transform:none}}

/* ◇ 4 つの色（2026-09-03・指定）。赤・青・黄・緑。
   黒地の上で沈まない明るさに取ってある。ここが正本 ── shapes.js は読むだけ。 */
:root{ --sh1:#FF6B5E; --sh2:#5B9CFF; --sh3:#F2C94C; --sh4:#56D08A }


/* ══════════ 見出し部と五段階（2026-09-05・参考画像に合わせて）══════════
   背景（#scene の粒）は触っていない。動かしたのは字の位置と大きさだけ。
   色は既存の変数からしか引かない ── ここで新しい 16 進を足すと、
   配色案 a/b/c の対の外に色が生まれ、比で守れない面ができる。 */

/* ── こま 01: 見出し ───────────────────────────── */
#story #top{min-height:calc(100vh - 150px);display:flex;flex-direction:column;justify-content:center}
/* 小見出し。参考画像の HUMAN × AI × POSSIBILITY。
   × は語ではなく区切りなので、字間を空けて薄くする。 */
#story #top .h2kick{font-family:var(--mo);font-size:clamp(.60rem,1.1vw,.72rem);
  letter-spacing:.30em;color:var(--pa);margin:0 0 clamp(18px,2.6vh,30px);
  text-shadow:0 0 18px var(--glow),0 1px 6px rgba(0,0,0,.9)}
#story #top .h2kick i{font-style:normal;opacity:.5;margin:0 .55em}
#story #top .sh{font-size:clamp(2.1rem,6.0vw,4.8rem);line-height:1.26;margin:0 0 clamp(20px,3vh,30px)}
#story #top .sl{max-width:38em;font-size:clamp(.98rem,1.15vw,1.10rem);line-height:2.05;margin:0}
/* 右上の四語。字を読む邪魔をしないよう、本文の幅の外に置く。
   狭い画面では本文に重なるので消す（情報は持たせていない）。 */
#story #top .h2words{position:absolute;z-index:1;top:0;right:0;
  list-style:none;margin:0;padding:0;display:grid;gap:10px;text-align:right;
  font-family:var(--mo);font-size:.60rem;letter-spacing:.24em;color:var(--dim);
  text-shadow:0 1px 6px rgba(0,0,0,.9)}
/* 丸ボタン。地の粒が透けるので、うっすら曇らせて字を立てる。 */
#story #top .h2cta{display:inline-flex;align-items:center;gap:14px;
  margin-top:clamp(26px,4vh,44px);padding:15px 30px;border-radius:999px;
  border:1px solid color-mix(in srgb,var(--ac) 50%,var(--hair));
  background:color-mix(in srgb,var(--card) 58%,transparent);backdrop-filter:blur(9px);
  color:var(--ink);font-size:.92rem;text-decoration:none;align-self:flex-start;
  transition:border-color .2s,box-shadow .2s,transform .2s}
#story #top .h2cta:hover{border-color:var(--ac);transform:translateY(-1px);
  box-shadow:0 0 32px -6px var(--glow)}
#story #top .h2cta span{color:var(--ac)}
/* 無料AI HP診断の入口（2026-09-19 YOHAKU「HP無料診断はTOPにおいて」）。主ボタンはこの 1 つ。
   送り先は /shindan.html?url=…（ウィジェットが ?url= で自動的に診断を始める）。色は既存の変数だけ。 */
#story #top .h2diag{margin:0 0 clamp(22px,3.4vh,34px);max-width:min(680px,100%);display:grid;gap:10px}
#story #top .h2diag-l{font-size:clamp(.95rem,1.1vw,1.05rem);line-height:1.8;color:var(--ink)}
#story #top .h2diag-l strong{color:var(--ac)}
#story #top .h2diag-row{display:flex;gap:10px;flex-wrap:wrap}
#story #top .h2diag-row input{flex:1 1 16em;min-width:0;font:inherit;font-size:1rem;padding:14px 16px;
  border-radius:12px;border:1px solid color-mix(in srgb,var(--ac) 40%,var(--hair));
  background:color-mix(in srgb,var(--card) 85%,transparent);color:var(--ink)}
#story #top .h2diag-row input::placeholder{color:var(--mute)}
#story #top .h2diag-row button{flex:0 0 auto;font:inherit;font-weight:700;font-size:1rem;padding:14px 26px;
  border-radius:12px;border:0;background:var(--ac);color:var(--paper);cursor:pointer;
  transition:box-shadow .2s,transform .2s}
#story #top .h2diag-row button:hover{box-shadow:0 0 32px -6px var(--glow);transform:translateY(-1px)}
#story #top .h2diag-n{margin:0;font-size:.82rem;color:var(--mute)}
#story #top .h2sub{align-self:flex-start;margin-top:clamp(14px,2.4vh,24px);font-size:.88rem;
  color:var(--mute);text-decoration:underline;text-underline-offset:4px}
#story #top .h2sub span{color:var(--ac);margin-left:6px}
@media(max-width:560px){
  #story #top .h2diag-row button{width:100%}
}
/* 下の 01 ── 05 の線。読み進みではなく、階段が五段であることの目印。 */
#story #top .h2prog{display:flex;align-items:center;gap:16px;
  margin-top:clamp(30px,6vh,66px);font-family:var(--mo);font-size:.68rem;
  letter-spacing:.16em;color:var(--mute);text-shadow:0 1px 6px rgba(0,0,0,.95)}
#story #top .h2prog i{flex:1;display:block;height:1px;background:var(--hair);position:relative}
#story #top .h2prog i b{position:absolute;left:0;top:0;height:1px;width:20%;
  background:var(--ac);box-shadow:0 0 12px var(--glow)}

/* ── こま 02: 五段階 ───────────────────────────── */
/* 参考画像は中央寄せ。地の霞（.st::before）は左寄せの本文に合わせて
   32% の所に置いてあるので、この節だけ中央へ移す。 */
#story #ladder::before{background:radial-gradient(58% 62% at 50% 46%,
  rgba(0,0,0,.84) 0%, rgba(0,0,0,.64) 42%, rgba(0,0,0,.30) 68%, transparent 84%)}
#story #ladder .five-h{text-align:center;max-width:760px;margin:0 auto}
#story #ladder .five-h .sh{font-size:clamp(1.5rem,3.2vw,2.4rem);margin-bottom:14px}
#story #ladder .five-h .sl{margin:0 auto;font-size:.95rem}
.fivecards{list-style:none;margin:clamp(26px,4vh,44px) 0 0;padding:0;
  display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.fcard{position:relative;padding:22px 14px 20px;text-align:center;
  border:1px solid var(--hair);border-radius:var(--rs);
  background:color-mix(in srgb,var(--card) 80%,transparent);backdrop-filter:blur(10px);
  box-shadow:var(--shs),inset 0 1px 0 rgba(255,255,255,.045);
  transition:transform .2s,border-color .2s,box-shadow .2s}
.fcard:hover{transform:translateY(-2px);
  border-color:color-mix(in srgb,var(--lc,var(--ac)) 50%,var(--hair));
  box-shadow:var(--shs),0 0 34px -8px var(--lc,var(--glow)),inset 0 1px 0 rgba(255,255,255,.06)}
.fcard .fno{display:block;text-align:left;font-family:var(--mo);font-weight:600;
  font-size:1.5rem;line-height:1;color:var(--lc,var(--ac))}
.fcard .fic{display:grid;place-items:center;width:46px;height:46px;margin:14px auto 14px;
  border-radius:12px;color:var(--lc,var(--ac));
  background:color-mix(in srgb,var(--lc,var(--ac)) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--lc,var(--ac)) 28%,transparent)}
.fcard .fic svg{width:23px;height:23px}
.fcard h3{margin:0 0 8px;font-size:.86rem;line-height:1.5;color:var(--ink);font-weight:700;
  word-break:auto-phrase}
.fcard p{margin:0;font-size:.72rem;line-height:1.8;color:var(--mute);word-break:auto-phrase}
/* 詳しい説明は畳んで残す。参考画像には無い形なので、閉じた状態が既定。 */
.fdetail{margin-top:24px}
.fdetail>summary{cursor:pointer;list-style:none;padding:10px 0;
  font-family:var(--mo);font-size:.68rem;letter-spacing:.16em;color:var(--dim)}
.fdetail>summary::-webkit-details-marker{display:none}
.fdetail>summary::before{content:"＋　";color:var(--ac)}
.fdetail[open]>summary::before{content:"−　"}
.fdetail>summary:hover{color:var(--ink)}
.fdetail-lead{max-width:720px;color:var(--mute);font-size:.9rem;line-height:2;margin:6px 0 18px}

@media(max-width:980px){
  .fivecards{grid-template-columns:repeat(2,1fr)}
  #story #top .h2words{display:none}
}
@media(max-width:560px){
  .fivecards{grid-template-columns:1fr}
  #story #top .h2cta{width:100%;justify-content:center}
}
@media(prefers-reduced-motion:reduce){
  .fcard:hover,#story #top .h2cta:hover{transform:none}
}

/* ══ 参考画像との差を埋める（2026-09-05）══════════════════════════
   1. 五段階は**独立した帯**。参考画像ではここだけ地が変わり、上下に境目がある。
      いまは粒の上に浮いていたので、こま同士の切れ目が読めなかった。
   2. 帯を画面の端まで伸ばすのに 100vw を使う。左右に溢れると横スクロールが
      出るので、body 側で clip する（hidden ではなく clip ── hidden は
      その要素をスクロールの容れ物にしてしまい、中の sticky が効かなくなる）。 */
#story #ladder{padding:clamp(40px,6vh,80px) 0 clamp(18px,3vh,36px);margin:clamp(24px,4vh,48px) 0 0}
/* 2026-09-05: 無地の帯は指示で外した。地は粒のまま。
   既定の霞（#story .st::before）も出さない ── あれも背景なので、
   残すと文の後ろにだけ黒い楕円が浮き、消したことにならない。
   字が読めるのは、見出しと本文に影が付いていて（#story .sh / .sl）、
   カード自身が不透明な地を持っているから。 */
#story #ladder::before{display:none}
#story #ladder>*{position:relative;z-index:1}

/* カードを参考の丈へ。絵記号を大きくし、番号と題の間を空ける。 */
.fcard{padding:30px 20px 28px}
.fcard .fic{width:54px;height:54px;margin:16px auto 16px;border-radius:14px}
.fcard .fic svg{width:27px;height:27px}
.fcard h3{font-size:.90rem}
/* 参考画像では 3 枚目だけが明るかった（いま居る段の印）ので、
   同じように 03 へ is-on を手で付けていた。
   2026-09-06「03 だけ光るのやめて」で**印を外した**。
   この規則は残してあるが、いま is-on を付ける場所は無い（HTML にも JS にも）。
   どれかの段を「いまここ」と見せたくなったら、その li に is-on を付けるだけでよい。 */
.fcard.is-on{border-color:color-mix(in srgb,var(--lc) 58%,var(--hair));
  background:color-mix(in srgb,var(--card) 92%,transparent);
  box-shadow:var(--shs),0 0 40px -10px var(--lc),inset 0 1px 0 rgba(255,255,255,.06)}
.fcard.is-on .fic{background:color-mix(in srgb,var(--lc) 20%,transparent);
  border-color:color-mix(in srgb,var(--lc) 48%,transparent)}

/* ══ お受けしているのは三つです（2026-09-05・参考画像）══════════════
   3 つの球を曲線でつなぐ。写真は手元に無いので、同じ構図を図で描く。
   色は 01 藍・02 緑・03 黄（既存の役割色）。 */
.ob2{position:relative;overflow:hidden;padding-top:clamp(48px,7vh,90px)}
/* 地を静める（2026-09-05「読みにくい」）。参考画像のこの帯は地が暗く、
   だから小さい字まで読める。こちらは ◇ の明るい面（朱・緑・藍）が
   ちょうど文の位置に来るので、字に影を足すだけでは足りなかった。
   **境目を作らない**のが肝 ── 中央を濃く、上下端で 0 まで抜く。
   五段階で外した「無地の帯」は縁がはっきり出る作りで、これとは別物。 */
/* height:auto を書くのが肝。既定の .sheet::before は「上端の 1px の罫」で、
   height:1px を持っている。inset:0 は上下左右の位置しか決めないので、
   height を戻さないと**高さ 1px の帯**のままになり、地は少しも暗くならない
   ── 実際、暗くしたつもりで 2 回とも効いていなかった（2026-09-05 実測）。
   濃さは .96/.91/.66 + .74 → .80/.74/.50 + .56 へ戻した
   （2026-09-05「少し薄く」）。◇ の面が薄く透けるが、字は読める。 */
.ob2::before{content:"";position:absolute;inset:0;height:auto;z-index:0;pointer-events:none;
  background:
    radial-gradient(132% 80% at 50% 46%,
      rgba(0,0,0,.80) 0%, rgba(0,0,0,.74) 44%, rgba(0,0,0,.50) 74%, transparent 93%),
    linear-gradient(180deg, transparent 0%, rgba(0,0,0,.56) 13%,
      rgba(0,0,0,.56) 87%, transparent 100%)}
.ob2 .wrap{position:relative;z-index:1}
.ob2-top{display:flex;align-items:center;justify-content:space-between;gap:20px;
  font-family:var(--mo);font-size:.70rem;letter-spacing:.18em;
  color:color-mix(in srgb,var(--ink) 55%,var(--mute))}
.ob2-k{display:flex;align-items:center;gap:14px}
.ob2-k i{display:block;width:74px;height:1px;background:var(--hair)}
.ob2-r{font-family:var(--jp);font-size:.86rem;letter-spacing:.10em;
  color:color-mix(in srgb,var(--ink) 72%,var(--mute))}
.ob2-h{text-align:center;max-width:1140px;margin:clamp(26px,4vh,50px) auto 0}
.ob2-h .t{margin:0 0 16px}
.ob2-h .lead{margin:0 auto;font-size:1.02rem;line-height:2.15}

/* 3 つの球 */
.orbs{position:relative;display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(16px,2.4vw,40px);margin-top:clamp(150px,17vw,250px);padding-bottom:clamp(30px,5vh,70px)}
/* つなぐ曲線は球の後ろ。3 列ぶんの幅いっぱいに引く。 */
.olink{position:absolute;left:0;right:0;bottom:58%;width:100%;height:clamp(150px,16vw,240px);
  z-index:0;pointer-events:none;opacity:.75;
  filter:drop-shadow(0 0 6px color-mix(in srgb,var(--cir) 45%,transparent))}
/* 前の作り（角丸の札）の指定を**打ち消す**。同じ .ocard を使い回すので、
   地・枠・角丸・はみ出しの切り落としが残っていると、球が半円に切れる。
   色の帯（.ocard:nth-child(2)::before など）は重みが (0,2,1) あるので、
   こちらも .ob2 .orbs を頭に付けて (0,3,1) にしないと勝てない ── 実測で、
   1 枚目が菫、2 枚目が緑の**塗り**になって字を覆っていた。 */
.ob2 .ocard{position:relative;z-index:1;display:block;text-decoration:none;color:inherit;
  background:none;border:0;border-radius:0;box-shadow:none;overflow:visible;
  padding:0 clamp(14px,1.6vw,26px) 8px}
.ob2 .ocard:hover{transform:none;border-color:transparent;box-shadow:none}
/* 球。字の後ろに置き、下半分に文が乗る形にする（参考画像と同じ）。 */
.ob2 .orbs .ocard::before{content:"";position:absolute;z-index:-1;left:50%;transform:translateX(-50%);
  bottom:-6%;width:min(112%,430px);aspect-ratio:1;border-radius:50%;pointer-events:none;
  background:radial-gradient(58% 58% at 42% 34%,
    color-mix(in srgb,var(--oc) 26%,transparent) 0%,
    color-mix(in srgb,var(--oc) 9%,transparent) 46%,
    transparent 72%);
  box-shadow:inset 0 0 70px -18px color-mix(in srgb,var(--oc) 68%,transparent),
             0 0 110px -40px color-mix(in srgb,var(--oc) 80%,transparent);
  border:1px solid color-mix(in srgb,var(--oc) 30%,transparent)}
/* 球の上に置く図。参考では写真だが、ここは線画。 */
.ob2 .ocard .orb{position:absolute;z-index:0;left:50%;transform:translateX(-50%);
  bottom:calc(100% - clamp(30px,3.4vw,54px));width:clamp(120px,13vw,190px);
  color:var(--oc);opacity:.9;pointer-events:none;
  filter:drop-shadow(0 0 8px color-mix(in srgb,var(--oc) 55%,transparent))}
.ob2 .ocard .orb svg{display:block;width:100%;height:auto}
.ob2 .ocard .on{display:block;font-family:var(--mo);font-weight:600;line-height:1;
  font-size:clamp(1.9rem,3.2vw,2.7rem);color:color-mix(in srgb,var(--oc) 82%,var(--ink))}
.ob2 .ocard .ok{display:flex;align-items:center;gap:12px;margin:14px 0 18px;
  font-family:var(--mo);font-size:.72rem;letter-spacing:.18em;color:var(--mute)}
.ob2 .ocard .ok i{display:block;width:26px;height:1px;background:var(--hair)}
.ob2 .ocard .oh{display:block;font-family:var(--mi);font-weight:700;line-height:1.55;
  font-size:clamp(1.24rem,2.1vw,1.72rem);color:var(--ink)}
.ob2 .ocard .oh i{font-style:normal;font-size:.7em;color:var(--oc);margin-left:.35em}
.ob2 .ocard .od{display:block;margin-top:18px;line-height:2.05}
.ob2 .ocard .omore{display:inline-flex;align-items:center;justify-content:space-between;gap:24px;
  min-width:190px;margin-top:26px;padding-bottom:12px;font-size:.94rem;color:var(--ink);
  border-bottom:1px solid color-mix(in srgb,var(--oc) 45%,var(--hair));
  transition:border-color .2s,gap .2s}
.ob2 .ocard .omore b{font-weight:400;color:var(--oc)}
.ob2 .ocard:hover .omore{border-color:var(--oc);gap:34px}

/* ── 字を読めるようにする（2026-09-05・指摘）──────────────────
   この帯は地に ◇ の明るい面が来るので、薄い灰（--mute）の小さな字が沈む。
   帯を敷くのは前に外したばかりなので、ここでは
   ・字の色を上げる（--mute -> --ink 寄り）
   ・字に暗い縁を付ける
   ・こまの**文の後ろだけ**、縁の無い柔らかい暗がりを敷く
   の三段で持つ。暗がりは境目を作らないので「帯」には見えない。 */
.ob2 .ocard::after{content:"";position:absolute;z-index:-1;pointer-events:none;
  left:-8%;right:-8%;bottom:-6%;height:78%;
  background:radial-gradient(74% 78% at 50% 62%,
    rgba(0,0,0,.80) 0%, rgba(0,0,0,.62) 44%, rgba(0,0,0,.28) 70%, transparent 86%)}
.ob2 .ocard .oh{text-shadow:0 2px 10px rgba(0,0,0,.92),0 0 24px rgba(0,0,0,.8)}
.ob2 .ocard .od{color:color-mix(in srgb,var(--ink) 88%,var(--mute));
  font-size:.96rem;text-shadow:0 1px 6px rgba(0,0,0,.95),0 0 16px rgba(0,0,0,.82)}
.ob2 .ocard .on,.ob2 .ocard .ok,.ob2 .ocard .omore{
  text-shadow:0 1px 6px rgba(0,0,0,.95),0 0 14px rgba(0,0,0,.8)}
.ob2 .ocard .ok{color:color-mix(in srgb,var(--ink) 78%,var(--mute))}
.ob2-h .t,.ob2-h .lead{position:relative;text-shadow:0 2px 10px rgba(0,0,0,.9),0 0 24px rgba(0,0,0,.75)}
.ob2-h .lead{color:color-mix(in srgb,var(--ink) 72%,var(--mute))}
.ob2-top,.ob2-vl,.ob2-vr,.ob2-fk{text-shadow:0 1px 6px rgba(0,0,0,.95)}
.ob2-foot p{text-shadow:0 2px 12px rgba(0,0,0,.9),0 0 26px rgba(0,0,0,.75)}

/* 下の地平線と結び */
.ob2-foot{position:relative;text-align:center;padding:clamp(40px,7vh,90px) 0 clamp(10px,2vh,24px)}
.ob2-glow{position:absolute;left:50%;transform:translateX(-50%);top:0;
  width:170vw;height:clamp(220px,26vw,420px);border-radius:50% 50% 0 0;pointer-events:none;
  background:radial-gradient(60% 100% at 50% 100%,
    color-mix(in srgb,var(--kno) 26%,transparent) 0%,
    color-mix(in srgb,var(--pa) 10%,transparent) 42%,
    transparent 74%);
  border-top:1px solid color-mix(in srgb,var(--ink) 16%,transparent)}
.ob2-foot p{position:relative;margin:0 0 18px;font-family:var(--mi);font-weight:700;
  font-size:clamp(1.2rem,2.4vw,1.75rem);letter-spacing:.14em;color:var(--ink)}
.ob2-fk{position:relative;font-family:var(--mo);font-size:.68rem;letter-spacing:.20em;
  color:color-mix(in srgb,var(--ink) 55%,var(--mute))}

/* 左右の添え字。器の外に余りがある幅でだけ出す（費用の節と同じ作法）。 */
.ob2-vl,.ob2-vr{position:absolute;top:clamp(50px,7vh,96px);z-index:1;display:none;width:12em;
  font-size:.86rem;line-height:2.2;
  color:color-mix(in srgb,var(--ink) 70%,var(--mute));pointer-events:none}
.ob2-vl{right:calc(100% + 22px)}
.ob2-vr{left:calc(100% + 22px);width:9em;text-align:left;
  font-family:var(--mo);font-size:.66rem;letter-spacing:.18em;
  color:color-mix(in srgb,var(--ink) 55%,var(--mute));
  border-right:0;padding-left:0}
@media(min-width:1780px){.ob2-vl,.ob2-vr{display:block}}

@media(max-width:900px){
  .orbs{grid-template-columns:1fr;gap:clamp(120px,22vw,180px);margin-top:clamp(110px,26vw,180px)}
  .olink{display:none}
}

/* ══ 効果の節（2026-09-05・参考画像「4研究タブ切替型」）══════════════
   左に要点の図、右にタブで 4 件の詳細。並べて置くので、
   図とタブを見比べながら、頁を送らずに読める。 */
#story #effect::before{display:none}      /* 地の霞は出さない（費用の節と同じ理由） */
#story #effect>*{position:relative;z-index:1}
/* 既定（4.2rem）だと「速くなります。ただし、幅があります。」18 字が
   器の 1,088px に入らず 2 行に折れた（1440 幅で実測）。この節だけ詰める。 */
#story #effect>.sh{font-size:clamp(1.6rem,3.6vw,3.3rem);line-height:1.4}
#story #effect>.sl{max-width:1040px}
/* 図は左の面の中に入ったので、自前の枠と余白を外す（枠の二重を避ける）。 */
.eff2-l .effect{background:none;border:0;box-shadow:none;padding:0;backdrop-filter:none}
/* 地の霞を外したぶん、読み取りの段も自分の地を持たせる。 */
.eff2 .reading{padding:24px 24px 22px;border-radius:var(--rs);border:1px solid var(--hair);
  background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(10px);
  box-shadow:var(--shs),inset 0 1px 0 rgba(255,255,255,.04);
  margin-top:clamp(22px,3.4vh,38px)}
.eff2-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start;
  margin-top:clamp(22px,3.4vh,38px)}
.eff2-l,.eff2-r{padding:24px 24px 22px;border-radius:var(--rs);border:1px solid var(--hair);
  background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(10px);
  box-shadow:var(--shs),inset 0 1px 0 rgba(255,255,255,.04)}
.eff2-t{display:flex;align-items:center;gap:12px;margin:0 0 18px;
  font-family:var(--mi);font-weight:700;font-size:clamp(.94rem,1.3vw,1.1rem);color:var(--ink)}
.eff2-t i{display:block;width:1px;height:1em;background:var(--hair)}
.eff2-t b{font-weight:400;font-size:.86em;color:var(--mute)}
/* 図の中の説明は、参考では 1 行の注意書き。長い解説は下に小さく残す。 */
.eff2-l .enote{display:flex;gap:10px;align-items:flex-start;margin:18px 0 0;
  padding:14px 16px;border-radius:10px;font-size:.72rem;line-height:1.9;color:var(--mute);
  background:color-mix(in srgb,var(--pa) 8%,transparent);
  border:1px solid color-mix(in srgb,var(--pa) 22%,transparent)}
.eff2-l .enote svg{flex:0 0 auto;width:16px;height:16px;margin-top:.25em;color:var(--pa)}
.eff2-l .efoot{margin-top:14px;font-size:.68rem;line-height:1.9;color:var(--dim)}

/* 右の見出しとタブ */
.eff2-rh{display:flex;align-items:center;justify-content:space-between;gap:14px;
  flex-wrap:wrap;margin-bottom:18px}
.eff2-rh .eff2-t{margin:0}
.etabs{display:flex;gap:6px;padding:4px;border-radius:10px;
  background:color-mix(in srgb,var(--paper) 55%,transparent);border:1px solid var(--hair2)}
.etab{min-width:42px;padding:7px 12px;border:0;border-radius:7px;cursor:pointer;
  font-family:var(--mo);font-size:.66rem;letter-spacing:.1em;
  background:none;color:var(--dim);transition:background .18s,color .18s}
.etab:hover{color:var(--ink)}
.etab[aria-selected="true"]{background:var(--ac);color:var(--paper);font-weight:600}
.etab:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
/* 中身。既存の .src をそのまま使うので、この節ぶんだけ枠と余白を外す。 */
.epanels .src{background:none;border:0;box-shadow:none;padding:0;position:relative}
.epanels .src .sval{position:absolute;top:0;right:0;font-family:var(--mo);font-weight:600;
  font-size:clamp(1.0rem,1.7vw,1.35rem);color:var(--sc,var(--ac))}
.epanels .src h3{padding-right:5.4em}
.epanels .src[hidden]{display:none}

/* 結びの一文。参考では四隅に鉤括弧が付く。 */
.eclose{position:relative;margin-top:clamp(22px,3.4vh,38px);padding:clamp(26px,3vw,40px) 24px;
  text-align:center;border-radius:var(--rs);
  background:color-mix(in srgb,var(--card) 78%,transparent);backdrop-filter:blur(10px);
  border:1px solid var(--hair)}
.eclose::before,.eclose::after{content:"";position:absolute;width:22px;height:22px;
  border:1px solid color-mix(in srgb,var(--ac) 62%,transparent)}
.eclose::before{left:14px;top:14px;border-right:0;border-bottom:0}
.eclose::after{right:14px;bottom:14px;border-left:0;border-top:0}
.eclose p{margin:0;font-family:var(--mi);font-weight:700;line-height:2.0;
  font-size:clamp(.98rem,1.6vw,1.24rem);color:var(--ink)}
.eclose strong{color:var(--ac)}

@media(max-width:980px){.eff2-grid{grid-template-columns:1fr}}

/* ══ 費用の節（2026-09-05・参考画像に合わせて）══════════════════════
   数字と出典は前のまま。変えたのは並びだけ。
   色は既存の変数から引く（新しい 16 進を足さない）。 */
/* ── ここが暗かった原因（2026-09-05 実測）──────────────────
   既定の霞（#story .st::before）を中央へ移して使っていたが、
   これは **z-index:0 の擬似要素**。同じ箱の中では、位置指定を持つ
   z-index:0 の要素は、位置指定を持たない普通の中身よりも**後に**描かれる。
   つまり黒い霞が、札の上にも紙色の面の上にも被っていた
   （紙色の面が左上ほど灰色に沈んで見えていたのはこれ）。
   参考画像の地は明るいので、霞そのものを出さない。字が読めるのは、
   見出しと本文に影が付いていて、札が自分の地を持っているから。
   併せて中身を z-index:1 に上げ、今後この順序で負けないようにする。 */
#story #cost::before{display:none}
#story #cost>*{position:relative;z-index:1}
/* ただし添え字は浮かせたまま。上の規則は id を含むので重みで勝ってしまい、
   .cst-v の position:absolute を潰して本文の後ろへ流し込んでいた（実測）。 */
#story #cost>.cst-v,#story #cost>.cst-brand,#story #cost>.cst-page{position:absolute}
.cost2 .cst-h{text-align:center;max-width:1240px;margin:0 auto}
/* 4.6vw/3.5rem では「かかる費用を、先に開きます。」が 1 行に入らず、
   「開きま／す。」で折れた（1440 幅で実測）。器を 940 -> 1080、字を 3.1rem へ。
   選択子の頭に #story を付けるのは、既定が #story .sh / #story .sl と
   id を含んでいるため ── class だけでは重みで負けて、ここが効かない。 */
#story .cost2 .cst-h .sh{font-size:clamp(1.7rem,4.0vw,3.6rem);margin-bottom:18px}
#story .cost2 .cst-h .sl{max-width:none;margin:0 auto;
  font-size:clamp(.86rem,1.05vw,.98rem);line-height:2.1}

/* 二枚の大きな札 */
.price2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:clamp(26px,4vh,44px)}
.pc2{position:relative;overflow:hidden;padding:28px 30px 26px;border-radius:var(--rs);
  border:1px solid color-mix(in srgb,var(--pcc,var(--ac)) 42%,var(--hair));
  background:color-mix(in srgb,var(--card) 86%,transparent);backdrop-filter:blur(10px);
  box-shadow:var(--shs),0 0 44px -18px var(--pcc,var(--glow)),inset 0 1px 0 rgba(255,255,255,.05)}
.pc2-t{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.pc2-k{font-family:var(--mi);font-weight:700;font-size:clamp(1.0rem,1.6vw,1.26rem);color:var(--ink)}
.pc2-e{font-family:var(--mo);font-size:.56rem;letter-spacing:.22em;color:var(--pcc,var(--ac));opacity:.85}
/* 金額は**水色から藍への階調**（2026-09-05・参考画像と色が違うという指摘）。
   白のままだと、参考の「光っている数字」にならない。
   2 枚とも同じ階調 ── 参考では作成費も月額も同じ水色で、
   札ごとに変えているのは枠と右上の英字（--pcc）の方。
   影は text-shadow では出ない（字の中を背景で塗るため）ので filter で掛ける。
   「万円から」だけは白に戻す ── 透明のままだと消えてしまう。 */
.pc2-n{display:block;margin:14px 0 16px;font-family:var(--mi);font-weight:700;line-height:1;
  font-size:clamp(2.3rem,5.2vw,3.5rem);
  background:linear-gradient(180deg,var(--pa) 0%,var(--ac) 34%,var(--obs) 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  filter:drop-shadow(0 0 20px color-mix(in srgb,var(--ac) 42%,transparent))}
.pc2-n span{font-size:.44em;margin-left:.12em;letter-spacing:.02em;
  -webkit-text-fill-color:var(--ink);color:var(--ink)}
.pc2 p{margin:0;max-width:26em;font-size:.82rem;line-height:1.95;color:var(--mute)}
/* 添えの図。札の右下に薄く置く ── 読む物の邪魔をしない位置。 */
/* 参考の図は粒で描いた**光る**線画。線だけだと図面に見えるので、
   にじみを足して光らせる。色は札ごとの色（--pcc）をそのまま使う。 */
.pc2-art{position:absolute;right:18px;bottom:12px;width:clamp(104px,12vw,146px);height:auto;
  color:var(--pcc,var(--ac));opacity:.72;pointer-events:none;
  filter:drop-shadow(0 0 5px color-mix(in srgb,var(--pcc,var(--ac)) 70%,transparent))
         drop-shadow(0 0 16px color-mix(in srgb,var(--pcc,var(--ac)) 40%,transparent))}

/* 三つの小さな札 */
.cst3{list-style:none;margin:16px 0 0;padding:0;display:grid;
  grid-template-columns:repeat(3,1fr);gap:16px}
.cst3 li{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start;
  padding:22px 24px;border-radius:var(--rs);border:1px solid var(--hair);
  background:color-mix(in srgb,var(--card) 78%,transparent);backdrop-filter:blur(10px);
  box-shadow:var(--shs),inset 0 1px 0 rgba(255,255,255,.04)}
.cst3 .c3ic{display:grid;place-items:center;width:38px;height:38px;color:var(--ac);
  padding-right:18px;border-right:1px solid var(--hair)}
.cst3 .c3ic svg{width:28px;height:28px}
.cst3 .c3n{display:block;font-family:var(--mo);font-size:.56rem;letter-spacing:.2em;color:var(--dim)}
.cst3 h3{margin:6px 0 10px;font-family:var(--mi);font-weight:700;
  font-size:clamp(1.0rem,1.5vw,1.18rem);color:var(--ink)}
.cst3 p{margin:0;font-size:.76rem;line-height:1.9;color:var(--mute);word-break:auto-phrase}
/* ◇ の明るい面に重なると読めなくなるので、静かな地を敷く（実測）。 */
.cst-note{margin-top:16px;font-size:.78rem;line-height:2;
  padding:16px 20px;border-radius:var(--rs);
  background:color-mix(in srgb,var(--card) 66%,transparent);backdrop-filter:blur(8px);
  border:1px solid var(--hair2)}

/* 約束の面。ここだけ紙の色（--hum）に反転する ── 参考画像と同じ。
   このページで唯一、人間が決めるところが紙の色になるという既定の意味づけとも合う。 */
.promise{display:grid;grid-template-columns:1fr 260px;gap:clamp(24px,3vw,56px);
  margin-top:clamp(26px,4vh,44px);padding:clamp(28px,3.4vw,44px);
  border-radius:var(--r);background:var(--hum);
  color:color-mix(in srgb,var(--paper) 84%,var(--hum));
  box-shadow:0 30px 70px rgba(0,0,0,.55)}
.promise .pr-k{font-family:var(--mo);font-size:.58rem;letter-spacing:.24em;
  color:color-mix(in srgb,var(--paper) 46%,var(--hum))}
.promise h3{margin:14px 0 22px;font-family:var(--mi);font-weight:700;
  font-size:clamp(1.2rem,2.5vw,1.85rem);line-height:1.55;
  color:color-mix(in srgb,var(--paper) 90%,var(--hum))}
.promise p{margin:0 0 16px;font-size:.82rem;line-height:2.05}
.promise strong{font-weight:700;color:color-mix(in srgb,var(--paper) 92%,var(--hum))}
.promise .pr-lim{font-size:.76rem;color:color-mix(in srgb,var(--paper) 58%,var(--hum))}
.promise .slink{display:inline-flex;align-items:center;gap:10px;margin-top:8px;font-size:.76rem;
  color:color-mix(in srgb,var(--no) 78%,var(--paper));text-decoration:underline;
  text-underline-offset:3px}
.promise .slink svg{flex:0 0 auto;width:18px;height:18px;opacity:.85}
/* 参考画像のこの位置には無い一文。消さずにここへ移した（相場と、他の頁への道）。 */
.promise .pr-ref{margin:22px 0 0;padding-top:18px;font-size:.72rem;line-height:2;
  border-top:1px solid color-mix(in srgb,var(--paper) 16%,var(--hum));
  color:color-mix(in srgb,var(--paper) 58%,var(--hum))}
.promise .pr-ref a{color:color-mix(in srgb,var(--paper) 74%,var(--hum));
  text-decoration:underline;text-underline-offset:3px}
.promise .pr-side{border-left:1px solid color-mix(in srgb,var(--paper) 18%,var(--hum));
  padding-left:clamp(18px,2vw,32px)}
.promise .pr-side p{margin:0;font-family:var(--mi);font-weight:700;line-height:1.9;
  font-size:clamp(.94rem,1.3vw,1.1rem);color:color-mix(in srgb,var(--paper) 88%,var(--hum))}
.promise .pr-rule{display:block;width:34px;height:1px;margin:22px 0;
  background:color-mix(in srgb,var(--paper) 34%,var(--hum))}
.promise .pr-mono{font-family:var(--mo);font-size:.56rem;letter-spacing:.2em;line-height:2.2;
  color:color-mix(in srgb,var(--paper) 46%,var(--hum))}

/* 左右の添え字。**縦書きではない** ── 参考画像をよく見ると字は立っていて、
   短い行を上から積んである（2026-09-05 に見直し）。縦書きにすると
   字が横倒しになり、同じ見え方にならない。飾りなので、狭い画面と、
   左の番号レールに当たる幅では出さない。 */
.cst-v{position:absolute;top:12%;z-index:1;display:none;width:7.5em;
  pointer-events:none;text-shadow:0 1px 6px rgba(0,0,0,.9)}
.cst-v b{display:block;font-family:var(--mi);font-weight:400;font-size:.76rem;
  line-height:2.0;letter-spacing:.10em;color:var(--mute)}
.cst-v i{display:block;width:34px;height:1px;margin:20px 0;background:var(--hair)}
.cst-v em{display:block;font-family:var(--mo);font-style:normal;font-size:.54rem;
  line-height:2.1;letter-spacing:.22em;color:var(--dim)}
/* 左下の社名と、右下の位置（このページは 10 こま構成なので 06 / 10）。 */
.cst-brand,.cst-page{position:absolute;z-index:1;display:none;
  font-family:var(--mo);font-size:.54rem;line-height:2.1;letter-spacing:.22em;
  color:var(--dim);text-shadow:0 1px 6px rgba(0,0,0,.9)}
.cst-brand{left:calc(50% - 50vw + 64px);bottom:8%}
.cst-page{right:calc(50% - 50vw + 40px);bottom:8%;text-align:right}
.cst-page b{display:block;font-weight:400;color:var(--mute)}
.cst-page i{display:block;width:96px;height:2px;margin-top:12px;border-radius:1px;
  background:linear-gradient(90deg,var(--ac) 0 60%,var(--hair) 60% 100%)}
/* 画面の端からの距離ではなく、**器のすぐ外**に置く。器の幅は画面によって
   変わる（min(1440px,92vw)）ので、画面基準だと中身に重なる。 */
.cst-vl{right:calc(100% + 22px)}
.cst-vr{left:calc(100% + 22px);top:22%;text-align:left}
.cst-brand{left:auto;right:calc(100% + 22px);bottom:8%}
.cst-page{right:auto;left:calc(100% + 22px);bottom:8%;text-align:left}
/* 出すのは、器の外に添え字ぶんの余りがある幅のときだけ。
   器を広げた（1200 -> min(1440px,92vw)）ので、余りは以前より狭い。
   実測: 1670px では左の添え字が x=13〜149 に来て、番号レール（14〜44）に
   重なり、画面の外へもはみ出した。1780px あれば 84〜204 に収まり、離れる。 */
@media(min-width:1780px){.cst-v,.cst-brand,.cst-page{display:block}}

@media(max-width:900px){
  .price2,.cst3,.promise{grid-template-columns:1fr}
  .promise .pr-side{border-left:0;border-top:1px solid color-mix(in srgb,var(--paper) 18%,var(--hum));
    padding-left:0;padding-top:22px}
  .pc2-art{opacity:.28}
}

/* ── カードに触れると、その下に詳しい説明が開く（2026-09-05・依頼）──
   説明はカードの中ではなく**列の下**に出す。カードの中で伸ばすと、
   その 1 枚だけが高くなって 5 枚の並びが崩れる。 */
.fcard-b{display:block;width:100%;padding:0;border:0;background:none;color:inherit;
  font:inherit;text-align:center;cursor:pointer}
.fcard-b .fttl{display:block;margin:0 0 8px;font-size:.90rem;line-height:1.5;
  color:var(--ink);font-weight:700;word-break:auto-phrase}
.fcard-b .fcap{display:block;font-size:.72rem;line-height:1.8;color:var(--mute);
  word-break:auto-phrase}
/* 押せることの合図。既定は薄く、触れたときだけ色が付く。 */
.fcard-b .fmore{display:block;margin-top:12px;font-family:var(--mo);font-size:.56rem;
  letter-spacing:.18em;color:var(--dim);transition:color .2s}
.fcard:hover .fmore,.fcard-b:focus-visible .fmore,
.fcard-b[aria-expanded="true"] .fmore{color:var(--lc,var(--ac))}
.fcard-b:focus-visible{outline:2px solid var(--lc,var(--ac));outline-offset:6px;border-radius:10px}
/* 開いているカードは、枠と絵記号をその段の色で立てる。 */
.fcard:has(.fcard-b[aria-expanded="true"]){
  border-color:color-mix(in srgb,var(--lc) 62%,var(--hair));
  box-shadow:var(--shs),0 0 40px -10px var(--lc),inset 0 1px 0 rgba(255,255,255,.06)}
.fcard:has(.fcard-b[aria-expanded="true"]) .fic{
  background:color-mix(in srgb,var(--lc) 20%,transparent);
  border-color:color-mix(in srgb,var(--lc) 50%,transparent)}
/* 説明の入れ物は 5 列ぶんをまたぐ。中身が無いときは高さを持たない。 */
.fdetwrap{grid-column:1/-1;margin:0}
.fdet{display:none;position:relative;margin-top:14px;padding:24px 26px 20px;
  border:1px solid color-mix(in srgb,var(--lc) 34%,var(--hair));border-radius:var(--rs);
  background:color-mix(in srgb,var(--card) 92%,transparent);
  box-shadow:var(--shs),inset 0 1px 0 rgba(255,255,255,.045)}
.fdet::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;
  border-radius:var(--rs) 0 0 var(--rs);background:var(--lc,var(--pa))}
.fdet.on{display:block;animation:fdin .18s ease both}
@keyframes fdin{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.fdet.on{animation:none}}
/* 詰め込んである説明（.lb2）をそのまま置くので、幅だけ読みやすく抑える。 */
.fdet .lb2{max-width:1000px}

/* ══ 触れたら明るくなる（2026-09-06「すべてに」）════════════
   送りの帯だけに付けた反応を、頁の押せる物すべてへ広げる。
   規則は 1 つ ── **触れたら字が --ink へ上がり、淡い暈が出る。**
   既にある個々の反応（浮き上がり・枠の色）は消さずに足す。
   この塊を末尾に置くのは、詳細度が同点のときに後勝ちで勝たせるため。 */

/* ── 本文の中のリンク ────────────────────────
   既定は a{color:inherit;text-decoration:none}だったので、本文に混ざった
   リンク（例: 07 始め方の「05 時間」、9 四門の「YOHAKU OS」）が周りの字と
   **全く見分けが付かなかった**。触れて明るくなるには、まず在ると
   分かる必要があるので、控えめの下線を付けた。色は新しく作らず、
   既にリンクに使っている --ac（.mcard figcaption a と同じ）。 */
#story :is(p,li,h3,figcaption) a,#main .sheet :is(p,li) a{
  color:color-mix(in srgb,var(--ac) 72%,var(--ink));
  text-decoration:underline;text-underline-offset:3px;
  text-decoration-color:color-mix(in srgb,var(--ac) 38%,transparent);
  transition:color .24s,text-decoration-color .24s,text-shadow .24s}
#story :is(p,li,h3,figcaption) a:hover,#main .sheet :is(p,li) a:hover,
#story :is(p,li,h3,figcaption) a:focus-visible,#main .sheet :is(p,li) a:focus-visible{
  color:var(--ink);text-decoration-color:var(--ac);text-shadow:0 0 16px var(--glow)}
/* 約束の儀（クリーム地）だけは地が明るいので、上の規則を戻す。
   #story 付きの選択子に負けるので、こちらも #story を頭に付ける。 */
#story .promise :is(p,li) a{color:color-mix(in srgb,var(--paper) 74%,var(--hum));
  text-decoration-color:color-mix(in srgb,var(--paper) 40%,var(--hum));text-shadow:none}
#story .promise :is(p,li) a.slink{color:color-mix(in srgb,var(--no) 78%,var(--paper))}
#story .promise :is(p,li) a:hover{color:var(--paper);
  text-decoration-color:var(--paper);text-shadow:none}

/* ── 引き出し（狭い画面の目次）────────────────── */
#drawer nav a{transition:color .24s,background .24s,padding-left .24s}
#drawer nav a:hover,#drawer nav a:focus-visible{color:var(--ink);padding-left:14px;
  background:color-mix(in srgb,var(--pa) 34%,transparent)}
#drawer nav a:hover i{color:var(--ac)}

/* ── ナビの三本線・配色切替のボタン ────────────── */
.navtoggle{transition:box-shadow .24s,background .24s}
.navtoggle:hover{background:color-mix(in srgb,var(--card) 100%,transparent);
  box-shadow:var(--shs),0 0 20px -6px var(--glow)}
.themebar button{transition:color .2s,background .2s}
.themebar button:hover{color:var(--ink)}

/* ── 効果の節のタブ ─────────────────────────
   字を --ink へ上げるだけだった。地も少し入れ、押せることを見せる。 */
.etab:hover{color:var(--ink);background:color-mix(in srgb,var(--ac) 16%,transparent)}
.etab[aria-selected="true"]:hover{background:var(--ac);color:var(--paper);
  box-shadow:0 0 18px -4px var(--glow)}

/* ── お受けしているのは三つですの 3 枚 ─────────────
   この枚は枠を持たない（参考画と同じ）ので、浮き上がりではなく
   **球と線画を明るくする**。ここも .ob2 .orbs を頭に付けないと
   既存の (0,3,1) の規則に勝てない。 */
.ob2 .orbs .ocard .orb{transition:opacity .28s,filter .28s,transform .28s}
.ob2 .orbs .ocard::before{transition:box-shadow .28s,border-color .28s}
.ob2 .orbs .ocard:hover .orb{opacity:1;
  filter:drop-shadow(0 0 16px color-mix(in srgb,var(--oc) 85%,transparent))}
.ob2 .orbs .ocard:hover::before{
  border-color:color-mix(in srgb,var(--oc) 58%,transparent);
  box-shadow:inset 0 0 70px -14px color-mix(in srgb,var(--oc) 92%,transparent),
             0 0 130px -30px color-mix(in srgb,var(--oc) 95%,transparent)}
.ob2 .orbs .ocard:hover .on{color:var(--oc)}
.ob2 .orbs .ocard:hover .ok{color:var(--ink)}

/* ── 入力欄 ────────────────────────────── */
#main :is(input,textarea,select){transition:border-color .22s,box-shadow .22s}
#main :is(input,textarea,select):hover{
  border-color:color-mix(in srgb,var(--ac) 45%,var(--hair));
  box-shadow:0 0 22px -10px var(--glow)}

@media(prefers-reduced-motion:reduce){
  #drawer nav a:hover{padding-left:4px}
  #story :is(p,li,h3,figcaption) a,#main .sheet :is(p,li) a,
  #drawer nav a,.navtoggle,.themebar button,
  .ob2 .orbs .ocard .orb,.ob2 .orbs .ocard::before,
  #main :is(input,textarea,select){transition:none}
}


/* ══ 触った物は光る（2026-09-06「光っていません」）════════════════
   前の手当ては枠の色と小さな暈だけで、実際に触っても変化が見えなかった。
   CSS は読まれていた（規則 609・実測）ので、問題は**強さ**のほう。

   方針を変える:
   ・暈を 42px まで広げ、色を 78% まで濃くする（前は 26px / 40%）
   ・枠のすぐ外に 1px の輪を足し、輪郭が光って見えるようにする
   ・地もわずかに上げる（地が動かないと「光った」と読めない）
   ・字も --ink へ、字自身にも暈をかける
   囲みは押せない物でも光らせる ──「触った物は光る」という指示のまま。
   触れない入力器（指）では出さないので @media(hover:hover) で囲う。 */
@media(hover:hover){
  :root{
    --hglow:0 0 42px -6px color-mix(in srgb,var(--ac) 78%,transparent);
    --hring:0 0 0 1px color-mix(in srgb,var(--ac) 55%,transparent);
  }
  /* ── 囲み（札・図・入れ物）────────────────────────── */
  .card,.mcard,.vsc,.src,.lstep,.qi,.cf,.fcard,.pc2,.effect,.reading,
  .cst3>li,.toc10 a,.btn,.chip{
    transition:border-color .24s,box-shadow .24s,background .24s,transform .24s}
  :is(.card,.mcard,.vsc,.src,.lstep,.qi,.cf,.fcard,.pc2,.effect,.reading,
      .cst3>li,.toc10 a,.btn,.chip):hover{
    border-color:color-mix(in srgb,var(--ac) 62%,var(--hair));
    background:color-mix(in srgb,var(--card) 94%,var(--ac));
    box-shadow:var(--hring),var(--hglow),var(--shs);
    transform:translateY(-3px)}
  /* 役割色を持つ札は、その色で光らせる（水色で塗りつぶさない）。 */
  .cf:hover{border-color:color-mix(in srgb,var(--fc,var(--ac)) 62%,var(--hair));
    box-shadow:0 0 0 1px color-mix(in srgb,var(--fc,var(--ac)) 55%,transparent),
               0 0 42px -6px color-mix(in srgb,var(--fc,var(--ac)) 78%,transparent),var(--shs)}
  .qi:hover{border-color:color-mix(in srgb,var(--cc,var(--ac)) 62%,var(--hair));
    box-shadow:0 0 0 1px color-mix(in srgb,var(--cc,var(--ac)) 55%,transparent),
               0 0 42px -6px color-mix(in srgb,var(--cc,var(--ac)) 78%,transparent),var(--shs)}
  .fcard:hover{border-color:color-mix(in srgb,var(--lc,var(--ac)) 62%,var(--hair));
    box-shadow:0 0 0 1px color-mix(in srgb,var(--lc,var(--ac)) 55%,transparent),
               0 0 42px -6px color-mix(in srgb,var(--lc,var(--ac)) 78%,transparent),var(--shs)}
  .pc2:hover{border-color:color-mix(in srgb,var(--pcc,var(--ac)) 62%,var(--hair));
    box-shadow:0 0 0 1px color-mix(in srgb,var(--pcc,var(--ac)) 55%,transparent),
               0 0 52px -6px color-mix(in srgb,var(--pcc,var(--ac)) 78%,transparent),var(--shs)}
  .vsc:hover{border-color:color-mix(in srgb,var(--vc,var(--ac)) 62%,var(--hair));
    box-shadow:0 0 0 1px color-mix(in srgb,var(--vc,var(--ac)) 55%,transparent),
               0 0 42px -6px color-mix(in srgb,var(--vc,var(--ac)) 78%,transparent),var(--shs)}

  /* ── 送りの帯の丸 ──────────────────────────────── */
  .stepbar a:hover .sn,.stepbar a:focus-visible .sn{
    border-color:var(--ac);color:var(--paper);
    background:color-mix(in srgb,var(--ac) 78%,transparent);
    box-shadow:0 0 0 4px color-mix(in srgb,var(--ac) 22%,transparent),
               0 0 34px -2px color-mix(in srgb,var(--ac) 85%,transparent);
    transform:translateY(-2px)}
  .stepbar a:hover .sl2,.stepbar a:focus-visible .sl2{
    color:var(--ink);text-shadow:0 0 18px color-mix(in srgb,var(--ac) 70%,transparent)}
  .stepbar a[aria-current]:hover .sn{background:var(--ac);color:var(--paper);
    box-shadow:0 0 0 5px color-mix(in srgb,var(--ac) 26%,transparent),
               0 0 44px 0 color-mix(in srgb,var(--ac) 95%,transparent)}

  /* ── 字のリンク・小さな押し物 ───────────────────────── */
  #story :is(p,li,h3,figcaption) a:hover,#main .sheet :is(p,li) a:hover,
  .ft-nav a:hover,.ft-biz a:hover,.foot-legal nav a:hover,.slink:hover,
  .fdetail>summary:hover,.pill .nav a:not(.go):hover,.themebar button:hover{
    color:var(--ink);
    text-shadow:0 0 20px color-mix(in srgb,var(--ac) 85%,transparent),
                0 0 42px color-mix(in srgb,var(--ac) 45%,transparent)}
  #story .promise :is(p,li) a:hover{color:var(--paper);
    text-shadow:0 0 18px color-mix(in srgb,var(--no) 55%,transparent)}
  .pill .nav a.go:hover{box-shadow:0 0 34px -4px color-mix(in srgb,var(--ac2) 90%,transparent)}
  .h2cta:hover{box-shadow:var(--hring),var(--hglow)}
  .navtoggle:hover{box-shadow:var(--hring),var(--hglow)}
  .etab:hover{color:var(--ink);background:color-mix(in srgb,var(--ac) 22%,transparent);
    box-shadow:0 0 24px -6px color-mix(in srgb,var(--ac) 80%,transparent)}
  .etab[aria-selected="true"]:hover{background:var(--ac);color:var(--paper);
    box-shadow:0 0 30px -2px color-mix(in srgb,var(--ac) 90%,transparent)}
  #main :is(input,textarea,select):hover{
    border-color:color-mix(in srgb,var(--ac) 62%,var(--hair));
    box-shadow:var(--hring),0 0 34px -10px color-mix(in srgb,var(--ac) 80%,transparent)}
  #drawer nav a:hover,#drawer nav a:focus-visible{color:var(--ink);
    text-shadow:0 0 20px color-mix(in srgb,var(--ac) 80%,transparent)}

  /* ── お受けしているのは三つです（枠を持たない枚）──────── */
  .ob2 .orbs .ocard:hover .orb{opacity:1;
    filter:drop-shadow(0 0 26px color-mix(in srgb,var(--oc) 95%,transparent))}
  .ob2 .orbs .ocard:hover::before{
    border-color:color-mix(in srgb,var(--oc) 75%,transparent);
    background:radial-gradient(58% 58% at 42% 34%,
      color-mix(in srgb,var(--oc) 42%,transparent) 0%,
      color-mix(in srgb,var(--oc) 16%,transparent) 46%,
      transparent 74%);
    box-shadow:inset 0 0 80px -10px color-mix(in srgb,var(--oc) 100%,transparent),
               0 0 150px -20px color-mix(in srgb,var(--oc) 100%,transparent)}
  .ob2 .orbs .ocard:hover .oh{text-shadow:0 0 22px color-mix(in srgb,var(--oc) 70%,transparent)}
}
@media(prefers-reduced-motion:reduce){
  :is(.card,.mcard,.vsc,.src,.lstep,.qi,.cf,.fcard,.pc2,.effect,.reading,
      .cst3>li,.toc10 a,.btn,.chip):hover{transform:none}
  .stepbar a:hover .sn{transform:none}
}


/* ══ 打ち込み（2026-09-06・費用の節の説明文）════════════════════
   参考にした動きは「パソコンで打っているように」。作りの要点は 2 つ。

   ① 文字は**消さずに、透明にしておく**。字を後から足していく作りにすると、
      この行は中央寄せなので 1 文字ごとに行全体が動いて読めない。
      場所は最初から取っておき、見え方だけを変える。
   ② opacity を使う（visibility ではない）。visibility:hidden は
      読み上げの木からも消えるので、打ち終わるまで本文が存在しないことになる。 */
.tw-c{opacity:0}
.tw-c.tw-in,[data-tw].tw-done .tw-c{opacity:1}
.tw-c.tw-in{transition:opacity .08s linear}
/* 打っている位置の棒。幅ゼロの絶対配置なので、字送りには影響しない。 */
.tw-c.tw-cur{position:relative}
.tw-c.tw-cur::after{content:"";position:absolute;left:100%;top:.16em;
  width:2px;height:1.06em;background:var(--ac);
  box-shadow:0 0 10px color-mix(in srgb,var(--ac) 85%,transparent);
  animation:twblink .9s steps(1,end) infinite}
.pc2 .tw-c.tw-cur::after{background:var(--pcc,var(--ac));
  box-shadow:0 0 10px color-mix(in srgb,var(--pcc,var(--ac)) 85%,transparent)}
@keyframes twblink{0%,49%{opacity:1}50%,100%{opacity:0}}
@media(prefers-reduced-motion:reduce){
  .tw-c{opacity:1}
  .tw-c.tw-cur::after{display:none}
}

/* ══ 四角の出方（2026-09-06・参考動画）════════════════════════════
   参考: OneDrive\Pictures\kotoann\新しいフォルダー\20260802-0152-25.6111698.mp4
   （Canva の書き出し・1262x670・30コマ/秒）。1 コマずつ開いて読んだ動き:
     ① 白い板が左端から伸びて、置き場所いっぱいまで広がる
     ② 板の**左端が右へ退く**（右端は動かない）
     ③ 退いたところから中身が現れる
   ＝「白い板で一度覆ってから、板を右へ引き抜く」。板が通り過ぎた跡に
   中身が残る形で、並んだ物は 1 つずつずれて出る。
   実測: 1 つあたり 6 コマ＝0.20 秒、ずれは 2〜3 コマ＝0.08 秒。
   こちらは札が文字より大きいので 0.30 秒／ずれ 0.10 秒に伸ばしてある。

   ★opacity ではなく visibility で隠す。
     opacity:0 にすると、その要素の ::after（＝白い板）も一緒に消えて
     板が見えない。visibility:hidden は子の visibility:visible で
     打ち消せるので、**箱は隠したまま板だけ見せる**ことができる。 */
@media(prefers-reduced-motion:no-preference){
  .blockrev{position:relative;opacity:1;transform:none;visibility:hidden}
  .blockrev::after{content:"";position:absolute;inset:0;z-index:6;
    border-radius:inherit;background:var(--ink);visibility:visible;
    pointer-events:none;transform:scaleX(0);transform-origin:left}
  /* fill は both ではなく backwards。both だと「終わったあとの姿」を
     動きの側が抱え込むので、動きが何かの拍子で走らない環境では
     札が永久に見えない。backwards なら、待ち時間の間だけ隠れ、
     終わったあとは下の visibility:visible がそのまま効く。 */
  .blockrev.in{visibility:visible;
    animation:brBox .30s steps(1,end) var(--brd,0s) backwards}
  .blockrev.in::after{animation:brBar .30s cubic-bezier(.62,.02,.2,1) var(--brd,0s) backwards}
  @keyframes brBox{
    0%,49.9%{visibility:hidden}
    50%,100%{visibility:visible}}
  @keyframes brBar{
    0%{transform:scaleX(0);transform-origin:left}
    46%{transform:scaleX(1);transform-origin:left}
    50%{transform:scaleX(1);transform-origin:right}
    100%{transform:scaleX(0);transform-origin:right}}
  /* 1 つずつずらす。並んで見えるので、同時に出ると板の点滅にしか見えない。 */
  .cone-facts .blockrev:nth-child(2),.qa .blockrev:nth-child(2),
  .steps .blockrev:nth-child(2){--brd:.10s}
  .cone-facts .blockrev:nth-child(3),.qa .blockrev:nth-child(3),
  .steps .blockrev:nth-child(3){--brd:.20s}
  .cone-facts .blockrev:nth-child(4),.qa .blockrev:nth-child(4),
  .steps .blockrev:nth-child(4){--brd:.30s}
}

/* ══ 三つの球をゆっくり回す（2026-09-06）════════════════════════
   回すのは球（::before）だけ。中の線画（laptop / 網 / 街）は
   向きに意味があるので回さない ── 回すと絵が倒れる。
   球は「58% 58% at 42% 34%」の偏った明かりを持っているので、
   回すとその明かりが球の面を巡る。輪郭は真円なので縁は動かない。
   1 周 54〜72 秒。3 つで少しずつ変えているのは、揃って回ると
   1 枚の板が回っているように見えるため。 */
@media(prefers-reduced-motion:no-preference){
  .ob2 .orbs .ocard::before{animation:orbspin var(--osp,60s) linear infinite;
    animation-play-state:paused}
  .ob2 .orbs.spin .ocard::before{animation-play-state:running}
  .ob2 .orbs .ocard:nth-of-type(1)::before{--osp:54s}
  .ob2 .orbs .ocard:nth-of-type(2)::before{--osp:66s;animation-direction:reverse}
  .ob2 .orbs .ocard:nth-of-type(3)::before{--osp:72s}
  @keyframes orbspin{
    from{transform:translateX(-50%) rotate(0deg)}
    to{transform:translateX(-50%) rotate(360deg)}}
}

/* ══ 球を地球にする（2026-09-06）════════════════════════════════
   もとの球（::before）は明かりの偏った玉で、面の向きが分からなかった。
   その上に**経緯線の網**を重ねると、球が回っているのが見える。

   経線の回し方: 縦長の楕円の横幅（scaleX）を 1 → 0 → −1 → 0 → 1 と
   変える。これは球の上の大円を正面から見たときの形そのもので、
   位相をずらした 4 本を並べると、線が球面を巡って見える。
   等速で 1 → −1 にすると動きが三角波になって不自然なので、
   0.7071（＝cos45°）を挟んで余弦に近づけてある。
   ★scaleX(0) は線が消えるので 0.001。
   ★vector-effect:non-scaling-stroke が要る。無いと横に潰れるとき
     線まで細くなり、経線が消えたように見える。
   ★赤道（cy=100 rx=96 ry=32.8）は一度外して、同じ日に戻した
     （2026-09-06「横に1本の線を消して」→「線戻して」）。
     いちばん幅の広い横線で、ちょうど見出しの高さを横切る。 */
.ob2 .orbs .ocard .oglobe{position:absolute;z-index:-1;left:50%;
  transform:translateX(-50%);bottom:-6%;width:min(112%,430px);aspect-ratio:1;
  pointer-events:none;color:color-mix(in srgb,var(--oc) 58%,transparent)}
.ob2 .orbs .ocard .oglobe svg{display:block;width:100%;height:100%}
.ob2 .orbs .ocard .oglobe :is(circle,ellipse){vector-effect:non-scaling-stroke}
.ob2 .orbs .ocard .oglobe .mer ellipse{transform-box:fill-box;transform-origin:center}
@media(prefers-reduced-motion:no-preference){
  /* ★既定は**止めておく**（2026-09-06「2 番目の背景がかくかく」）。
     SVG の transform は合成に乗らないので、経線 12 本（球 3 つ × 4）を
     回しっばなしにすると、**頁のどこを見ていても**毎コマの塗り直しが
     走る。◇ の回りと同じ本線を使うので、別の節の動きまで跕く。
     見えていないあいだは止める（JS が .spin を付け外しする）。 */
  .oglobe .mer ellipse{animation:merspin var(--gsp,44s) linear infinite;
    animation-play-state:paused}
  .ob2 .orbs.spin .oglobe .mer ellipse{animation-play-state:running}
  .oglobe .mer ellipse:nth-child(2){animation-delay:calc(var(--gsp,44s) / -4)}
  .oglobe .mer ellipse:nth-child(3){animation-delay:calc(var(--gsp,44s) / -2)}
  .oglobe .mer ellipse:nth-child(4){animation-delay:calc(var(--gsp,44s) * -0.75)}
  .ob2 .orbs .ocard:nth-of-type(2) .oglobe{--gsp:52s}
  .ob2 .orbs .ocard:nth-of-type(3) .oglobe{--gsp:60s}
  @keyframes merspin{
    0%{transform:scaleX(1)}
    12.5%{transform:scaleX(.7071)}
    25%{transform:scaleX(.001)}
    37.5%{transform:scaleX(-.7071)}
    50%{transform:scaleX(-1)}
    62.5%{transform:scaleX(-.7071)}
    75%{transform:scaleX(.001)}
    87.5%{transform:scaleX(.7071)}
    100%{transform:scaleX(1)}}
}
.ob2 .orbs .ocard:hover .oglobe{color:color-mix(in srgb,var(--oc) 92%,transparent)}

/* ══ 全体を真っ白にする（2026-09-15・依頼「背景を真っ白に、全体的に」）══════════
   地のトークン（--paper / --card）は上の配色 a/b/c で #FFFFFF にした。
   ここでは「黒地の上で字を読ませるために足した部品」を外す。
   ・字の後ろの黒い霞（::before / ::after の rgba(0,0,0,…)）
   ・字の黒い縁（text-shadow の rgba(0,0,0,…)）
   白地の上ではどちらも「字の周りの汚れ」になる。
   触ったとき光る（:hover の text-shadow）は色の暈なので残す。 */
html{background:#fff}
.grain{mix-blend-mode:multiply;opacity:.10}
/* 霞は消さずに白へ裏返す。字は ◇ の面の上に載るので、字の後ろだけ地を白へ戻す。 */
#story .st::before{background:
    radial-gradient(62% 66% at 32% 46%,
      rgba(255,255,255,.80) 0%, rgba(255,255,255,.60) 42%, rgba(255,255,255,.26) 68%, transparent 84%),
    radial-gradient(98% 92% at 46% 52%,
      rgba(255,255,255,.52) 0%, rgba(255,255,255,.40) 54%, rgba(255,255,255,.18) 78%, transparent 93%)}
#story #top::before{background:radial-gradient(62% 66% at 32% 46%,
    rgba(255,255,255,.80) 0%, rgba(255,255,255,.60) 42%, rgba(255,255,255,.26) 68%, transparent 84%)}
#story #ladder::before{background:radial-gradient(58% 62% at 50% 46%,
    rgba(255,255,255,.80) 0%, rgba(255,255,255,.60) 42%, rgba(255,255,255,.26) 68%, transparent 84%)}
.ob2::before,.ob2 .ocard::after{background:none}
/* 字の縁も黒から白へ。 */
#story .sh,.hero h1,.ob2 .ocard .oh,.ob2-h .t,.ob2-foot p{
  text-shadow:0 0 10px rgba(255,255,255,.9),0 0 26px rgba(255,255,255,.7)}
#story .sl,.hero .wrap > p,#story #top .h2kick,#story #top .h2words,#story #top .h2prog,
.ob2 .ocard .od,.ob2 .ocard .on,.ob2 .ocard .ok,.ob2 .ocard .omore,
.ob2-h .lead,.ob2-top,.ob2-vl,.ob2-vr,.ob2-fk,
.cst-v,.cst-brand,.cst-page{text-shadow:0 0 6px rgba(255,255,255,.95),0 0 16px rgba(255,255,255,.8)}
.hero h1 em{text-shadow:none}
.mcard .badge{color:#FFFFFF}
.notmeasured{box-shadow:0 18px 44px rgba(20,30,60,.10),0 0 0 1px rgba(20,30,60,.08)}

/* 約束の面（--hum の紙色）。字は --paper と混ぜて「紙の上の明るい字」にしていたが、
   --paper が白になったので紙の上に白い字が載ってしまう。.notmeasured と同じ濃い茶へ。 */
.promise{color:#4A3C31;box-shadow:0 18px 44px rgba(20,30,60,.10)}
.promise .pr-k,.promise .pr-mono{color:#6E5236}
.promise h3,.promise strong,.promise .pr-side p{color:#1A1712}
.promise .pr-lim,.promise .pr-ref{color:#61503E}
.promise .pr-ref a{color:#4A3C31}
.promise .slink{color:#8A3A22}
.promise .pr-ref,.promise .pr-side{border-color:rgba(26,23,18,.18)}
.promise .pr-rule{background:rgba(26,23,18,.30)}

/* ── 字を背景から浮かせる（2026-09-22・依頼「HP全体が文章が背景で見ずらい」）──────
   ◇ が本文の真後ろに来て、字と図形の色がぶつかっていた（料金 01 の注記・TOP の本文で実測）。
   直し方は 2 つ重ねる（YOHAKU「両方で調整して」）:
     1. ◇ を薄くする ── 色・形・動きはそのまま、濃さだけ .92 → .36。
     2. 字の下に白を敷く ── 字の周りだけ白い縁を付け、◇ の上でも地が白く見えるようにする。
   地は全ページ白（上の「全体を真っ白にする」）なので、白い縁が汚れに見える場所は無い。
   ボタン（a / button）は自前の地を持つので対象に入れない。 */
#scene #shapes{opacity:.36}
:where(p,li,h1,h2,h3,h4,h5,dt,dd,th,td,caption,figcaption,blockquote,label,small,.sub,.lead,.note,.no,.eyebrow){
  text-shadow:0 0 3px #fff,0 0 8px rgba(255,255,255,.95),0 0 16px rgba(255,255,255,.8)}
