
  @import url('https://fonts.googleapis.com/css2?family=Yomogi&family=Zen+Maru+Gothic:wght@400;500;700&display=swap');

  :root{
    --bg:#f7f3ec; --bg2:#fdfbf6; --ink:#5b5247; --ink-soft:#8a8073;
    --line:#e7ded0; --pink:#e6a9a1; --green:#a3bfa8; --yellow:#e3c98f;
    --blue:#a7bcc9; --card-sh:rgba(120,105,85,.10);
  }
  *{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  /* 表紙の表示中はoverflow:hiddenでスクロールを止めるが、その間
     スクロールバーが消えて横幅が変わり、表紙が閉じた瞬間にページが
     カクッと横にずれることがあった。スクロールバーの有無に関わらず
     常に同じ幅を保つようにして、このズレを防ぐ。 */
  html{scroll-behavior:smooth;scrollbar-gutter:stable}
  body{font-family:'Zen Maru Gothic',sans-serif;background:var(--bg);color:var(--ink);line-height:1.9;-webkit-font-smoothing:antialiased;min-height:100vh;overscroll-behavior-y:contain;overflow-x:hidden;max-width:100vw}
  .wrap{max-width:720px;margin:0 auto;padding:0 22px}

  header{padding:28px 22px 16px}
  .brand{font-family:'Yomogi',cursive;font-size:22px;color:var(--ink);letter-spacing:.06em;display:inline-flex;align-items:center;gap:8px;text-decoration:none}
  .brand img{width:24px;height:24px;object-fit:contain}

  .crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:12.5px;color:var(--ink-soft);margin-top:14px}
  .crumbs a{color:var(--ink-soft);text-decoration:none;border-bottom:1px dotted var(--ink-soft)}
  .crumbs a:hover{color:var(--ink)}
  .crumbs .sep{color:#c9bfae}
  .crumbs .cur{color:var(--ink)}

  .card{background:var(--bg2);border:1px solid var(--line);border-radius:24px;box-shadow:0 20px 44px -30px var(--card-sh);padding:32px 26px;margin-bottom:24px}

  /* 見出しはブラウザ標準で太字になるが、Yomogiは太さが1種類しかない。
     太字のままだとフォント読み込み前に代替フォントで太く表示され、
     読み込み後に細くなってちらつくため、太さを標準に固定している。 */
  /* 英字混じりの記事タイトル(FP3級、科目Bなど)で、日本語と英字の
     境目で不自然に改行されるのを防ぐ。以前、本を開く演出の表紙
     文字だけに入れていたが、記事本文の見出し自体にも同じ問題が
     起きうることが分かったため、こちらにも入れておく。 */
  h1{font-family:'Yomogi',cursive;font-weight:400;font-size:25px;line-height:1.6;color:var(--ink);margin-bottom:10px;word-break:keep-all;overflow-wrap:break-word}
  .meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--ink-soft);margin-bottom:22px}
  .meta-row .chip{background:var(--bg);border:1px solid var(--line);border-radius:20px;padding:4px 12px}

  .writer-box{display:flex;align-items:center;gap:14px;background:var(--bg);border:1px solid var(--line);border-radius:16px;padding:14px 16px;margin-bottom:24px}
  .writer-ico{flex-shrink:0;width:42px;height:42px;border-radius:50%;background:var(--green);display:flex;align-items:center;justify-content:center;color:#fff}
  .writer-ico svg{width:22px;height:22px}
  .writer-info{flex:1;min-width:0}
  .writer-name{font-family:'Yomogi',cursive;font-size:15px;color:var(--ink)}
  .writer-role{font-size:11.5px;color:var(--ink-soft);margin-top:1px}

  .lead{font-size:14.5px;color:var(--ink);background:var(--bg);border-left:4px solid var(--yellow);border-radius:2px;padding:14px 16px;margin-bottom:24px}

  .toc{background:var(--bg);border:1px solid var(--line);border-radius:16px;padding:16px 18px;margin-bottom:28px}
  .toc-title{font-family:'Yomogi',cursive;font-size:14px;color:var(--ink);margin-bottom:8px;display:flex;align-items:center;gap:6px}
  .toc-title svg{width:15px;height:15px;color:var(--green)}
  .toc ol{list-style:none;counter-reset:toc}
  .toc li{counter-increment:toc;font-size:13px;margin-bottom:6px}
  .toc li::before{content:counter(toc);display:inline-block;width:16px;height:16px;background:var(--green);color:#fff;border-radius:50%;font-size:10px;text-align:center;line-height:16px;margin-right:6px}
  .toc a{color:var(--ink);text-decoration:none;border-bottom:1px dotted var(--line)}
  .toc a:hover{border-color:var(--ink)}

  /* h1と同じ理由(英字混じりの見出しでの不自然な改行防止) */
  h2{font-family:'Yomogi',cursive;font-weight:400;font-size:19px;color:var(--ink);margin:32px 0 12px;padding-left:12px;border-left:4px solid var(--green);border-radius:2px;scroll-margin-top:20px;word-break:keep-all;overflow-wrap:break-word}
  h2:first-of-type{margin-top:0}
  h3{font-family:'Yomogi',cursive;font-weight:400;font-size:16px;color:var(--ink);margin:20px 0 8px;word-break:keep-all;overflow-wrap:break-word}
  p{font-size:14.5px;color:var(--ink);margin-bottom:14px}

  /* 分類カード */
  .type-card{border:1px solid var(--line);border-radius:16px;padding:16px 18px;margin-bottom:12px;background:var(--bg)}
  .type-tag{display:inline-block;font-size:11px;font-weight:600;border-radius:6px;padding:3px 10px;margin-bottom:8px}
  .tag-national{background:#e8f0ea;color:#5b8a6e}
  .tag-public{background:#eef2f7;color:#5c7a99}
  .tag-private{background:#f5efe6;color:#a08556}
  .type-card p{font-size:13.5px;margin-bottom:8px}
  .type-card p:last-child{margin-bottom:0}
  .type-ex{font-size:12.5px;color:var(--ink-soft)}

  /* 内訳の棒グラフ */
  .stat-box{background:var(--bg);border:1px solid var(--line);border-radius:16px;padding:18px;margin:18px 0}
  .stat-row{margin-bottom:14px}
  .stat-row:last-child{margin-bottom:0}
  .stat-label{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:5px}
  .stat-label b{color:var(--ink)}
  .stat-label span{color:var(--ink-soft)}
  .stat-track{height:9px;background:#ece5da;border-radius:9px;overflow:hidden}
  .stat-fill{height:100%;border-radius:9px}
  .fill-national{background:#8fb89d}
  .fill-public{background:#9db4c9}
  .fill-private{background:#d6bd8c}
  .stat-note{font-size:11.5px;color:var(--ink-soft);margin-top:12px;line-height:1.7}

  .faq-item{border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:10px;background:var(--bg)}
  .faq-q{display:flex;gap:8px;font-family:'Yomogi',cursive;font-size:14.5px;color:var(--ink);margin-bottom:6px}
  .faq-q .tag{flex-shrink:0;color:var(--pink)}
  .faq-a{display:flex;gap:8px;font-size:13.5px;color:var(--ink-soft)}
  .faq-a .tag{flex-shrink:0;color:var(--green)}

  .cta-box{text-align:center;background:linear-gradient(135deg,var(--bg) 0%,#f1ede3 100%);border:1px solid var(--line);border-radius:18px;padding:26px 20px;margin:28px 0}
  .cta-box p{font-size:13.5px;color:var(--ink-soft);margin-bottom:14px}
  .cta-btn{font-family:'Yomogi',cursive;display:inline-flex;align-items:center;gap:8px;background:var(--green);color:#fff;font-size:15px;padding:12px 30px;border-radius:40px;text-decoration:none;box-shadow:0 10px 22px -12px rgba(120,150,125,.7)}
  .cta-btn svg{width:17px;height:17px}

  .related{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
  .related a{font-size:12.5px;background:var(--bg);border:1px solid var(--line);border-radius:20px;padding:6px 14px;color:var(--ink);text-decoration:none}
  .related a:hover{border-color:var(--green)}
  .related-soon{font-size:12.5px;background:var(--bg);border:1px dashed var(--line);border-radius:20px;padding:6px 14px;color:var(--ink-soft);display:inline-flex;align-items:center;gap:5px}
  .related-soon small{font-size:10px;background:var(--line);border-radius:10px;padding:1px 7px}

  .disclaimer{font-size:11px;color:var(--ink-soft);text-align:center;line-height:1.8;margin-top:24px}

  footer{padding:26px 22px 40px;text-align:center}
  .fmenu{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;margin-bottom:10px}
  .fmenu a{color:var(--ink-soft);font-size:12px;text-decoration:none;border-bottom:1px solid transparent}
  .fmenu a:hover{border-color:var(--ink-soft)}
  .copy{font-size:11px;color:var(--ink-soft)}

  a:focus-visible,button:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:6px}

  @media(max-width:480px){
    header{padding:20px 18px 12px}
    .card{padding:24px 18px;border-radius:20px}
    h1{font-size:21px}
  }

  /* ---- 記事共通の追加パーツ ---- */
  /* データの時点表示(件数など、時間で変わる数字に添える) */
  .as-of{font-size:11.5px;color:var(--ink-soft);white-space:nowrap}
  /* 箇条書き */
  .art-list{margin:0 0 14px 0;padding-left:2px;list-style:none}
  .art-list li{font-size:14.5px;color:var(--ink);margin-bottom:8px;padding-left:20px;position:relative}
  .art-list li::before{content:"";position:absolute;left:4px;top:11px;width:6px;height:6px;border-radius:50%;background:var(--green)}
  /* 補足ボックス */
  .note-box{background:var(--bg);border-left:4px solid var(--blue);border-radius:2px;padding:13px 15px;margin-bottom:16px}
  .note-box p{font-size:13.5px;margin-bottom:0;color:var(--ink-soft)}
  /* 2列の比較表 */
  .cmp{width:100%;border-collapse:collapse;margin-bottom:16px;font-size:13.5px}
  .cmp th,.cmp td{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}
  .cmp th{background:var(--bg);color:var(--ink-soft);font-weight:500;width:34%}

  /* ============================================================
     記事の動き。色やフォントは今までどおりで、読みやすさのために
     動きだけを足しています。
     「アニメーションを減らす」設定の方には、すべて無効になります。
  ============================================================ */

  /* 読書の進み具合を示す細い線(画面の一番上) */
  .read-bar{position:fixed;top:0;left:0;height:3px;width:0;z-index:100;
    background:linear-gradient(90deg,var(--green),var(--yellow));
    border-radius:0 3px 3px 0;transition:width .1s linear}

  /* スクロールに合わせて、ふわっと現れる */
  .rise{opacity:0;transform:translateY(16px);
    transition:opacity .65s ease,transform .65s cubic-bezier(.22,.8,.28,1)}
  .rise.in{opacity:1;transform:none}

  /* 見出しの左の縦線を、現れるときに伸ばす */
  h2{position:relative;border-left-color:transparent}
  h2::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;
    background:var(--green);border-radius:2px;transform:scaleY(0);transform-origin:top;
    transition:transform .5s cubic-bezier(.22,.8,.28,1) .1s}
  h2.in::before{transform:scaleY(1)}

  /* 統計バーは、画面に入ったときに伸びる */
  .stat-fill{width:0;transition:width 1.1s cubic-bezier(.22,.8,.28,1)}

  /* 目次の項目に、今読んでいる位置の印をつける */
  .toc a{position:relative;transition:color .2s}
  .toc li.on a{color:var(--ink);font-weight:700;border-color:var(--green)}
  .toc li.on::before{background:var(--yellow)}

  /* カードに軽い浮き上がり */
  .type-card,.faq-item{transition:transform .2s ease,box-shadow .2s ease}
  .type-card:hover,.faq-item:hover{transform:translateY(-2px);
    box-shadow:0 10px 26px -20px rgba(120,105,85,.5)}

  /* 診断ボタンをゆっくり呼吸させる(気づいてもらうため) */
  @keyframes ctaBreathe{
    0%,100%{box-shadow:0 10px 22px -12px rgba(120,150,125,.7)}
    50%{box-shadow:0 14px 30px -12px rgba(120,150,125,.95)}
  }
  .cta-btn{animation:ctaBreathe 3.4s ease-in-out infinite;transition:transform .2s}
  .cta-btn:hover{transform:translateY(-2px);animation-play-state:paused}

  @media(prefers-reduced-motion:reduce){
    .read-bar{display:none}
    .rise{opacity:1;transform:none;transition:none}
    h2::before{transform:scaleY(1);transition:none}
    .stat-fill{transition:none}
    .cta-btn{animation:none}
    .type-card:hover,.faq-item:hover{transform:none}
  }

  /* 記事末尾の「もどる」ボタン(スクロールでふわっと表示) */
  .article-back{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;
    margin:32px 0 8px;opacity:0;transform:translateY(16px);
    transition:opacity .6s ease,transform .6s cubic-bezier(.22,.8,.28,1)}
  .article-back.in{opacity:1;transform:none}
  .back-btn{display:inline-flex;align-items:center;gap:7px;font-family:'Yomogi',cursive;
    font-size:14.5px;text-decoration:none;border-radius:30px;padding:11px 22px;
    background:var(--green);color:#fff;transition:transform .25s cubic-bezier(.34,1.5,.44,1)}
  .back-btn svg{width:15px;height:15px}
  .back-btn:hover{transform:translateY(-2px)}
  .back-btn:active{transform:scale(.96)}
  @media(prefers-reduced-motion:reduce){
    .article-back{opacity:1;transform:none;transition:none}
  }

  /* ===== 記事を開いた瞬間の「本を開く」演出 =====
     JSが動的に生成し、画面いっぱいに固定表示してから開いて消す。
     記事の長さに関わらず、アイコンと文字は常に画面中央に来る。 */
  /* 白い画面からいきなり緑の表紙に切り替わると唐突なので、
     ページ読み込み直後にふわっと現れるようにする。
     JSの実行を待たず、CSSのanimationだけで自動的に始まるので、
     「本文が一瞬先に見えてしまう」問題は起きない。 */
  .book-cover{position:fixed;inset:0;z-index:200;
    background:linear-gradient(135deg,#BDEAC2,#5BAD76);
    display:flex;align-items:center;justify-content:center;
    transform-origin:left center;backface-visibility:hidden;
    animation:bookCoverFadeIn .4s ease both}
  @keyframes bookCoverFadeIn{from{opacity:0}to{opacity:1}}
  @media(prefers-reduced-motion:reduce){
    .book-cover{animation:none}
  }
  /* 退場: 表紙が本のように開いて消える */
  .book-cover-open{transform:rotateY(-115deg);opacity:0;pointer-events:none;
    transition:transform .85s cubic-bezier(.6,0,.3,1),opacity .35s ease .55s}
  .book-cover-inner{display:flex;flex-direction:column;align-items:center;gap:14px;
    padding:0 30px;text-align:center;max-width:440px}
  .book-cover-inner svg{width:44px;height:44px;flex-shrink:0}
  /* word-break:keep-allで、英単語(FITなど)や漢字の熟語の途中で
     不自然に改行されるのを防ぐ。長すぎる場合の折り返し自体は
     overflow-wrapが受け持つので、画面からはみ出す心配もない。 */
  .book-cover-tx{font-family:'Yomogi',cursive;font-size:17px;color:#fff;
    line-height:1.6;text-shadow:0 2px 8px rgba(0,0,0,.12);
    word-break:keep-all;overflow-wrap:break-word}
  body.book-locked{overflow:hidden}

  /* ほかの記事へのリンク。
     「あわせて読みたい」はJavaScriptで資格記事を出しているが、
     JSを実行しないクローラーからは記事同士が孤立して見えてしまう。
     そこでHTMLとして実体のあるリンクを別に置いている。 */
  .more-articles{margin:28px 0 8px;padding:18px 20px;
    background:var(--bg);border:1px solid var(--line);border-radius:16px}
  .more-articles h3{font-family:'Yomogi',cursive;font-weight:400;font-size:15px;color:var(--ink);
    margin:0 0 10px;padding:0;border:none}
  .more-articles ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
  .more-articles li{font-size:13.5px;line-height:1.7}
  .more-articles a{color:var(--ink);text-decoration:none;
    display:inline-flex;align-items:baseline;gap:6px}
  .more-articles a::before{content:"—";color:var(--green);flex-shrink:0}
  .more-articles a:hover{color:var(--green)}
