@charset "UTF-8";

/*!
Theme Name: Cocoon Child
Description: Cocoon専用の子テーマ
Theme URI: https://wp-cocoon.com/
Author: わいひら
Author URI: https://nelog.jp/
Template:   cocoon-master
Version:    1.1.3
*/

/************************************
** 子テーマ用のスタイルを書く
************************************/
/*必要ならばここにコードを書く*/

/************************************
** レスポンシブデザイン用のメディアクエリ
************************************/
/*1023px以下*/
@media screen and (max-width: 1023px){
  /*必要ならばここにコードを書く*/
}

/*834px以下*/
@media screen and (max-width: 834px){
  /*必要ならばここにコードを書く*/
}

/*480px以下*/
@media screen and (max-width: 480px){
  /*必要ならばここにコードを書く*/
}

/* IPAMORI-CSS-START */
/* ==========================================================================
   IPA資格の森 — サイトの版面設計（2026-08-13 全面改訂）

   経緯：初版（2026-07-31）は深緑グラデーションのヘッダー、角丸12px、
   影付きカード、ホバーでの浮き上がりで組んでいた。色の面と影で「それっぽく」
   見せる作りで、テンプレートに色を流した見え方になっていた。

   ねらい：このサイトの立ち位置は「IPA公式シラバスだけを根拠にした体系解説」。
   だから画面も**印刷された技術書**の作りに寄せる。SITE8（Azure資格の森）と
   同じ設計言語を、緑で実装したもの。

   ルール
   - グラデーションのベタ帯を使わない。ブランド色は**紙面の天に引く細い線**で示す
   - 角丸は最小（0〜3px）、影は使わない。区切りはヘアラインと余白で作る
   - 見出しは「線で飾る」のではなく、余白と字送りで階層を作る
   - 色は1つに絞る。強調が2色以上に散ると、どれが大事か伝わらなくなる
   - ロゴ・ナビ・本文の**左の起点をそろえる**。中央寄せは版面との関係が切れる

   ⚠️ このCSSは「器」だけを担当する。記事本文は各記事が持つ .ipasol の
      内蔵CSSが担当するので、干渉させない（.entry-content>h2 のように直下で書く）。
   ========================================================================== */

:root{
  --mori-ink:#1A2733;
  --mori-soft:#4c5d56;
  --mori-mute:#7b8b84;
  --mori-accent:#137333;
  --mori-deep:#0B4A2A;
  --mori-link:#0f7a45;
  --mori-rule:#dde5e0;
  --mori-rule-strong:#bccbc3;
  --mori-tint:#f5f8f6;
  --mori-tint-deep:#e9f1ec;
  --mori-flag:#9a4a17;
  --mori-flag-tint:#faf4ef;
  --mori-mincho:"Hiragino Mincho ProN","Yu Mincho","YuMincho","Noto Serif JP","Times New Roman",serif;
}

/* ── 地 ─────────────────────────────────────────────────
   全面をうっすら色で塗ると本文の白が浮いて見える。地は白。
   ブランド色は天の細い線だけで示す（本の花布のような役割）。 */
body{
  background:#fff;
  color:var(--mori-ink);
  border-top:3px solid var(--mori-deep);
}
.wrap,#main,.main,.content{background:#fff}

/* ── 版面の幅 ────────────────────────────────────────────
   Cocoon既定の .wrap は 1256px。サイドバーがある記事ページは本文が約830pxに
   収まるが、**サイドバーを消しているトップページは本文が1180pxまで広がり、
   1行が長すぎて読めない**（2026-08-13に指摘された）。
   読み物のサイトなので器を 1120px に締める。記事本文は約700〜750pxに収まる。 */
.wrap{max-width:1120px !important; width:auto !important; margin-left:auto; margin-right:auto}

/* ── 版面の左の起点 ──────────────────────────────────────
   ⚠️ Cocoonの .wrap は `width:1256px; margin:0 auto` で**左右パディングを持たない**。
   ロゴのpadding-leftを0にすると、本文（#main.main のパディングぶん内側）と
   起点がずれて「ロゴだけ左に飛び出す」（2026-08-13に実際に指摘された）。
   ヘッダー・ナビ・本文の3つに**同じ左右パディング**を与えて起点をそろえる。 */
#header .header-in,#header #header-in,
#navi .navi-in,#navi #navi-in{padding-left:38px;padding-right:38px}
#main.main{
  background:#fff;border:none;border-radius:0;box-shadow:none;
  padding:34px 38px 60px;
}
.content{box-shadow:none;border:none}

/* ==========================================================================
   ヘッダーとグローバルナビ
   ========================================================================== */

/* 本の柱（running head）の構成。ロゴを左、説明文を右に張り、下に双罫を引く。 */
#header{
  background:#fff;
  box-shadow:none;
  border-bottom:1px solid var(--mori-rule-strong);
}
#header .header-in,#header #header-in{
  flex-direction:row; align-items:baseline; justify-content:space-between;
  gap:20px 28px; flex-wrap:wrap;
  padding-top:20px; padding-bottom:16px;
}
/* ⚠️ この器には clearfix の .cf が付いていて ::before / ::after を持つ。
   flexコンテナでは擬似要素も**アイテムとして数えられる**ため、
   space-between が4要素で分配され、ロゴが左端から内側に押し込まれる。
   幅0で見えないので見た目からは原因が分からない。必ず打ち消す。
   （SITE8で実際に発生した事故） */
#header .header-in::before,#header .header-in::after,
#header #header-in::before,#header #header-in::after{content:none}

/* 説明文は右へ。DOM上はロゴより前にあるので order で入れ替える */
#header .tagline{
  order:2; flex:0 1 auto; margin:0; text-align:right;
  color:var(--mori-mute); font-weight:600; font-size:11.5px;
  letter-spacing:.13em; line-height:1.75; max-width:34em;
}
#header .logo-header{order:1; text-align:left; margin:0; line-height:1.2}
#header .logo-header .site-name-text-link,
#header .site-name-text-link,
#header .logo-header a{
  color:var(--mori-ink) !important; text-shadow:none;
  padding-left:0; margin-left:0;
}
/* ゴシックの太字は画面の顔、明朝は本の顔。このサイトは後者に寄せる。 */
#header .site-name-text{
  font-family:var(--mori-mincho);
  font-size:29px; font-weight:600; letter-spacing:.16em;
  color:var(--mori-ink);
}

/* ナビもロゴと同じ左の起点にそろえる。 */
#navi{
  background:#fff; box-shadow:none;
  border-top:none; border-bottom:1px solid var(--mori-rule);
}
#navi .menu-top.menu-pc{justify-content:flex-start; gap:0}
#navi .menu-top>li>a{padding-left:0; padding-right:0; margin-right:2.1em; position:relative}
#navi .menu-top>li:last-child>a{margin-right:0}
/* 柱の下の双罫（細い線＋間＋細い線）。1本の太線より紙面に近い */
#navi::after{
  content:""; display:block; height:2px; margin-top:-1px;
  background:linear-gradient(#fff 0,#fff 1px,var(--mori-tint-deep) 1px,var(--mori-tint-deep) 2px);
}
#navi .menu-top a,#navi ul li a{
  color:var(--mori-soft); font-weight:700; font-size:14px;
  letter-spacing:.04em; transition:color .15s;
}
#navi .menu-top>li>a:hover{background:none; color:var(--mori-accent)}
#navi .menu-top>li>a::after{
  content:""; position:absolute; left:0; right:0; bottom:12px;
  height:2px; background:var(--mori-accent); border-radius:0;
  transform:scaleX(0); transform-origin:left; transition:transform .18s ease;
}
#navi .menu-top>li>a:hover::after,
#navi .current-menu-item>a::after,
#navi .current_page_item>a::after{transform:scaleX(1)}
#navi .current-menu-item>a,#navi .current_page_item>a{color:var(--mori-accent)}
#navi .sub-menu{border:1px solid var(--mori-rule); box-shadow:none; background:#fff}
#navi .sub-menu li a{background:#fff; font-weight:600}
#navi .sub-menu li a:hover{background:var(--mori-tint); color:var(--mori-accent)}

/* ── パンくず ──────────────────────────────────────────── */
.breadcrumb{
  font-size:11.5px; letter-spacing:.06em; color:var(--mori-mute);
  margin:1.6em 0 1.2em; padding:0;
}
.breadcrumb a{color:var(--mori-soft); text-decoration:none}
.breadcrumb a:hover{color:var(--mori-accent); text-decoration:underline}

/* ==========================================================================
   記事の頭
   ========================================================================== */

/* 記事名も明朝。ヘッダーのロゴと同じ顔にして、紙面の連続性を作る。 */
.article .entry-title,.entry-title,.archive-title{
  font-family:var(--mori-mincho);
  color:var(--mori-ink); font-weight:600;
  font-size:1.85em; line-height:1.5; letter-spacing:.03em;
  border:none; background:none; padding:0;
  margin:.3em 0 .6em; text-wrap:balance;
}
.article .entry-title::after,.entry-title::after{content:none}
.article-header .date-tags,.entry-date,.post-update,.date-tags{
  color:var(--mori-mute); font-size:11.5px; letter-spacing:.06em;
}
/* アイキャッチの角丸と影をやめる。写真は紙に貼った図版として置く。 */
.eye-catch,.eye-catch-wrap{
  border-radius:0; overflow:hidden; box-shadow:none;
  border:1px solid var(--mori-rule);
}
.eye-catch img{border-radius:0; display:block}
.eye-catch .cat-label{border-radius:0}

/* カテゴリラベルは小さく、字を送り、色を落とす。装飾ではなく分類だと分かる形。 */
.cat-label{
  background:#fff; color:var(--mori-accent);
  border:1px solid var(--mori-accent); border-radius:0;
  font-size:10.5px; font-weight:800; letter-spacing:.14em;
  padding:.28em .7em; line-height:1;
}

/* ==========================================================================
   本文の素の要素
   ⚠️ .ipasol を持つ記事には当てない。直下セレクタで限定する。
   ========================================================================== */

.entry-content{line-height:1.95; letter-spacing:.012em}
.entry-content>p{margin:0 0 1.5em}

/* 章の切れ目は「上の罫線と、その上の広い余白」で示す。紙の本と同じ。 */
.entry-content>h2{
  margin:3.2em 0 1.1em; padding:1.1em 0 0;
  border:none; border-top:1px solid var(--mori-rule-strong); background:none;
  color:var(--mori-ink); font-size:1.5em; font-weight:800;
  line-height:1.5; letter-spacing:.02em; text-wrap:balance;
}
.entry-content>h2::before,.entry-content>h2::after{content:none}
.entry-content>h3{
  margin:2.4em 0 .7em; padding:0 0 0 .72em;
  border:none; border-left:3px solid var(--mori-accent); background:none;
  color:var(--mori-ink); font-size:1.16em; font-weight:800;
  line-height:1.6; letter-spacing:.02em;
}
.entry-content>h3::before,.entry-content>h3::after{content:none}
.entry-content>h4{
  margin:1.9em 0 .5em; color:var(--mori-accent);
  font-size:1.02em; font-weight:800; letter-spacing:.03em;
  border:none; background:none; padding:0;
}

/* 既定の青＋密着した下線は「素のHTML」に見える。下線を離して細くする。 */
.entry-content>p a,.entry-content>ul a,.entry-content>ol a{
  color:var(--mori-link);
  text-decoration:underline; text-decoration-thickness:1px;
  text-underline-offset:.22em; text-decoration-color:rgba(19,115,51,.32);
  transition:color .12s,text-decoration-color .12s;
}
.entry-content>p a:hover{text-decoration-color:currentColor}

.entry-content>ul,.entry-content>ol{margin:0 0 1.6em; padding-left:1.35em}
.entry-content>ul>li,.entry-content>ol>li{margin:0 0 .45em; line-height:1.95}
.entry-content>ul>li::marker{color:var(--mori-rule-strong)}
.entry-content>ol>li::marker{color:var(--mori-mute); font-weight:700; font-size:.92em}

.entry-content>table{
  border-collapse:collapse; width:100%; font-size:.94em;
  margin:0 0 1.8em; border:none; border-top:1px solid var(--mori-rule-strong);
  border-bottom:1px solid var(--mori-rule-strong);
}
.entry-content>table th{
  background:none; color:var(--mori-mute); font-weight:800;
  font-size:11.5px; letter-spacing:.08em; text-align:left;
  border:none; border-bottom:1px solid var(--mori-rule); padding:.7em .9em;
}
.entry-content>table td{
  border:none; border-bottom:1px solid var(--mori-rule);
  padding:.7em .9em; vertical-align:top;
}
.entry-content>table tr:last-child td{border-bottom:none}

.entry-content>blockquote{
  margin:2.2em 0; padding:1.15em 1.3em; background:var(--mori-tint);
  border:none; border-left:2px solid var(--mori-rule-strong); border-radius:0;
  color:var(--mori-soft); font-size:.95em;
}
.entry-content>blockquote::before{content:none}

/* ==========================================================================
   目次
   Cocoon既定は枠付きの箱。上下のヘアラインだけにして本文の流れを切らない。
   ========================================================================== */
.toc{
  background:none; border:none;
  border-top:1px solid var(--mori-rule-strong);
  border-bottom:1px solid var(--mori-rule);
  border-radius:0; box-shadow:none;
  padding:1.1em 0 1.2em; margin:2.4em 0; width:100%; max-width:none;
}
.toc-title{
  color:var(--mori-mute); font-weight:800;
  font-size:11px; letter-spacing:.18em; text-align:left;
  margin:0 0 .7em; line-height:1;
}
.toc-title::before{content:none}
.toc .toc-content{font-size:.93em}
.toc a{color:var(--mori-soft); text-decoration:none; line-height:1.85}
.toc a:hover{color:var(--mori-accent); text-decoration:underline}
.toc ol,.toc ul{padding-left:1.2em}
.toc li::marker{color:var(--mori-rule-strong)}

/* ==========================================================================
   記事カード（一覧・関連記事）
   影とホバーの浮き上がりをやめる。カードではなく**目次の一行**として組む。
   ========================================================================== */
.entry-card-wrap,.related-entry-card-wrap{
  background:#fff; border:none; border-radius:0; box-shadow:none;
  border-bottom:1px solid var(--mori-rule);
  padding:1.25em 0; margin:0; transition:none;
}
.entry-card-wrap:hover,.related-entry-card-wrap:hover{
  background:var(--mori-tint); box-shadow:none; transform:none;
}
.entry-card-thumb img,.related-entry-card-thumb img{
  border-radius:0; border:1px solid var(--mori-rule);
}
.entry-card-title,.related-entry-card-title{
  color:var(--mori-ink); font-weight:700; font-size:1.02em;
  line-height:1.6; letter-spacing:.01em;
}
.entry-card-wrap:hover .entry-card-title{color:var(--mori-accent)}
.entry-card-snippet,.related-entry-card-snippet{
  color:var(--mori-soft); font-size:.86em; line-height:1.85;
}
.entry-card-meta,.e-card-info,.card-meta{
  color:var(--mori-mute); font-size:11px; letter-spacing:.05em;
}
.related-entry-heading,.related-entry-main-heading{
  color:var(--mori-mute); font-size:11px; font-weight:800;
  letter-spacing:.18em; border:none; background:none;
  padding:0; margin:3em 0 .8em; line-height:1;
}
.related-entry-heading::after,.related-entry-main-heading::after{content:none}

/* ==========================================================================
   サイドバー
   白いカードに載せるのをやめ、見出しの小ラベル＋ヘアラインで区切る。
   ========================================================================== */
.sidebar{background:none; padding:0; font-size:.93em}
.sidebar .widget{
  background:none; border:none; border-radius:0; box-shadow:none;
  padding:0; margin:0 0 2.6em;
}
.sidebar .widget h2,.sidebar .widget h3,
.sidebar .widget-sidebar-standard-title{
  background:none; border:none; border-radius:0;
  border-bottom:1px solid var(--mori-rule-strong);
  color:var(--mori-mute); font-size:11px; font-weight:800;
  letter-spacing:.18em; text-align:left;
  padding:0 0 .6em; margin:0 0 .9em; line-height:1;
}
.sidebar .widget h2::after,.sidebar .widget h3::after,
.sidebar .widget-sidebar-standard-title::after,
.sidebar .widget h2::before,.sidebar .widget h3::before{content:none}
.sidebar a{color:var(--mori-soft); text-decoration:none}
.sidebar a:hover{color:var(--mori-accent); text-decoration:underline}
.sidebar li{line-height:1.9; margin:0 0 .3em}
.sidebar input[type="search"],.sidebar input[type="text"]{
  border:1px solid var(--mori-rule-strong); border-radius:0;
  padding:.6em .8em; background:#fff;
}

/* ==========================================================================
   ページャ・前後リンク
   ========================================================================== */
.pagination .page-numbers{
  border:1px solid var(--mori-rule); border-radius:0;
  color:var(--mori-soft); background:#fff;
  min-width:2.4em; padding:.45em .7em; font-weight:700; font-size:.9em;
}
.pagination .page-numbers:hover{background:var(--mori-tint); border-color:var(--mori-accent); color:var(--mori-accent)}
.pagination .current{
  background:var(--mori-accent); border-color:var(--mori-accent); color:#fff;
}
.pagination-next-link,.pager-post-navi a{
  border:1px solid var(--mori-rule); border-radius:0; box-shadow:none;
  background:#fff; color:var(--mori-soft);
}
.pagination-next-link:hover,.pager-post-navi a:hover{
  background:var(--mori-tint); border-color:var(--mori-accent);
}
.pager-post-navi .prev-post-title,.pager-post-navi .next-post-title{
  color:var(--mori-ink); font-weight:700;
}

/* ==========================================================================
   フッター
   ========================================================================== */
#footer,.footer{
  background:#fff; color:var(--mori-soft);
  border-top:1px solid var(--mori-rule-strong); box-shadow:none;
  margin-top:4em;
}
#footer a,.footer a{color:var(--mori-soft); text-decoration:none}
#footer a:hover,.footer a:hover{color:var(--mori-accent); text-decoration:underline}
.footer-bottom{
  background:none; color:var(--mori-mute);
  font-size:11px; letter-spacing:.06em;
  border-top:1px solid var(--mori-rule);
}
.copyright{color:var(--mori-mute); font-size:11px; letter-spacing:.06em}

/* ==========================================================================
   トップページ（静的フロントページ page 248）専用
   トップは自前のデザイン（.ipatop）で完結するので、Cocoonの器を全部どける。

   ⚠️⚠️ このブロックを消してはいけない。
   Cocoonの目次は本文の先頭付近に自動挿入され、**緑のヒーロー（.ipatop .hero）の
   中に入り込む**。器のCSSで .toc を「背景なし＋濃い文字色」にしているため、
   隠さないと**緑の上に緑の文字**になって何も見えなくなる。
   （2026-08-13、CSS全面改訂のときにこのブロックを落として実際に発生させた）
   ========================================================================== */
body.home.page #sidebar.sidebar{display:none !important}
body.home.page #main.main{
  width:100% !important; max-width:100% !important;
  background:transparent; border:none; box-shadow:none; padding:0;
}
body.home.page .entry-title,
body.home.page .article-header,
body.home.page .breadcrumb,
body.home.page .toc,
body.home.page .date-tags,
body.home.page .sns-share-buttons,
body.home.page .article-footer,
body.home.page .author-box,
body.home.page .pager-post-navi{display:none !important}
body.home.page #content.content{padding-top:20px}
/* トップ本文（.ipatop）は自前で max-width:1080px / margin:0 auto を持つ。
   .wrap は1256pxなので、そのままだと左端が (1256-1080)/2 = 88px になり、
   ヘッダーのロゴ（左38px）と50px ずれる。器側の起点にそろえる。 */
body.home.page .ipatop{
  max-width:none !important;
  padding-left:38px !important; padding-right:38px !important;
}
@media screen and (max-width:1023px){
  body.home.page .ipatop{padding-left:24px !important; padding-right:24px !important}
}
@media screen and (max-width:834px){
  body.home.page .ipatop{padding-left:16px !important; padding-right:16px !important}
}

/* ==========================================================================
   スマホ
   横に張れないので縦に積むが、中央寄せには戻さない。左の起点は保つ。
   ========================================================================== */
@media screen and (max-width:1023px){
  #header .header-in,#header #header-in,
  #navi .navi-in,#navi #navi-in{padding-left:24px;padding-right:24px}
  #main.main{padding:28px 24px 48px}
}
@media screen and (max-width:834px){
  #header .header-in,#header #header-in,
  #navi .navi-in,#navi #navi-in{padding-left:16px;padding-right:16px}
  #main.main{padding:22px 16px 40px}
  #header .header-in,#header #header-in{
    flex-direction:column; align-items:flex-start; gap:6px;
    padding-top:14px; padding-bottom:12px;
  }
  #header .tagline{order:2; text-align:left; font-size:10.5px; letter-spacing:.09em; max-width:100%}
  #header .site-name-text{font-size:23px; letter-spacing:.12em}
  #navi .menu-top>li>a{margin-right:1.2em}
  .article .entry-title,.entry-title{font-size:1.5em}
  .entry-content>h2{margin-top:2.6em; font-size:1.32em}
}

/* ==========================================================================
   IPA資格の森 — 記事本文の版面設計（.ipasol）2026-08-13 新設

   これまで記事本文のCSSは**1記事ごとに <style> で内蔵**していた（平均5,400字）。
   そのため全記事が旧デザイン（グラデ見出し・角丸12px・影・ピル型バッジ）のまま
   取り残され、器だけを直しても「まだダサい」状態が残っていた。

   ここに**全記事共通の1本**として置き、各記事からは <style> を撤去する。
   以後、記事はHTMLだけを書けばよい。

   設計言語は器（ipa-mori.css）と同じ＝**印刷された技術書**。
   グラデーション／角丸6px以上／影は使わない。区切りはヘアラインと余白。
   ========================================================================== */

.ipasol{
  --ink:#1A2733;--soft:#4c5d56;--mute:#7b8b84;
  --accent:#137333;--deep:#0B4A2A;--link:#0f7a45;
  --rule:#dde5e0;--rule2:#bccbc3;--tint:#f5f8f6;--tint2:#e9f1ec;
  --flag:#9a4a17;--flag-tint:#faf4ef;--read:#B4711A;--read-tint:#fbf1e2;
  --ok:#0f7a45;--bad:#b3261e;--bad-tint:#fbeae8;
  --cb:#0e1a15;--ci:#dde9e2;--cd:#6f8a7e;--ch:#1d3a2c;
  --mincho:"Hiragino Mincho ProN","Yu Mincho","YuMincho","Noto Serif JP","Times New Roman",serif;
  --mono:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",Menlo,"Hiragino Kaku Gothic ProN","Yu Gothic",monospace;
  color:var(--ink);font-size:16px;line-height:1.95;letter-spacing:.012em;
  word-break:normal;overflow-wrap:anywhere;
}
.ipasol *{box-sizing:border-box}
.ipasol p{margin:0 0 1.4em}

/* wpautop が残す空段落を消す。
   `<div class="note"><span class="lbl">…</span>` のように div直下の最初の子が
   インライン要素だと、wpautop が閉じ側の </p> だけを注入する。ブラウザはこれを
   **空の <p> 要素**として組み立てるので、余白が1行分よけいに空く。
   属性の無い空段落だけを対象にする（.narr など「空で待機する」段落は残す）。 */
.ipasol p:empty:not([class]){display:none}
.ipasol>p,.ipasol>ul,.ipasol>ol{max-width:40em}
.ipasol code{font-family:var(--mono);font-size:.93em}
.ipasol strong,.ipasol b{font-weight:700}

/* ── 見出し：線で飾らず、余白と字送りで階層を作る ────────── */
.ipasol h2{
  margin:3.2em 0 1.1em;padding:1.1em 0 0;
  border:none;border-top:1px solid var(--rule2);background:none;border-radius:0;
  color:var(--ink);font-size:1.5em;font-weight:800;
  line-height:1.5;letter-spacing:.02em;text-wrap:balance;
}
.ipasol h2::before,.ipasol h2::after{content:none}
.ipasol h3{
  margin:2.4em 0 .7em;padding:0 0 0 .72em;
  border:none;border-left:3px solid var(--accent);background:none;border-radius:0;
  color:var(--ink);font-size:1.16em;font-weight:800;line-height:1.6;letter-spacing:.02em;
}
.ipasol h3::before,.ipasol h3::after{content:none}
.ipasol h4{
  margin:1.9em 0 .5em;color:var(--accent);
  font-size:1.02em;font-weight:800;letter-spacing:.03em;
  border:none;background:none;padding:0;
}

/* ── リンク：下線を離して細くする ────────────────────── */
.ipasol a{
  color:var(--link);font-weight:400;text-decoration:underline;
  text-decoration-thickness:1px;text-underline-offset:.22em;
  text-decoration-color:rgba(15,122,69,.32);transition:text-decoration-color .12s;
}
.ipasol a:hover{text-decoration-color:currentColor}
.ipasol a:focus-visible{outline:2px solid var(--link);outline-offset:2px}

.ipasol ul,.ipasol ol{margin:0 0 1.6em;padding-left:1.35em}
.ipasol li{margin:0 0 .45em;line-height:1.9}
.ipasol ul>li::marker{color:var(--rule2)}
.ipasol ol>li::marker{color:var(--mute);font-weight:700;font-size:.92em}

/* ── 冒頭バナー・リード ─────────────────────────────── */
.ipasol .fe-banner,.ipasol .banner{display:flex;gap:8px;flex-wrap:wrap;font-size:11.5px;margin:0 0 1.8em}
.ipasol .fe-banner span,.ipasol .banner span{
  background:none;border:1px solid var(--rule2);color:var(--mute);
  padding:.25em .7em;border-radius:0;font-weight:700;letter-spacing:.06em;
}
.ipasol .lead{
  background:none;border:none;border-radius:0;
  border-left:3px solid var(--rule2);padding:.1em 0 .1em 1.1em;
  font-size:1.02em;color:var(--soft);margin:0 0 2em;max-width:40em;
}
.ipasol .lead strong{color:var(--ink)}
.ipasol .lead p:last-child{margin:0}

/* ── 面ブロック：角丸と影をやめ、上下のヘアラインとごく薄い地で示す ── */
.ipasol .note,.ipasol .def,.ipasol .skill{
  margin:2em 0;padding:1.15em 1.3em;background:var(--tint);
  border:none;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
  border-radius:0;box-shadow:none;font-size:.95em;line-height:1.9;
}
.ipasol .note>:last-child,.ipasol .def>:last-child,.ipasol .skill>:last-child{margin-bottom:0}
.ipasol .def{background:#fff;border-top:2px solid var(--accent);padding-top:1em}
.ipasol .def b{color:var(--accent)}
.ipasol .warn{
  margin:2em 0;padding:1.15em 1.3em;background:var(--flag-tint);
  border:none;border-top:1px solid rgba(154,74,23,.3);border-bottom:1px solid rgba(154,74,23,.3);
  border-radius:0;box-shadow:none;font-size:.95em;line-height:1.9;
}
.ipasol .warn>:last-child{margin-bottom:0}
.ipasol .warn strong{color:var(--flag)}

/* ラベルは絵文字の代わり。小さく、字を送り、色を落とす。 */
.ipasol .lbl,.ipasol .skill .sk,.ipasol .fig .cap,.ipasol .note .lbl{
  display:block;margin:0 0 .55em;background:none;border-radius:0;padding:0;
  font-size:11px;font-weight:800;letter-spacing:.18em;color:var(--mute);line-height:1;
}
.ipasol .skill .sk{color:var(--accent)}
.ipasol .warn .lbl{color:var(--flag)}
.ipasol .skill q{font-weight:700;color:var(--ink);quotes:"「" "」"}

/* ── 試験目線／実務イメージ ─────────────────────────── */
.ipasol .why,.ipasol .ex{
  font-size:.92em;color:var(--soft);background:none;border:none;border-radius:0;
  border-left:2px solid var(--rule2);padding:.15em 0 .15em 1em;margin:1.2em 0;line-height:1.9;
}
.ipasol .why::before{content:"試験目線 ";font-weight:800;font-size:.86em;letter-spacing:.14em;color:var(--accent)}
.ipasol .ex::before{content:"実務イメージ ";font-weight:800;font-size:.86em;letter-spacing:.14em;color:var(--mute)}

/* ── 対応マップ（.map）：カードではなく索引の行として組む ── */
.ipasol .map{display:flex;flex-direction:column;gap:0;margin:1.6em 0}
.ipasol .map .it{
  display:flex;gap:1em;align-items:flex-start;background:none;
  border:none;border-top:1px solid var(--rule);border-radius:0;padding:.85em 0;
}
.ipasol .map .k{
  flex:0 0 5em;background:none;color:var(--accent);font-family:var(--mono);
  border:1px solid var(--accent);border-radius:0;text-align:center;
  padding:.15em 0;font-size:10.5px;font-weight:700;letter-spacing:.1em;line-height:1.9;
}
.ipasol .map .t{flex:1 1 auto;min-width:0;font-size:.94em;line-height:1.9}
.ipasol .map .t b{color:var(--ink)}

/* ── 図 ───────────────────────────────────────────── */
.ipasol .fig,.ipasol .figwrap{
  border:none;border-top:1px solid var(--rule);border-radius:0;
  padding:1.1em 0 0;margin:2.2em 0;background:none;box-shadow:none;
}
.ipasol .fig img,.ipasol .figwrap img{
  display:block;width:100%;height:auto;border-radius:0;border:1px solid var(--rule);
}
.ipasol .figcap{font-size:11.5px;color:var(--mute);letter-spacing:.04em;margin:.7em 0 0;line-height:1.8}

/* ── 表：罫線を減らし、上下だけで締める ──────────────── */
.ipasol table,.ipasol table.cmp{
  width:100%;border-collapse:collapse;margin:0 0 1.8em;font-size:.93em;background:none;
  border:none;border-top:1px solid var(--rule2);border-bottom:1px solid var(--rule2);
}
.ipasol table th,.ipasol table.cmp th{
  background:none;color:var(--mute);font-weight:800;font-size:11.5px;
  letter-spacing:.08em;text-align:left;border:none;
  border-bottom:1px solid var(--rule);padding:.7em .9em;white-space:nowrap;
}
.ipasol table td,.ipasol table.cmp td{
  border:none;border-bottom:1px solid var(--rule);padding:.7em .9em;vertical-align:top;
}
.ipasol table tr:last-child td{border-bottom:none}
.ipasol table.cmp tr:nth-child(even) td{background:none}
.ipasol .tbl{overflow-x:auto;margin:0 0 1.8em}
.ipasol .tbl table{margin:0}

/* ── 数値の強調（FE：44問中19問 など） ────────────────── */
.ipasol .stat{
  display:flex;flex-wrap:wrap;margin:0 0 2em;background:none;
  border:none;border-top:1px solid var(--rule2);border-bottom:1px solid var(--rule);
  border-radius:0;overflow:visible;
}
.ipasol .stat div{flex:1 1 130px;padding:1em 1.4em 1em 0;border:none}
.ipasol .stat b{
  display:block;font-size:26px;line-height:1.2;font-weight:800;
  color:var(--accent);font-variant-numeric:tabular-nums;
}
.ipasol .stat span{display:block;font-size:11.5px;color:var(--mute);margin-top:.2em;letter-spacing:.04em}

/* ── 正典の引用（FE） ───────────────────────────────── */
.ipasol .canon{
  background:var(--tint);border:none;border-left:3px solid var(--accent);
  border-radius:0;padding:1.2em 1.4em;margin:0 0 1.8em;
}
.ipasol .canon .src{
  font-size:11px;font-weight:800;letter-spacing:.18em;color:var(--accent);
  margin:0 0 .8em;line-height:1;
}
.ipasol .canon dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:8px 22px;align-items:start}
.ipasol .canon dt{font-family:var(--mono);font-size:13.5px;white-space:pre;color:var(--ink);line-height:1.75;margin:0}
.ipasol .canon dd{margin:0;font-size:.93em;color:var(--soft);line-height:1.85}
/* 複数行の記述形式は <dt> の中に <pre> を入れて字下げごと出す。
   compact() が改行を潰さないのは <pre> だけなので、ここは pre でなければならない。 */
.ipasol .canon dt pre.pgm{border:none;background:none;padding:0;font-size:13px;line-height:1.75}
.ipasol .canon dt i,.ipasol .canon dd i{font-style:italic;color:var(--soft)}
.ipasol .canon p:last-child{margin:0}
.ipasol .canon>p{max-width:44em}
.ipasol .src{font-size:.86em;color:var(--mute)}

/* 出題の引用は「試験の紙面」に見せる。シミュレータ（黒地）とは別物だと
   ひと目で分かるよう、白地＋ヘアラインで印刷物側に寄せる。 */
.ipasol .canon .lbl2{
  font-size:11px;font-weight:800;letter-spacing:.18em;color:var(--mute);
  margin:1.4em 0 .5em;line-height:1;
}
.ipasol pre.pgm{
  font-family:var(--mono);font-size:13.5px;line-height:1.9;
  background:#fff;border:none;border-top:1px solid var(--rule2);border-bottom:1px solid var(--rule2);
  border-radius:0;margin:0;padding:1em 1.1em;overflow-x:auto;color:var(--ink);
  white-space:pre;tab-size:2;
}
.ipasol .grp{display:flex;flex-wrap:wrap;gap:.35em 1.6em;margin:0;font-family:var(--mono);font-size:14px}
.ipasol .grp span{font-variant-numeric:tabular-nums;white-space:nowrap}
/* 正解の先出し（折りたたみ）。
   引用した出題の直後に置く。解説を最後まで読まないと正解が分からないのは不便だが、
   出しっぱなしにすると予想クイズが成立しない。開くかどうかを読者に選ばせる。 */
.ipasol details.peek{
  border:none;border-bottom:1px solid var(--rule);border-radius:0;background:none;
  margin:0 0 1.8em;padding:0 0 1em;
}
.ipasol details.peek>summary{
  list-style:none;cursor:pointer;display:inline-flex;align-items:baseline;gap:.5em;
  font-size:11px;font-weight:800;letter-spacing:.18em;color:var(--accent);
  padding:.2em 0;line-height:1.4;
}
.ipasol details.peek>summary::-webkit-details-marker{display:none}
.ipasol details.peek>summary::before{content:"＋";font-weight:700;font-size:12px}
.ipasol details.peek[open]>summary::before{content:"－"}
.ipasol details.peek>summary:hover{color:var(--deep)}
.ipasol details.peek>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.ipasol details.peek>p{margin:.8em 0 0;max-width:40em}

/* 出題の空欄（IPAの紙面では罫線の箱）。答えを書き込む場所だと分かればよい。 */
.ipasol .blank{
  display:inline-block;min-width:4.2em;height:1.35em;vertical-align:-.25em;
  border:1px solid var(--ink);background:#fff;margin:0 .25em;
  /* 空欄が a・b・c と記号付きで示される出題があるので、中身を置けるようにする */
  text-align:center;line-height:1.3em;font-family:var(--mono);
  font-size:.86em;color:var(--soft);font-style:normal;font-weight:400;
}

/* ── ゴール提示・予想（FE） ─────────────────────────── */
.ipasol .goal{
  border:none;border-top:2px solid var(--accent);border-bottom:1px solid var(--rule);
  border-radius:0;background:#fff;box-shadow:none;padding:1.1em 0 1.3em;margin:0 0 1.8em;
}
.ipasol .goal .cap{display:block;font-size:11px;font-weight:700;color:var(--mute);letter-spacing:.1em;margin:0 0 .5em}
.ipasol .goal .down{font-size:18px;color:var(--accent);font-weight:700;margin:.6em 0}
.ipasol .goal .rule{
  background:var(--tint2);border-radius:0;padding:.85em 1.1em;
  font-size:1em;font-weight:700;color:var(--ink);margin:0 0 1em;
}
.ipasol .goal p{margin:0 0 .9em;max-width:40em}
.ipasol .goal p:last-child{margin:0}
.ipasol .predict{
  border:none;border-top:1px dashed var(--rule2);border-bottom:1px dashed var(--rule2);
  border-radius:0;padding:1.2em 0 1.3em;margin:0 0 1.8em;background:none;
}
.ipasol .predict .lbl{color:var(--read)}
.ipasol .predict .q{margin:0 0 1em;font-size:1em;font-weight:700;max-width:40em}
.ipasol .pbtns{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 1em}

/* ── トレースシミュレータ（FE） ─────────────────────── */
.ipasol .sim{
  border:none;border-top:1px solid var(--rule2);border-bottom:1px solid var(--rule2);
  border-radius:0;background:#fff;box-shadow:none;margin:0 0 2.2em;overflow:hidden;
}
.ipasol .sim-head{
  display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:.9em 0;background:none;border-bottom:1px solid var(--rule);flex-wrap:wrap;
}
.ipasol .sim-head p{margin:0}
.ipasol .sim-title{font-size:11px;font-weight:800;letter-spacing:.18em;color:var(--mute)}
.ipasol .sim-src{font-size:11px;color:var(--mute);letter-spacing:.04em}
.ipasol .sim-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:0}
.ipasol .code{
  background:var(--cb);padding:1.1em 0;margin:0;overflow-x:auto;border-radius:0;
  font-family:var(--mono);font-size:13.5px;line-height:1.95;
}
.ipasol .code .ln{display:flex;gap:14px;padding:1px 1.1em;white-space:pre;color:var(--ci);border-left:3px solid transparent}
.ipasol .code .ln i{flex:none;width:1.4em;text-align:right;color:var(--cd);font-style:normal;font-variant-numeric:tabular-nums;user-select:none}
.ipasol .code .ln.on{background:var(--ch);border-left-color:var(--accent)}
.ipasol .code .ln.on i{color:#7CC79E}
.ipasol .state{padding:1.1em 0 1.2em 1.4em;border-left:1px solid var(--rule);background:none;display:flex;flex-direction:column;gap:1.1em}
.ipasol .state h4{margin:0 0 .5em;font-size:10.5px;font-weight:800;letter-spacing:.18em;color:var(--mute);border:none;padding:0;background:none}
.ipasol .loopbadge{
  align-self:flex-start;margin:0;font-size:10.5px;font-weight:800;letter-spacing:.14em;
  background:none;color:var(--accent);border:1px solid var(--accent);
  padding:.2em .7em;border-radius:0;
}
.ipasol .loopbadge.off{color:var(--mute);border-color:var(--rule2)}
.ipasol .arr{margin:0 0 .7em}
.ipasol .arr .an{font-family:var(--mono);font-size:11px;color:var(--mute);display:block;margin-bottom:.35em;letter-spacing:.06em}
.ipasol .cells{display:flex;gap:3px;flex-wrap:wrap}
.ipasol .cell{min-width:42px;border:1px solid var(--rule2);border-radius:0;background:#fff;text-align:center;padding:2px 4px 0}
.ipasol .cell.w{background:var(--tint2);border-color:var(--accent)}
/* まだ決まっていない要素。答えを先に見せないための伏せ札。 */
.ipasol .cell.q{border-style:dashed}
.ipasol .cell.q b{color:var(--mute)}
.ipasol .cell.r{background:var(--read-tint);border-color:var(--read)}
.ipasol .cell u{display:block;font-size:9.5px;color:var(--mute);text-decoration:none;font-variant-numeric:tabular-nums}
.ipasol .cell b{display:block;font-family:var(--mono);font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.35}
.ipasol .cell.w b{color:var(--accent)}
.ipasol .cell.r b{color:var(--read)}
.ipasol .cell s{display:block;height:14px;font-size:11px;line-height:14px;text-decoration:none;color:transparent}
.ipasol .cell.w s{color:var(--accent)}
.ipasol .cell.r s{color:var(--read)}
.ipasol .cells.empty::after{content:"（要素数0）";font-size:11.5px;color:var(--mute);align-self:center}
.ipasol .ptrkey{display:flex;gap:14px;font-size:10.5px;color:var(--mute);margin-top:.4em;letter-spacing:.04em}
.ipasol .ptrkey .kr b{color:var(--read)}
.ipasol .ptrkey .kw b{color:var(--accent)}
.ipasol .calc{border:none;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);border-radius:0;background:var(--tint);padding:.9em 1em;text-align:center}
.ipasol .calc.idle{color:var(--mute);font-size:12.5px;padding:1.2em 1em}
.ipasol .calc .row{font-family:var(--mono);font-variant-numeric:tabular-nums;display:flex;justify-content:center;gap:9px;flex-wrap:wrap}
.ipasol .calc .r1{font-size:13px;color:var(--mute);margin-bottom:2px}
.ipasol .calc .r2{font-size:19px;font-weight:700;color:var(--ink)}
.ipasol .calc .eq{font-size:14px;color:var(--accent);line-height:1.1;margin:2px 0}
.ipasol .calc .r3{font-size:23px;font-weight:800;color:var(--accent)}
.ipasol .vars{display:flex;flex-wrap:wrap;gap:8px}
.ipasol .var{border:1px solid var(--rule2);border-radius:0;padding:.25em .7em;background:#fff;min-width:70px}
.ipasol .var.chg{background:var(--tint2);border-color:var(--accent)}
.ipasol .var b{display:block;font-family:var(--mono);font-size:10.5px;color:var(--mute);font-weight:600;letter-spacing:.06em}
.ipasol .var span{display:block;font-family:var(--mono);font-size:15px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.35}
.ipasol .var.chg span{color:var(--accent)}
.ipasol .var span.undef{color:var(--mute);font-size:12px;font-weight:500}
.ipasol .outbox{font-family:var(--mono);font-size:15px;font-weight:700;background:var(--cb);color:#7CC79E;padding:.5em .8em;border-radius:0}
.ipasol .narr{padding:.9em 0;background:none;border-top:1px solid var(--rule);font-size:.93em;color:var(--ink);line-height:1.85;min-height:3.4em;margin:0}
.ipasol .narr b{color:var(--accent)}
.ipasol .ctrl{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:.9em 0;border-top:1px solid var(--rule);background:none;margin:0}
.ipasol .prog{margin-left:auto;font-size:11.5px;color:var(--mute);font-variant-numeric:tabular-nums}
.ipasol .trace-wrap{border-top:1px solid var(--rule);background:none}
.ipasol .trace-wrap h4{margin:0;padding:.9em 0 .5em}
.ipasol .trace-scroll{overflow-x:auto;padding:0 0 1em}
.ipasol table.trace{font-size:13px;border-top:1px solid var(--rule2);border-bottom:1px solid var(--rule2)}
.ipasol table.trace th,.ipasol table.trace td{padding:.45em .9em;white-space:nowrap}
.ipasol table.trace td{font-family:var(--mono);font-variant-numeric:tabular-nums}
.ipasol table.trace tbody tr:last-child{background:var(--tint2)}
.ipasol table.trace tbody tr:last-child td{font-weight:700;color:var(--accent)}
.ipasol .trace-empty{padding:0 0 1em;font-size:12.5px;color:var(--mute);margin:0}

/* ── ボタン：主要導線1つだけを塗り、残りは枠線で序列を作る ── */
.ipasol button{
  font-family:inherit;font-size:13.5px;font-weight:700;padding:.6em 1.15em;
  border-radius:2px;cursor:pointer;border:1px solid var(--rule2);
  background:#fff;color:var(--ink);line-height:1.6;transition:background .15s,border-color .15s;
}
.ipasol button:hover:not(:disabled){background:var(--tint2);border-color:var(--accent)}
.ipasol button:disabled{opacity:.4;cursor:not-allowed}
.ipasol button.pri{background:var(--accent);border-color:var(--accent);color:#fff}
.ipasol button.pri:hover:not(:disabled){background:var(--deep);border-color:var(--deep)}
.ipasol button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ── 確認クイズ（FE .quiz ／ 既存 .aq-quiz の両方） ────── */
.ipasol .quiz,.aq-quiz{
  border:none;border-top:2px solid var(--accent);border-bottom:1px solid var(--rule);
  border-radius:0;background:#fff;box-shadow:none;padding:1.2em 0 1.4em;margin:0 0 2em;
  font-size:15px;line-height:1.85;
}
.ipasol .quiz .q,.aq-quiz .aq-q{font-weight:700;margin:0 0 1em;font-size:1.02em;max-width:40em;color:var(--ink)}
.ipasol .quiz .q em{font-family:var(--mono);font-style:normal;background:var(--tint);padding:.1em .4em;border-radius:0}
.aq-quiz .aq-badge{
  display:block;background:none;color:var(--accent);font-weight:800;
  font-size:11px;letter-spacing:.18em;border-radius:0;padding:0;margin:0 0 .7em;line-height:1;
}
.ipasol .opts,.aq-quiz .aq-opts{display:flex;flex-direction:column;gap:.5em;margin:0 0 1em}
.ipasol .opt,.aq-quiz .aq-opt{
  display:flex;align-items:flex-start;gap:.8em;width:100%;text-align:left;
  background:#fff;border:1px solid var(--rule2);border-radius:2px;
  padding:.75em 1em;cursor:pointer;font-size:.95em;color:var(--ink);
  font-family:inherit;line-height:1.7;font-weight:500;white-space:normal;
}
.ipasol .opt:hover:not(:disabled),.aq-quiz .aq-opt:hover:not(.aq-locked){border-color:var(--accent);background:var(--tint)}
.aq-quiz .aq-opt .aq-k{
  flex:none;width:1.6rem;height:1.6rem;border-radius:0;background:none;
  border:1px solid var(--rule2);color:var(--mute);font-weight:700;
  display:flex;align-items:center;justify-content:center;font-size:.85rem;
}
.aq-quiz .aq-opt .aq-t{padding-top:.05rem}
.aq-quiz .aq-opt.aq-locked{cursor:default}
.ipasol .opt.ok,.aq-quiz .aq-opt.is-correct{border-color:var(--ok);background:var(--tint2);color:var(--ok);font-weight:700}
.aq-quiz .aq-opt.is-correct .aq-k{background:var(--ok);border-color:var(--ok);color:#fff}
.aq-quiz .aq-opt.is-correct .aq-t::after{content:"　✓ 正解";color:var(--ok);font-weight:700;white-space:nowrap}
.ipasol .opt.ng,.aq-quiz .aq-opt.is-wrong{border-color:var(--bad);background:var(--bad-tint);color:var(--bad)}
.aq-quiz .aq-opt.is-wrong .aq-k{background:var(--bad);border-color:var(--bad);color:#fff}
.aq-quiz .aq-msg{margin:1em 0 0;font-weight:700;min-height:1.2em}
.aq-quiz .aq-msg.aq-ok{color:var(--ok)}
.aq-quiz .aq-msg.aq-ng{color:var(--bad)}
.ipasol .ans,.aq-quiz .aq-exp{
  font-size:.93em;padding:.9em 1.1em;border-radius:0;background:var(--tint);
  border:none;border-left:3px solid var(--accent);line-height:1.85;
  margin:0;color:var(--soft);display:none;
}
.ipasol .ans.show,.aq-quiz .aq-exp.show{display:block}
.ipasol .ans b{color:var(--accent)}
.aq-quiz .aq-reset{
  display:none;margin-top:1em;background:none;border:1px solid var(--accent);
  color:var(--accent);border-radius:2px;padding:.5em 1.1em;font-size:.85rem;
  cursor:pointer;font-family:inherit;
}
.aq-quiz .aq-reset.show{display:inline-block}

/* ── 記事ごとの少数派クラス（旧CSSから移設・2026-08-13） ──
   .tags（用語チップ）／.glossary .g（用語集）／.done（章の締め）／
   .qcap（公式PDFのキャプチャ）／.mark（強調記号）／.lb（ラベル） */
.ipasol .tags{display:flex;flex-wrap:wrap;gap:.45em;margin:.8em 0 1.4em}
.ipasol .tags span{
  background:none;color:var(--mute);border:1px solid var(--rule2);border-radius:0;
  padding:.18em .7em;font-size:11px;font-weight:700;letter-spacing:.06em;
}
.ipasol .glossary{display:grid;gap:0;margin:1.4em 0}
.ipasol .glossary .g{
  border:none;border-top:1px solid var(--rule);border-radius:0;
  padding:.8em 0;background:none;font-size:.93em;line-height:1.9;
}
.ipasol .glossary .g b{color:var(--accent)}
.ipasol .done{
  background:var(--tint2);border:none;border-radius:0;
  border-top:2px solid var(--accent);border-bottom:1px solid var(--rule);
  padding:1.05em 1.3em;margin:2.2em 0;font-weight:700;color:var(--ink);
}
.ipasol .qcap{
  border:none;border-top:1px solid var(--rule);border-radius:0;
  padding:1.1em 0 0;margin:2.2em 0;background:none;
}
.ipasol .qcap img{width:100%;height:auto;border-radius:0;border:1px solid var(--rule);display:block}
.ipasol .qcap .src{font-size:11.5px;color:var(--mute);margin:.7em 0 0;letter-spacing:.04em}
.ipasol .mark{font-weight:800;margin-right:.3em;color:var(--accent)}
.ipasol .lb{
  display:inline-block;font-size:10.5px;font-weight:800;letter-spacing:.16em;
  color:var(--accent);border:1px solid var(--accent);border-radius:0;
  padding:.15em .6em;background:none;line-height:1.7;
}

/* ── 導線（.navlist ／ .next ／ .backhub） ─────────────── */
.ipasol .navlist{list-style:none;padding:0;margin:1.4em 0;display:grid;gap:0}
.ipasol .navlist li{border:none;border-top:1px solid var(--rule);border-radius:0;background:none}
.ipasol .navlist a{
  display:block;padding:.85em 0;text-decoration:none;color:var(--ink);
  font-weight:700;font-size:.97em;
}
.ipasol .navlist a:hover{color:var(--accent)}
.ipasol .navlist .soon{display:block;padding:.85em 0;color:var(--mute);font-weight:700;font-size:.97em}
.ipasol .navlist .soon::after{
  content:"準備中";float:right;background:none;color:var(--mute);
  font-size:10.5px;letter-spacing:.14em;padding:0;border:none;border-radius:0;font-weight:800;
}
.ipasol .next{display:grid;grid-template-columns:1fr 1fr;gap:0 34px;margin:1.4em 0 1.8em}
.ipasol .next a{
  display:block;padding:1em 0;border:none;border-top:1px solid var(--rule);
  border-radius:0;text-decoration:none;background:none;transition:none;
}
.ipasol .next a:hover{background:var(--tint)}
.ipasol .next a:hover .t{color:var(--accent)}
.ipasol .next .k{display:block;font-size:10.5px;font-weight:800;letter-spacing:.18em;color:var(--mute);margin-bottom:.35em}
.ipasol .next .t{display:block;font-size:.97em;font-weight:700;color:var(--ink);line-height:1.6}
.ipasol .backhub{
  display:inline-block;margin:2em 0 .4em;background:none;border:none;
  border-radius:0;padding:0;font-weight:700;font-size:.93em;color:var(--link);
}
.ipasol .cite{
  font-size:12px;color:var(--mute);border-top:1px solid var(--rule);
  padding-top:1.2em;margin-top:2.6em;max-width:44em;line-height:1.85;
}

/* ==========================================================================
   ハブ／ランディング専用クラス（2026-08-13 移設）

   グローバルハブ(48)・DM区分ハブ(68)・PD-S区分ハブ(83)は独自レイアウトを持ち、
   `.ipahub` という別スコープ＋**post 48だけ紺/臙脂/金の別配色**で組まれていた。
   スコープを `.ipasol` に統一し、固有クラスだけをここに集約して緑基調にそろえる。
   ========================================================================== */

/* 番号付きの要点（.sum） */
.ipasol .sum{display:flex;flex-direction:column;gap:0;margin:1.6em 0}
.ipasol .sum .it{
  display:flex;gap:1em;align-items:flex-start;background:none;
  border:none;border-top:1px solid var(--rule);border-radius:0;padding:.9em 0;
}
.ipasol .sum .n{
  flex:0 0 auto;background:none;color:var(--accent);border:1px solid var(--accent);
  font-family:var(--mono);font-weight:700;border-radius:0;width:1.9em;height:1.9em;
  display:flex;align-items:center;justify-content:center;font-size:.85em;
}
.ipasol .sum .it>div{flex:1 1 auto;min-width:0}

/* 年表（.tl）：日付を等幅で左に固定した2段組にする */
.ipasol .tl{display:grid;grid-template-columns:1fr;gap:0;margin:1.4em 0}
.ipasol .tl .row{
  display:grid;grid-template-columns:9em 1fr;gap:0 24px;align-items:baseline;
  border-top:1px solid var(--rule);padding:.85em 0;
}
.ipasol .tl .yr{
  background:none;color:var(--mute);font-family:var(--mono);font-weight:700;
  border-radius:0;text-align:left;padding:0;font-size:11.5px;
  letter-spacing:.06em;line-height:1.9;font-variant-numeric:tabular-nums;
}
.ipasol .tl .ev{
  background:none;border:none;border-radius:0;padding:0;font-size:.93em;line-height:1.9;
}
.ipasol .tl .ev.end{background:none;color:var(--mute)}
.ipasol .tl .ev b{color:var(--ink)}

/* 章カード（.chapters / .ch） */
.ipasol .chapters{display:grid;grid-template-columns:1fr;gap:0;margin:1.4em 0}
.ipasol .ch{
  border:none;border-top:1px solid var(--rule2);border-radius:0;
  overflow:visible;background:none;padding:0 0 1.1em;
}
.ipasol .ch .ch-h{
  display:flex;align-items:baseline;gap:.8em;background:none;color:var(--ink);
  padding:1em 0 .5em;font-weight:800;font-size:1.02em;
}
.ipasol .ch .ch-h .cn{
  flex:0 0 auto;width:1.8em;height:1.8em;background:none;color:var(--accent);
  border:1px solid var(--accent);border-radius:0;display:flex;align-items:center;
  justify-content:center;font-family:var(--mono);font-weight:700;font-size:.8em;
}
.ipasol .ch .ch-b{padding:0;font-size:.92em}
.ipasol .ch .ch-b ul{margin:.2em 0 .6em;padding-left:1.25em}
.ipasol .ch .ch-b li{margin:.2em 0}
.ipasol .ch .ch-f{border-top:1px solid var(--rule);padding:.7em 0 0;margin-top:.6em}
.ipasol .ch .ch-f a{color:var(--link);font-weight:700}
.ipasol .ch .ch-f .soon,.ipasol .soon{color:var(--mute);font-weight:700}
.ipasol .ch .ch-f .soon::after{
  content:"準備中";float:right;background:none;color:var(--mute);
  font-size:10.5px;letter-spacing:.14em;padding:0;border:none;border-radius:0;font-weight:800;
}

/* 対比2段組（.vs） */
.ipasol .vs{display:grid;grid-template-columns:1fr 1fr;gap:0 30px;margin:1.6em 0}
.ipasol .vs .col{border:none;border-top:2px solid var(--rule2);border-radius:0;overflow:visible;background:none}
.ipasol .vs .col .hd{
  color:var(--mute);font-weight:800;padding:.8em 0 .5em;text-align:left;
  background:none;font-size:11px;letter-spacing:.18em;line-height:1;
}
.ipasol .vs .col.dm{border-top-color:var(--accent)}
.ipasol .vs .col.dm .hd{color:var(--accent)}
.ipasol .vs .col.pdd{border-top-color:var(--deep)}
.ipasol .vs .col.pdd .hd{color:var(--deep)}
.ipasol .vs .col .bd{padding:0;font-size:.9em;line-height:1.9}
.ipasol .vs .col .bd b{color:var(--ink)}

/* 出題範囲カード（.scope / .scard） */
.ipasol .scope{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:0 30px;margin:1.4em 0}
.ipasol .scard{border:none;border-top:1px solid var(--rule);border-radius:0;padding:.9em 0 1.1em;background:none}
.ipasol .scard .sh{font-weight:700;color:var(--ink);display:flex;align-items:center;gap:.6em;margin-bottom:.45em}
.ipasol .scard .sh .sn{
  background:none;color:var(--accent);border:1px solid var(--accent);
  min-width:1.7em;height:1.7em;border-radius:0;display:inline-flex;
  align-items:center;justify-content:center;font-family:var(--mono);font-size:.8em;font-weight:700;
}
.ipasol .scard ul{margin:.3em 0 0;padding-left:1.25em;font-size:.87em;color:var(--soft)}
.ipasol .scard li{margin:.2em 0}

/* 状態バッジ（.badge）：ピルをやめ、字を送った小ラベルにする */
.ipasol .badge{
  display:inline-block;font-size:10.5px;font-weight:800;letter-spacing:.14em;
  padding:.15em .6em;border-radius:0;vertical-align:middle;margin-left:.4em;
  background:none;border:1px solid currentColor;
}
.ipasol .b-new{color:var(--accent)}
.ipasol .b-keep{color:var(--mute)}
.ipasol .b-soon{color:var(--flag)}

/* スキルレベルのはしご（.ladder / .lv） */
.ipasol .ladder{display:grid;gap:0;margin:1.4em 0}
.ipasol .lv{
  display:grid;grid-template-columns:8em 1fr;gap:0 20px;align-items:center;
  background:none;border:none;border-top:1px solid var(--rule);border-radius:0;padding:.85em 0;
}
.ipasol .lv .tag{
  background:none;color:var(--mute);border:1px solid var(--rule2);font-family:var(--mono);
  font-weight:700;border-radius:0;text-align:center;padding:.25em .3em;
  font-size:10.5px;letter-spacing:.08em;line-height:1.8;
}
.ipasol .lv .exs{display:flex;flex-wrap:wrap;gap:.45em}
.ipasol .lv .ex{
  background:#fff;border:1px solid var(--accent);color:var(--accent);
  font-weight:700;border-radius:0;padding:.25em .7em;font-size:11.5px;
  letter-spacing:.04em;margin:0;line-height:1.7;
}
.ipasol .lv .ex::before{content:none}
.ipasol .lv .ex.keep{border-color:var(--rule2);color:var(--mute)}

/* 新旧対応（.reorg） */
.ipasol .reorg{display:grid;grid-template-columns:1fr;gap:0;margin:1.4em 0}
.ipasol .reorg .grp{border:none;border-top:1px solid var(--rule);border-radius:0;overflow:visible;padding:.9em 0 1em}
.ipasol .reorg .grp .old{background:none;padding:0;font-size:.9em;color:var(--soft);line-height:1.9}
.ipasol .reorg .grp .old b{color:var(--ink)}
.ipasol .reorg .grp .arw{text-align:left;color:var(--accent);font-weight:700;font-size:1em;line-height:1.4;margin:.25em 0}
.ipasol .reorg .grp .new{background:none;padding:0;font-weight:700;color:var(--ink)}

/* 区分カード（.cards / .card） */
.ipasol .cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:0 30px;margin:1.4em 0}
.ipasol .card{
  border:none;border-top:1px solid var(--rule);border-radius:0;padding:1em 0 1.2em;
  background:none;display:flex;flex-direction:column;
}
.ipasol .card .code{
  font-family:var(--mono);font-weight:700;color:var(--accent);font-size:11px;
  letter-spacing:.12em;background:none;padding:0;border-radius:0;
}
.ipasol .card .nm{font-weight:700;margin:.3em 0 .5em;color:var(--ink);line-height:1.6}
.ipasol .card .ds{font-size:.88em;color:var(--soft);flex:1;line-height:1.9}
.ipasol .card .ft{margin-top:.7em;font-size:11.5px;color:var(--mute)}

/* 科目構成マップ（.komap / .kob） */
.ipasol .komap{display:grid;gap:0;margin:1.4em 0}
.ipasol .korow{
  display:grid;grid-template-columns:8em 1fr;gap:0 20px;align-items:center;
  background:none;border:none;border-top:1px solid var(--rule);border-radius:0;padding:.85em 0;
}
.ipasol .koname{font-weight:700;color:var(--ink);font-size:.9em;line-height:1.5}
.ipasol .koblocks{display:flex;flex-wrap:wrap;gap:.5em;align-items:stretch}
.ipasol .kob{
  flex:1 1 120px;border-radius:0;padding:.5em .7em;font-weight:700;font-size:.88em;
  text-align:center;line-height:1.4;border:1px solid var(--rule2);background:none;color:var(--soft);
}
.ipasol .kob small{display:block;font-weight:500;font-size:.8em;opacity:.85;margin-top:.15em}
.ipasol .kob.a{background:var(--tint);color:var(--soft)}
.ipasol .kob.a2{background:var(--tint2);color:var(--accent);border-color:var(--accent)}
.ipasol .kob.b{background:var(--accent);color:#fff;border-color:var(--accent)}
.ipasol .kob.wide{flex-basis:100%}

/* 分野カード（.fields / .fcard） */
.ipasol .fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:0 30px;margin:1.4em 0}
.ipasol .fcard{border:none;border-top:1px solid var(--rule);border-radius:0;overflow:visible;background:none;padding:0 0 1em}
.ipasol .fcard .fh{
  background:none;color:var(--ink);font-weight:700;padding:.9em 0 .4em;
  font-size:.94em;display:flex;align-items:center;gap:.6em;
}
.ipasol .fcard .fh .fn{
  background:none;color:var(--accent);border:1px solid var(--accent);
  min-width:1.6em;height:1.6em;border-radius:0;display:inline-flex;
  align-items:center;justify-content:center;font-family:var(--mono);font-size:.78em;font-weight:700;
}
.ipasol .fcard .fb{padding:0;font-size:.87em;color:var(--soft);line-height:1.85}

@media screen and (max-width:620px){
  .ipasol .tl .row,.ipasol .lv,.ipasol .korow{grid-template-columns:1fr;gap:.4em}
  .ipasol .tl .yr,.ipasol .lv .tag{justify-self:start;padding:.2em .7em}
  .ipasol .vs,.ipasol .scope,.ipasol .cards,.ipasol .fields{grid-template-columns:1fr;gap:0}
}

@media screen and (max-width:900px){
  .ipasol .sim-grid{grid-template-columns:1fr}
  .ipasol .state{border-left:0;border-top:1px solid var(--rule);padding-left:0}
  .ipasol .next{grid-template-columns:1fr;gap:0}
}
@media screen and (max-width:620px){
  .ipasol{font-size:15.5px}
  .ipasol h2{margin-top:2.6em;font-size:1.32em}
  .ipasol .canon dl{grid-template-columns:1fr;gap:4px}
  .ipasol .canon dd{margin:0 0 10px;padding-left:12px;border-left:2px solid var(--rule2)}
  .ipasol .map .it{flex-direction:column;gap:.4em}
  .ipasol .map .k{flex:none;align-self:flex-start;padding:.15em .7em}
}
@media (prefers-reduced-motion:reduce){.ipasol *{transition:none !important;animation:none !important}}

/* IPAMORI-CSS-END */
