/* 問題集/ハブ等のプラグイン専用ページが全幅テンプレ(page-forfront)でなくSANGO標準テンプレで
   作られていても、右サイドバーを消して本文を全幅化する。対象は body_class フィルタで付与する
   .spi-fullwidth-page 限定（単元ナビwidget付きの通常記事＝spi-hub.css同居でもサイドバー維持）。 */
body.spi-fullwidth-page .sidebar,body.spi-fullwidth-page .normal-sidebar,body.spi-fullwidth-page .fixed-sidebar{display:none !important}
body.spi-fullwidth-page #content .d-5of7,body.spi-fullwidth-page #content .t-2of3{width:100% !important}

/* spi-exam ハブページ セクションナビ + セクション */
.spi-exam-hub-nav{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:32px;}
.spi-exam-hub-nav-btn{flex:1;min-width:140px;display:flex;align-items:center;justify-content:center;gap:6px;padding:13px 10px;background:#fff;border:2px solid #D8F3F0;border-radius:10px;font-size:14px;font-weight:700;color:#22312f !important;text-decoration:none !important;transition:border-color .15s,background .15s;text-align:center;}
.spi-exam-hub-nav-btn:hover{border-color:#26A69A;background:#F0FAFA;}
.spi-exam-hub-section{margin-bottom:48px;}
.spi-exam-hub-section-head{display:flex;align-items:center;gap:10px;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid #26A69A;}
.spi-exam-hub-section-title{font-size:20px;font-weight:900;color:#22312f;margin:0;padding:0;border:none;background:none;}
.spi-exam-hub-section-lead{font-size:13px;color:#5f6f6c;margin:4px 0 0;}
.spi-exam-hub-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:14px;}
.spi-exam-hub-unit-card{display:flex;align-items:center;gap:7px;padding:10px 12px;background:#fff;border:1.5px solid #D8F3F0;border-radius:8px;font-size:13px;font-weight:500;color:#22312f !important;text-decoration:none !important;transition:border-color .15s;}
.spi-exam-hub-unit-card:hover{border-color:#26A69A;background:#F0FAFA;}
.spi-exam-hub-unit-card::before{content:'›';display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;min-width:18px;background:#3b7fd4;color:#fff;border-radius:50%;font-size:13px;font-weight:700;}
.spi-exam-hub-more{display:inline-block;margin-top:12px;font-size:13px;font-weight:700;color:#26A69A !important;text-decoration:none !important;}
.spi-exam-hub-more:hover{text-decoration:underline !important;}
.spi-exam-hub-seikaku-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;}
.spi-exam-hub-seikaku-card{display:block;background:#fff;border:1.5px solid #D8F3F0;border-radius:10px;padding:14px 16px;text-decoration:none !important;color:#22312f !important;transition:border-color .15s;}
.spi-exam-hub-seikaku-card:hover{border-color:#26A69A;}
.spi-exam-hub-seikaku-card .label{font-size:11px;font-weight:700;color:#26A69A;margin-bottom:4px;}
.spi-exam-hub-seikaku-card .name{font-size:14px;font-weight:700;}
.spi-exam-hub-seikaku-card .desc{font-size:12px;color:#5f6f6c;margin-top:3px;}

/* 問題ページ・topページではSPI単元一覧以外のサイドバーウィジェットを非表示 */
.spi-mondai-page .widget:not(.widget_spi_unit_nav) { display: none !important; }

/* 単元一覧ウィジェットのタイトル（「単元一覧」見出し）を非表示 */
.spi-mondai-page .widget_spi_unit_nav .widget-title,
.spi-mondai-page .widget_spi_unit_nav h2 { display: none !important; }

/* [spi_hub] — SPI単元別ハブページ（careermine風 サイドバー）。
   reset を読み込まないため、テーマ(SANGO)の entry-content 干渉を .spi-hub 配下で打ち消す。 */
.spi-hub{
  --g:#26A69A;--gd:#1f8a80;--gl:#E4F8F6;--blue:#4a7fd0;--amber:#e8a13a;--red:#e04e4e;
  --ink:#22312f;--sub:#5f6f6c;--line:#e3ecea;
  font-family:'Noto Sans JP',sans-serif;color:var(--ink);line-height:1.7;
  max-width:1120px;margin:0 auto;padding:0 4px 56px;
}
.spi-hub *{box-sizing:border-box;}
.spi-hub a{color:inherit !important;text-decoration:none !important;box-shadow:none !important;}
.spi-hub ul,.spi-hub li{list-style:none !important;margin:0 !important;padding:0 !important;background:none !important;}
.spi-hub ul:before,.spi-hub li:before{content:none !important;display:none !important;}
.spi-hub h2,.spi-hub h3{margin:0;padding:0;border:none;background:none;line-height:1.4;}

/* ヘッダー */
.spi-hub-hero{text-align:center;padding:30px 18px 24px;background:linear-gradient(160deg,#2bb6a8,var(--gd));color:#fff;border-radius:16px;margin-bottom:18px;}
.spi-hub-hero h2{font-size:23px;font-weight:900;color:#fff;margin:0 0 7px;}
.spi-hub-hero p{font-size:13px;margin:0 auto;max-width:520px;opacity:.95;color:#fff;}
.spi-hub-hero .stats{display:flex;gap:9px;justify-content:center;margin-top:14px;flex-wrap:wrap;}
.spi-hub-hero .stat{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3);border-radius:999px;padding:4px 13px;font-size:11.5px;font-weight:700;}

/* ツールバー（フィルタ＋検索） */
.spi-hub-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 14px;margin-bottom:16px;}
.spi-hub-tlabel{font-size:11.5px;font-weight:700;color:var(--sub);}
.spi-hub-chips{display:flex;gap:7px;flex-wrap:wrap;}
.spi-hub-chip{appearance:none;cursor:pointer;font-family:inherit;font-size:12.5px;font-weight:700;padding:6px 13px;border-radius:999px;border:2px solid var(--line);background:#fff;color:var(--sub);transition:all .15s;}
.spi-hub-chip:hover{border-color:var(--g);color:var(--gd);}
.spi-hub-chip.is-active{background:var(--amber);border-color:var(--amber);color:#fff;}
.spi-hub-search{flex:1;min-width:170px;position:relative;}
.spi-hub-search input{width:100%;padding:9px 12px 9px 34px;font-size:13.5px;font-family:inherit;border:2px solid var(--line);border-radius:10px;color:var(--ink);background:#fff;}
.spi-hub-search input:focus{outline:none;border-color:var(--g);}
.spi-hub-search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);opacity:.4;}

/* 2カラム */
.spi-hub-layout{display:grid;grid-template-columns:230px 1fr;gap:24px;align-items:start;}
@media(max-width:820px){.spi-hub-layout{grid-template-columns:1fr;gap:14px;}}

/* サイドバー */
.spi-hub-side{position:sticky;top:80px;align-self:start;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 12px;max-height:calc(100vh - 96px);overflow:auto;}
@media(max-width:820px){.spi-hub-side{position:static;max-height:none;}}
.spi-hub-side-ttl{font-size:12.5px;font-weight:900;color:var(--gd);margin:0 0 9px;letter-spacing:.04em;}
.spi-hub-fgroup{font-size:10.5px;font-weight:700;color:var(--sub);margin:13px 0 5px;padding-bottom:4px;border-bottom:1px dashed var(--line);}
.spi-hub-fgroup.first{margin-top:0;}
.spi-hub-navlink{display:flex !important;justify-content:space-between;align-items:center;gap:8px;padding:6px 9px;border-radius:7px;font-size:12.5px;font-weight:500;transition:background .12s;}
.spi-hub-navlink:hover{background:var(--gl);}
.spi-hub-navlink.active{background:var(--g);color:#fff !important;font-weight:700;}
.spi-hub-navlink .c{font-size:10px;opacity:.6;font-weight:700;}
.spi-hub-navlink.active .c{opacity:.85;}

/* メイン */
.spi-hub-main{min-width:0;}
.spi-hub-unit{background:#fff;border:1px solid var(--line);border-radius:12px;margin-bottom:14px;overflow:hidden;scroll-margin-top:84px;}
.spi-hub-uhead{padding:13px 16px;display:flex;justify-content:space-between;align-items:center;gap:10px;background:linear-gradient(180deg,#fff,#fbfdfd);}
.spi-hub-uhead .l{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.spi-hub-uhead h3{font-size:16px;font-weight:900;}
.spi-hub-uhead .field{font-size:10px;font-weight:700;padding:2px 8px;border-radius:5px;background:var(--gl);color:var(--gd);}
.spi-hub-uhead .qn{font-size:11px;font-weight:700;color:var(--blue);background:#eef2fb;padding:3px 9px;border-radius:6px;}
.spi-hub-open{font-size:11.5px;font-weight:700;color:var(--gd) !important;white-space:nowrap;}
.spi-hub-open:hover{text-decoration:underline !important;}

.spi-hub-mini{display:flex !important;align-items:center;gap:10px;padding:10px 16px;background:var(--gl);border-top:1px solid var(--line);}
.spi-hub-mini .badge{font-size:10px;font-weight:900;color:#fff;background:var(--g);padding:3px 9px;border-radius:5px;white-space:nowrap;}
.spi-hub-mini .t{font-size:12.5px;font-weight:700;flex:1;}
.spi-hub-mini .go{font-size:11.5px;font-weight:700;color:var(--gd);white-space:nowrap;}

.spi-hub-empty{padding:13px 16px;font-size:12px;color:var(--sub);}
.spi-hub-hidden{display:none !important;}

/* 問題行トグルボタン */
.spi-mhub-ptoggle{all:unset;box-sizing:border-box;cursor:pointer;display:flex;width:100%;align-items:center;gap:11px;padding:9px 16px;transition:background .1s;}
.spi-mhub-ptoggle:hover{background:#f7fbfa;}
.spi-mhub-ptoggle.is-open{background:#f0fafa;}
.spi-mhub-chevron{margin-left:auto;flex-shrink:0;opacity:.35;transition:transform .15s,opacity .15s;}
.spi-mhub-ptoggle.is-open .spi-mhub-chevron{transform:rotate(90deg);opacity:.65;}

/* インラインquizカード */
.spi-mhub-qcard{padding:12px 16px 14px;background:#f8fdfc;border-top:1px solid var(--line);}
.spi-mhub-qtext{font-size:14px;font-weight:600;margin:0 0 10px;color:var(--ink);line-height:1.6;}
.spi-mhub-clist{list-style:none !important;margin:0 !important;padding:0 !important;display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.spi-mhub-choice{cursor:pointer;padding:7px 10px !important;border:1.5px solid var(--line);border-radius:7px;font-size:13px;background:#fff;transition:all .12s;display:flex !important;align-items:center;gap:7px;margin:0 !important;}
.spi-mhub-choice::before{content:none !important;}
.spi-mhub-choice:hover{border-color:var(--g);background:#f0fafa;}
.spi-mhub-choice.is-correct{background:#e6f7f0;border-color:var(--g);font-weight:700;color:var(--gd);}
.spi-mhub-choice.is-wrong{background:#fef2f2;border-color:var(--red);color:var(--red);}
.spi-mhub-cletter{font-weight:900;font-size:11px;color:#999;min-width:14px;flex-shrink:0;}
.spi-mhub-choice.is-correct .spi-mhub-cletter{color:var(--gd);}
.spi-mhub-choice.is-wrong   .spi-mhub-cletter{color:var(--red);}
.spi-mhub-expl{margin-top:10px;font-size:13px;color:var(--sub);background:#fff;border:1px solid var(--line);border-radius:7px;padding:9px 12px;line-height:1.65;}
@media(max-width:600px){.spi-mhub-clist{grid-template-columns:1fr;}}

/* 模試CTA */
.spi-hub-cta{text-align:center;margin-top:20px;padding:24px 20px;background:var(--gl);border-radius:12px;}
.spi-hub-cta-text{font-size:14.5px;font-weight:700;color:var(--ink);margin:0 0 13px;}
.spi-hub-cta-btn{display:inline-flex !important;align-items:center;gap:8px;padding:13px 26px;background:var(--blue);color:#fff !important;font-size:14.5px;font-weight:700;border-radius:9px;transition:background .15s;}
.spi-hub-cta-btn:hover{background:#3a6bb8;}

/* 単元アンカー（固定ヘッダー分のオフセット） */
.spi-hub-anchor{display:block;position:relative;top:-72px;visibility:hidden;height:0;}

/* ================================================================
   [spi_hub_toc] — careermine風 単元ナビサイドバー
   ================================================================ */
.spi-toc {
    position: fixed;
    top: 90px;
    right: 0;
    width: 240px;
    max-height: calc(100vh - 110px);
    overflow-y: auto;
    background: #fff;
    border: 1px solid #d8dde3;
    border-right: none;
    border-radius: 4px 0 0 4px;
    box-shadow: -2px 0 8px rgba(0,0,0,.07);
    z-index: 999;
    transition: transform .2s ease;
    font-family: 'Noto Sans JP', sans-serif;
}
.spi-toc.is-collapsed { transform: translateX(240px); }

/* 開閉タブ */
.spi-toc-tab {
    position: absolute;
    left: -28px;
    top: 12px;
    width: 28px;
    height: 52px;
    background: #5d6876;
    border: none;
    border-radius: 4px 0 0 4px;
    cursor: pointer;
    color: #fff;
    font-size: 9.5px;
    font-weight: 700;
    font-family: 'Noto Sans JP', sans-serif;
    writing-mode: vertical-rl;
    letter-spacing: .06em;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    line-height: 1;
}
.spi-toc-tab:hover { background: #4a5564; }

/* カテゴリ見出し（careermine: ダークグレー背景・白テキスト） */
.spi-toc-head {
    background: #5d6876;
    color: #fff !important;
    font-size: 13px;
    font-weight: 700;
    margin: 0;
    padding: 9px 12px;
    letter-spacing: .02em;
    line-height: 1.3;
}

/* 単元リスト */
.spi-toc-list {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #f5f7f9;
}
.spi-toc-list li {
    margin: 0 !important;
    padding: 0 !important;
    background: none !important;
    border-bottom: 1px solid #e4e8ec !important;
}
.spi-toc-list li:last-child { border-bottom: none !important; }
.spi-toc-list li::before { content: none !important; display: none !important; }

/* 単元リンク（careermine: 青丸 > アイコン + テキスト） */
.spi-toc-list a {
    display: flex !important;
    align-items: center;
    gap: 8px;
    padding: 9px 10px !important;
    font-size: 12.5px;
    color: #333 !important;
    text-decoration: none !important;
    background: #f5f7f9;
    transition: background .1s;
    line-height: 1.4;
}
.spi-toc-list a::before {
    content: '›';
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    min-width: 20px;
    background: #3b7fd4;
    color: #fff !important;
    border-radius: 50%;
    font-size: 14px;
    font-weight: 700;
    line-height: 1;
    padding-left: 1px;
}
.spi-toc-list a:hover { background: #e8eef5 !important; }
.spi-toc-list a.is-active {
    background: #e8f0fc !important;
    color: #2563b0 !important;
    font-weight: 700;
}
.spi-toc-list a.is-active::before { background: #2563b0; }

/* カテゴリ間の区切り */
.spi-toc-list + .spi-toc-head { margin-top: 0; }

@media (max-width: 1100px) { .spi-toc { display: none; } }

/* ================================================================
   SPI単元一覧ウィジェット（SANGOサイドバー用）
   ================================================================ */
.widget.widget_spi_unit_nav { background: transparent; }
.spi-unit-nav-widget,
.spi-unit-nav-mobile {
    --unw-green: #26A69A;
    --unw-green-dark: #1f8a80;
    --unw-green-soft: #E4F8F6;
    --unw-blue: #4a7fd0;
    --unw-line: #06C755;
    --unw-line-dark: #04ad49;
    --unw-ink: #253230;
    --unw-sub: #677572;
    --unw-hair: #dfe9e7;
    font-family: 'Noto Sans JP', sans-serif;
    color: var(--unw-ink);
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
}
.spi-unit-nav-widget *,
.spi-unit-nav-mobile * { box-sizing: border-box; }
.spi-unit-nav-widget p,
.spi-unit-nav-widget ol,
.spi-unit-nav-widget ul,
.spi-unit-nav-widget h3,
.spi-unit-nav-mobile p,
.spi-unit-nav-mobile ol,
.spi-unit-nav-mobile ul,
.spi-unit-nav-mobile h3 { margin: 0; }
.spi-unit-nav-widget a,
.spi-unit-nav-mobile a { box-shadow: none !important; }

/* PC：CTAと学習ルートは残し、単元棚だけを内部スクロールさせる。 */
.spi-unit-nav-widget {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
    min-width: 0;
    padding: 10px;
    overflow: visible;
    background: #fff;
    border: 1px solid var(--unw-hair);
    border-radius: 16px;
    /* 2026-09-08 オーナー「外側の影消して」＝ウィジェット外周の影を撤去（`0 10px 30px rgba(31,76,70,.09)`）。
       初回プロト（v210・2026-07-21）で白カード化したときに一緒に入れただけで、オーナー指示ではなかった。
       ⚠ 枠線（1px `--unw-hair`）は残す＝輪郭が消えると背景と地続きになる。中のアコーディオン（.spi-unw-acc）は
          元から影なし＝この1行だけで「二重に浮いて見える」状態が終わる。 */
}

/* LINE CTA：淡い教材カード。静的HTMLでは target を付けない。 */
.spi-unw-cta {
    position: relative;
    flex: 0 0 auto;
    overflow: hidden;
    padding: 17px 14px 14px;
    text-align: center;
    background:
        radial-gradient(circle at 108% -8%, rgba(38, 166, 154, .16) 0 74px, transparent 75px),
        linear-gradient(150deg, #fbfffe 0%, #f2fbf9 100%);
    border: 1px solid #bfe7e2;
    border-top: 3px solid var(--unw-green);
    border-radius: 13px;
}
.spi-unw-cta::after {
    content: '';
    position: absolute;
    right: -28px;
    bottom: -40px;
    width: 105px;
    height: 105px;
    border: 1px solid rgba(38, 166, 154, .11);
    border-radius: 50%;
    pointer-events: none;
}
.spi-unw-cta-icon {
    position: absolute;
    top: 11px;
    right: 12px;
    display: grid;
    width: 31px;
    height: 31px;
    place-items: center;
    color: var(--unw-green-dark);
    background: rgba(255, 255, 255, .72);
    border: 1px solid rgba(38, 166, 154, .2);
    border-radius: 50%;
}
.spi-unw-cta-eyebrow {
    padding-right: 30px;
    color: var(--unw-green-dark);
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: .08em;
    text-align: left;
}
.spi-unw-cta-title {
    position: relative;
    z-index: 1;
    margin-top: 8px !important;
    color: var(--unw-ink);
    font-size: 17px;
    font-weight: 800;
    line-height: 1.45;
    letter-spacing: .01em;
}
.spi-unw-cta-title strong { color: var(--unw-green-dark); font-weight: 900; }
.spi-unw-cta-steps {
    position: relative;
    z-index: 1;
    display: grid;
    gap: 4px;
    margin: 11px 0 12px !important;
    padding: 7px 9px !important;
    list-style: none !important;
    text-align: left;
    background: rgba(255, 255, 255, .72) !important;
    border: 1px solid #dcebe8 !important;
    border-radius: 9px;
    box-shadow: none !important;
}
.spi-unw-cta-steps li {
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 0 !important;
    padding: 0 !important;
    color: var(--unw-sub);
    font-size: 11px;
    font-weight: 600;
    line-height: 1.45;
    list-style: none !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}
.spi-unw-cta-steps li::before { content: none !important; }
.spi-unw-cta-steps li > span {
    display: inline-grid;
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    place-items: center;
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    background: var(--unw-green);
    border-radius: 50%;
}
.spi-unw-line {
    position: relative;
    z-index: 2;
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 49px;
    padding: 10px 32px 10px 12px !important;
    color: #fff !important;
    font-size: 12.5px;
    font-weight: 800;
    line-height: 1.35;
    text-align: center;
    text-decoration: none !important;
    background: var(--unw-line);
    border-radius: 25px;
    box-shadow: 0 7px 16px rgba(6, 199, 85, .28), 0 3px 0 rgba(2, 132, 52, .65) !important;
    transition: background .15s ease, transform .15s ease, box-shadow .15s ease;
}
.spi-unw-line:hover {
    color: #fff !important;
    background: var(--unw-line-dark);
    transform: translateY(-1px);
}
.spi-unw-line:active {
    transform: translateY(2px);
    box-shadow: 0 3px 9px rgba(6, 199, 85, .25), 0 1px 0 rgba(2, 132, 52, .65) !important;
}
.spi-unw-line img {
    flex: 0 0 25px;
    width: 25px !important;
    height: 25px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    object-fit: contain;
}
.spi-unw-line-arrow {
    position: absolute;
    top: 50%;
    right: 14px;
    color: #fff;
    font-size: 22px;
    font-weight: 500;
    transform: translateY(-52%);
}
.spi-unw-cta-note {
    position: relative;
    z-index: 1;
    margin-top: 9px !important;
    color: var(--unw-sub);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .04em;
}

/* 現在地→次の一問を、縦の学習ルートとして表現。 */
.spi-unw-route {
    flex: 0 0 auto;
    padding: 11px 11px 10px;
    background: #fff;
    border: 1px solid var(--unw-hair);
    border-radius: 12px;
}
.spi-unw-section-label {
    margin: 0 0 7px !important;
    color: var(--unw-sub);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.spi-unw-route-track { position: relative; display: grid; gap: 5px; }
.spi-unw-route-track::before {
    content: '';
    position: absolute;
    top: 22px;
    bottom: 22px;
    left: 14px;
    width: 2px;
    background: linear-gradient(var(--unw-green), #b9d9e9);
}
.spi-unw-route-item {
    position: relative;
    z-index: 1;
    display: flex !important;
    align-items: center;
    gap: 9px;
    min-width: 0;
    padding: 8px !important;
    color: var(--unw-ink) !important;
    text-decoration: none !important;
    border-radius: 9px;
}
.spi-unw-route-item--current { background: var(--unw-green-soft); }
.spi-unw-route-item--next {
    border: 1px solid #d9e6ef;
    background: #f8fbfe;
    transition: border-color .15s ease, background .15s ease, transform .15s ease;
}
.spi-unw-route-item--next:hover {
    color: var(--unw-ink) !important;
    background: #eef5fc;
    border-color: #aac4e6;
    transform: translateX(2px);
}
.spi-unw-route-marker {
    display: inline-grid;
    flex: 0 0 29px;
    width: 29px;
    height: 29px;
    place-items: center;
    color: #fff;
    font-size: 11px;
    font-weight: 900;
    background: var(--unw-green);
    border: 3px solid #fff;
    border-radius: 50%;
    box-shadow: 0 0 0 1px rgba(38, 166, 154, .18);
}
.spi-unw-route-item--next .spi-unw-route-marker { background: var(--unw-blue); }
.spi-unw-route-copy { display: flex; flex: 1 1 auto; min-width: 0; flex-direction: column; }
.spi-unw-route-copy strong {
    overflow: hidden;
    font-size: 12.5px;
    font-weight: 800;
    line-height: 1.45;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.spi-unw-route-kicker { color: var(--unw-sub); font-size: 9.5px; font-weight: 700; }
.spi-unw-route-count {
    flex: 0 0 auto;
    padding: 2px 7px;
    color: var(--unw-green-dark);
    font-size: 9.5px;
    font-weight: 800;
    background: #fff;
    border-radius: 999px;
}
.spi-unw-route-arrow { flex: 0 0 auto; color: var(--unw-blue); font-size: 15px; font-weight: 800; }

/* 長い単元棚。PC追従はSANGOの #fixed_sidebar に委譲する。 */
.spi-unw-scroll {
    padding-right: 3px;
    overflow: visible;
}
/* 追尾サイドバー（PCのみ）で長い一覧が画面外に見切れないよう、PC幅ではウィジェットを画面高に収め内部スクロール（オーナー「追従で出したい」 2026-07-21） */
@media (min-width: 1101px) {
    .spi-unit-nav-widget--desktop { max-height: calc(100vh - 96px); overflow: hidden; }
    .spi-unit-nav-widget--desktop .spi-unw-scroll {
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
        overscroll-behavior: contain;
        scrollbar-width: thin;
        scrollbar-color: #b8c9c6 transparent;
    }
}
.spi-unw-scroll::-webkit-scrollbar { width: 6px; }
.spi-unw-scroll::-webkit-scrollbar-thumb { background: #b8c9c6; border-radius: 8px; }
.spi-unw-navigation { display: block; }
/* テスト別アコーディオン（初回プロトのデザイン 2026-07-21） */
.spi-unw-navlabel { margin: 2px 2px 8px !important; font-size: 11.5px; font-weight: 800; letter-spacing: .04em; color: var(--unw-sub); }
.spi-unw-acc { margin: 0 0 10px; background: #fff; border: 1px solid var(--unw-hair); border-radius: 12px; overflow: hidden; }
.spi-unw-acc > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 9px; padding: 13px 14px; font-size: 15px; font-weight: 800; color: var(--unw-ink); }
.spi-unw-acc > summary::-webkit-details-marker { display: none; }
.spi-unw-acc-dot { flex: 0 0 auto; width: 10px; height: 10px; border-radius: 3px; background: var(--acc, var(--unw-green)); }
.spi-unw-acc-name { flex: 1 1 auto; }
.spi-unw-acc-chev { flex: 0 0 auto; width: 8px; height: 8px; border-right: 2px solid #b4bbc4; border-bottom: 2px solid #b4bbc4; transform: rotate(45deg); transition: transform .2s; }
.spi-unw-acc[open] .spi-unw-acc-chev { transform: rotate(-135deg); }
.spi-unw-acc-body { padding: 2px 10px 12px; border-top: 1px solid var(--unw-hair); }
.spi-unw-acc-sec { display: flex !important; align-items: center; gap: 6px; margin: 14px 2px 7px !important; font-size: 12px; font-weight: 800; letter-spacing: .02em; color: #333d45; }
.spi-unw-acc-sec::before { content: ''; flex: 0 0 auto; width: 3px; height: 13px; border-radius: 2px; background: var(--acc, var(--unw-green)); }
.spi-unw-acc-sec:first-child { margin-top: 4px !important; }
/* 「単元で練習」は自分のテストの記事でだけ出す（2026-08-17 オーナー指示）。出し分けはPHP側＝
   `$units_visible`（spi-exam.php）で、他テストの記事にはそもそも出力しない。
   ⚠ ここにCSSで隠す指定を足さない（隠すと計測だけ回って実態とズレる）。 */
.spi-unw-fieldlbl { margin: 10px 2px 4px !important; font-size: 11px; font-weight: 800; color: #9aa2ad; }
.spi-unw-artlist { list-style: none !important; margin: 0 !important; padding: 0 !important; }
.spi-unw-artlist li { margin: 0 !important; padding: 0 !important; background: none !important; border-bottom: 1px solid var(--unw-hair) !important; }
.spi-unw-artlist li:last-child { border-bottom: none !important; }
.spi-unw-artlist li::before { content: none !important; display: none !important; }
.spi-unw-artlist a { display: block !important; padding: 8px 6px !important; font-size: 12.5px; line-height: 1.45; color: var(--unw-ink) !important; text-decoration: none !important; }
.spi-unw-artlist a:hover { color: var(--unw-green-dark) !important; background: var(--unw-green-soft); border-radius: 6px; }
/* スマホではサイドバー/ナビを一切出さない（オーナー指示 2026-07-21） */
@media (max-width: 1100px) {
    .spi-unit-nav-widget,
    .spi-unit-nav-mobile { display: none !important; }
}
/* 全単元リストは既定で折りたたみ、サイドバーを1画面に収める（スクロール回避 2026-07-21） */
.spi-unw-unitbox { margin: 0 0 10px; border: 1px solid var(--unw-hair); border-radius: 10px; overflow: hidden; background: #fff; }
.spi-unw-unitbox > summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 14px; font-size: 13.5px; font-weight: 800; color: var(--unw-ink); }
.spi-unw-unitbox > summary::-webkit-details-marker { display: none; }
.spi-unw-unitbox-chev { flex: 0 0 auto; width: 8px; height: 8px; border-right: 2px solid #9aa2ad; border-bottom: 2px solid #9aa2ad; transform: rotate(45deg); transition: transform .2s; }
.spi-unw-unitbox[open] .spi-unw-unitbox-chev { transform: rotate(-135deg); }
.spi-unw-unitbox-body { padding: 0 10px 10px; }
.spi-unw-unitbox-body .spi-unw-home { margin: 2px 0 8px; }
.spi-unw-home {
    display: flex !important;
    align-items: center;
    gap: 8px;
    margin: 0 0 9px;
    padding: 10px 11px !important;
    color: var(--unw-green-dark) !important;
    font-size: 11.5px;
    font-weight: 800;
    text-decoration: none !important;
    background: #f2faf9;
    border: 1px solid #d2ebe7;
    border-radius: 9px;
    transition: background .15s ease, border-color .15s ease;
}
.spi-unw-home::before {
    content: '';
    flex: 0 0 15px;
    width: 15px;
    height: 15px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15 5 8 12l7 7' fill='none' stroke='%231f8a80' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / 14px auto;
}
.spi-unw-home:hover { background: var(--unw-green-soft); border-color: #aadcd5; }
.spi-unw-field { margin: 0 0 10px; overflow: hidden; border: 1px solid var(--unw-hair); border-radius: 10px; }
.spi-unw-cat {
    margin: 0 !important;
    padding: 8px 10px !important;
    color: #fff !important;
    font-size: 11.5px !important;
    font-weight: 800 !important;
    line-height: 1.45 !important;
    letter-spacing: .05em;
    background: linear-gradient(100deg, var(--unw-green-dark), var(--unw-green));
    border: 0 !important;
    border-radius: 0 !important;
}
.spi-unw-cat::before,
.spi-unw-cat::after { content: none !important; display: none !important; }
.spi-unw-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
    background: transparent;
}
.spi-unw-list li {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
    background: none !important;
    border-bottom: 0 !important;
}
.spi-unw-list li::before { content: none !important; display: none !important; }
.spi-unw-list a {
    display: flex !important;
    align-items: center;
    gap: 8px;
    min-width: 0;
    padding: 8px 10px !important;
    color: #3a4644 !important;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.4;
    text-decoration: none !important;
    background: #f6f9f8;
    border: 1px solid #e3ebe9;
    border-radius: 8px;
    transition: border-color .12s ease, background .12s ease, transform .12s ease;
}
.spi-unw-list a:hover { border-color: var(--acc, var(--unw-green)); background: var(--unw-green-soft); transform: translateY(-1px); }
.spi-unw-list a.is-active {
    color: var(--unw-green-dark) !important;
    font-weight: 800;
    background: var(--unw-green-soft);
    border-color: var(--unw-green);
}
.spi-unw-name { flex: 1 1 auto; min-width: 0; }
.spi-unw-qn {
    flex: 0 0 auto;
    margin-left: 3px;
    padding: 2px 6px;
    color: var(--unw-blue) !important;
    font-size: 9.5px;
    font-weight: 800;
    line-height: 1.5;
    background: #edf3fb;
    border-radius: 999px;
}
.spi-unw-list a:hover .spi-unw-qn,
.spi-unw-list a.is-active .spi-unw-qn { background: #fff; }

/* 模試は回遊の二次導線として棚の末尾に置く。 */
.spi-unw-moshi {
    padding: 11px;
    background: linear-gradient(145deg, #f7faff, #eef4fb);
    border: 1px solid #d9e4f1;
    border-radius: 11px;
}
.spi-unw-moshi-heading { display: flex; margin-bottom: 8px; flex-direction: column; }
.spi-unw-moshi-heading span { color: var(--unw-sub); font-size: 9.5px; font-weight: 700; }
.spi-unw-moshi-heading strong { color: #344e72; font-size: 12px; font-weight: 800; }
.spi-unw-moshi-testname { margin: 10px 0 4px !important; color: #344e72; font-size: 11px; font-weight: 800; }
.spi-unw-moshi-testname:first-of-type { margin-top: 2px !important; }

/* 科目別グリッド・問題集カード：白地アウトラインカード＋アイコン＋シェブロン */
.spi-unw-moshi-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.spi-unw-card-list { display: flex; flex-direction: column; gap: 6px; }
.spi-unw-moshi-grid a,
.spi-unw-card-list a,
.spi-unw-quiz-own {
    display: flex !important;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 8px 10px !important;
    color: #29343c !important;
    font-size: 12.5px;
    font-weight: 800;
    text-align: left;
    text-decoration: none !important;
    background: #fff;
    border: 1.5px solid var(--acc, var(--unw-blue));
    border-radius: 9px;
    transition: box-shadow .12s ease, transform .12s ease;
}
.spi-unw-moshi-grid a:hover,
.spi-unw-card-list a:hover,
.spi-unw-quiz-own:hover {
    box-shadow: 0 2px 8px rgba(0, 0, 0, .07);
    transform: translateY(-1px);
}
/* 2026-08-30 オーナー決定：模試（塗り）の直下に置く「この記事のミニクイズ」ボタン。
   見た目は問題集カードと同族の白アウトライン＝塗りの模試が主・白のミニが従、の階層を崩さない。
   リスト容器（.spi-unw-card-list）の外に単体で立つので余白だけ自前で持つ。 */
.spi-unw-quiz-own { margin: 0 2px; }
.spi-unw-subj-icon {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    color: var(--acc, var(--unw-blue));
}
.spi-unw-subj-label { flex: 1 1 auto; min-width: 0; }
.spi-unw-chev { flex: 0 0 auto; display: flex; color: #aab4bd; }

/* 模試トップへの導線：塗り背景のヒーローボタン（アイコンバッジ＋丸矢印） */
.spi-unw-moshi-top {
    display: flex !important;
    align-items: center;
    gap: 10px;
    margin: 4px 2px 12px;
    padding: 12px 12px !important;
    color: #fff !important;
    font-size: 14.5px;
    font-weight: 800;
    text-decoration: none !important;
    background: var(--acc, var(--unw-blue));
    border-radius: 11px;
    box-shadow: 0 3px 0 rgba(0, 0, 0, .14);
    transition: filter .12s ease, transform .12s ease;
}
.spi-unw-moshi-top:hover { filter: brightness(1.05); transform: translateY(-1px); }
.spi-unw-moshi-top-icon {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    color: #fff;
    background: rgba(255, 255, 255, .22);
    border-radius: 50%;
}
.spi-unw-moshi-top-label { flex: 1 1 auto; }
.spi-unw-moshi-top-arrow {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    color: var(--acc, var(--unw-blue));
    background: #fff;
    border-radius: 50%;
}

/* 記事1本ぶんの模試（TAL模試・SHLテスト模試 等）：模試トップと同じ塗り背景の全幅ボタン。
   🔴 2026-08-17 オーナー指示「個別の模試、大きくしよう／変な改行嫌だ／spi模試トップみたいに色もつけよう」。
   旧：科目別と同じ2列グリッドの白カード＝1本しか無いテストで半幅になり検査名が途中で折れていた
       （「SHLテスト模／試」）。⚠ グリッドに戻さない。
   模試トップ（.spi-unw-moshi-top）との差は「影を浅く・アイコン一回り小さく」だけ＝同じ色の系列に見せて、
   トップが上位・個別模試がその下、という順序を崩さない。 */
.spi-unw-moshi-solo {
    display: flex !important;
    align-items: center;
    gap: 9px;
    margin: 0 2px 6px;
    padding: 11px 12px !important;
    color: #fff !important;
    font-size: 14px;
    font-weight: 800;
    line-height: 1.35;
    text-decoration: none !important;
    background: var(--acc, var(--unw-blue));
    border-radius: 11px;
    box-shadow: 0 2px 0 rgba(0, 0, 0, .12);
    transition: filter .12s ease, transform .12s ease;
}
.spi-unw-moshi-solo:hover { filter: brightness(1.05); transform: translateY(-1px); }
.spi-unw-moshi-solo-icon {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    color: #fff;
    background: rgba(255, 255, 255, .22);
    border-radius: 50%;
}
/* 検査名は「アドバンテッジインサイト模試」まであり1行に収まらないものがある。
   折るときは中途半端な位置でなく、文節優先（auto-phrase）→2行を均等割り（balance）で折る。
   どちらも未対応のブラウザは通常の折り返しに落ちるだけ（機能は壊れない）。 */
.spi-unw-moshi-solo-label {
    flex: 1 1 auto;
    min-width: 0;
    word-break: auto-phrase;
    text-wrap: balance;
}
.spi-unw-moshi-solo-arrow {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    color: var(--acc, var(--unw-blue));
    background: #fff;
    border-radius: 50%;
}

/* 2026-09-04 オーナー「spi-h模試とかの特殊なやつは下にしよう／ミニクイズの上でいいよ／白枠で」。
   記事1本ぶんの模試（solo）は科目別グリッドの下へ移し、塗り → 白枠にする。
   ⚠ 全幅・文字サイズ・折り返しは塗り版のまま（半幅に戻すと検査名が「SHLテスト模／試」と折れる）。
   🚨 **外側の高さを塗り版と同じに保つ**＝1.5pxの枠を足したぶん padding を 11px→9.5px / 12px→10.5px
      に引く（余白は箱でなくインクで揃える）。ここを揃えないと、同じ棚で塗りと白が並んだとき
      白だけ3px背が高くなる。
   ⚠ 白地になるのでアイコンバッジの `rgba(255,255,255,.22)` は見えなくなる＝アクセント色の淡い面に、
      矢印の丸は白地→アクセント面に反転して「押せる丸」を残す。 */
.spi-unw-moshi-solo--ghost {
    padding: 9.5px 10.5px !important;
    color: #29343c !important;
    background: #fff;
    border: 1.5px solid var(--acc, var(--unw-blue));
    box-shadow: none;
}
.spi-unw-moshi-solo--ghost:hover {
    filter: none;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .07);
}
.spi-unw-moshi-solo--ghost .spi-unw-moshi-solo-icon {
    color: var(--acc, var(--unw-blue));
    /* color-mix 未対応ブラウザ向けフォールバック（先に書いた方が負ける＝対応ブラウザは下が効く） */
    background: rgba(0, 0, 0, .05);
    background: color-mix(in srgb, var(--acc, var(--unw-blue)) 12%, #fff);
}
.spi-unw-moshi-solo--ghost .spi-unw-moshi-solo-arrow {
    color: #fff;
    background: var(--acc, var(--unw-blue));
}

/* 本文末尾版はデスクトップではDOMにあっても表示・フォーカスされない。 */
.spi-unit-nav-mobile { display: none; }
.spi-unw-mobile-details > summary::-webkit-details-marker { display: none; }

.spi-unw-line:focus-visible,
.spi-unw-home:focus-visible,
.spi-unw-route-item--next:focus-visible,
.spi-unw-list a:focus-visible,
.spi-unw-moshi-grid a:focus-visible,
.spi-unw-card-list a:focus-visible,
.spi-unw-quiz-own:focus-visible,
.spi-unw-moshi-top:focus-visible,
.spi-unw-moshi-solo:focus-visible,
.spi-unw-mobile-details > summary:focus-visible {
    outline: 3px solid rgba(74, 127, 208, .35);
    outline-offset: 2px;
}

@media (max-width: 767px) {
    /* SANGOがスマホ用サイドバーを出す設定でも二重表示させない。 */
    #sidebar1 .widget_spi_unit_nav,
    .spi-unit-nav-widget--desktop { display: none !important; }

    .spi-unit-nav-mobile {
        display: block !important;
        width: 100%;
        margin: 38px 0 22px !important;
        padding: 0 !important;
        background: transparent;
    }
    .spi-unit-nav-mobile .spi-unw-cta {
        padding: 23px 18px 18px;
        border-radius: 17px 17px 12px 12px;
        box-shadow: 0 10px 28px rgba(31, 138, 128, .1);
    }
    .spi-unit-nav-mobile .spi-unw-cta-icon { top: 15px; right: 16px; width: 35px; height: 35px; }
    .spi-unit-nav-mobile .spi-unw-cta-eyebrow { font-size: 11.5px; }
    .spi-unit-nav-mobile .spi-unw-cta-title { margin-top: 10px !important; font-size: 20px; line-height: 1.5; }
    .spi-unit-nav-mobile .spi-unw-cta-steps {
        max-width: 320px;
        margin: 15px auto 16px !important;
    }
    .spi-unit-nav-mobile .spi-unw-cta-steps li { font-size: 12px; }
    .spi-unit-nav-mobile .spi-unw-line { max-width: 340px; min-height: 54px; margin: 0 auto; font-size: 14px; }
    .spi-unit-nav-mobile .spi-unw-cta-note { font-size: 11px; }

    .spi-unw-mobile-details {
        margin: 9px 0 0;
        overflow: hidden;
        background: #fff;
        border: 1px solid var(--unw-hair);
        border-radius: 12px;
        box-shadow: 0 6px 18px rgba(33, 60, 56, .06);
    }
    .spi-unw-mobile-details > summary {
        display: flex;
        align-items: center;
        gap: 9px;
        min-height: 54px;
        padding: 12px 15px;
        color: var(--unw-green-dark);
        font-size: 13.5px;
        font-weight: 800;
        list-style: none;
        cursor: pointer;
    }
    .spi-unw-mobile-summary-icon {
        display: inline-grid;
        flex: 0 0 27px;
        width: 27px;
        height: 27px;
        place-items: center;
        color: #fff;
        background: var(--unw-blue);
        border-radius: 50%;
    }
    .spi-unw-mobile-chevron {
        flex: 0 0 9px;
        width: 9px;
        height: 9px;
        margin-left: auto;
        border-right: 2px solid #8aa09c;
        border-bottom: 2px solid #8aa09c;
        transform: rotate(45deg) translateY(-3px);
        transition: transform .18s ease;
    }
    .spi-unw-mobile-details[open] .spi-unw-mobile-chevron { transform: rotate(225deg) translate(-2px, -1px); }
    .spi-unw-mobile-body { padding: 4px 11px 13px; border-top: 1px solid #edf1f0; }
    .spi-unw-mobile-body .spi-unw-route { margin: 8px 0 10px; }
    .spi-unw-mobile-body .spi-unw-navigation { max-width: none; }
    .spi-unw-mobile-body .spi-unw-list a { min-height: 43px; padding-top: 10px !important; padding-bottom: 10px !important; font-size: 13px; }
    .spi-unw-mobile-body .spi-unw-cat { padding: 10px 12px !important; font-size: 12.5px !important; }
    .spi-unw-mobile-body .spi-unw-moshi { margin-top: 11px; }
    .spi-unw-mobile-body .spi-unw-moshi-grid a { min-height: 42px; font-size: 12px; }
    /* 本文末尾版は横幅が本文いっぱい＝検査名はまず1行に収まる。タップ領域だけ確保する。 */
    .spi-unw-mobile-body .spi-unw-moshi-solo { min-height: 50px; margin-bottom: 8px; font-size: 14.5px; }
}

@media (prefers-reduced-motion: reduce) {
    .spi-unw-line,
    .spi-unw-route-item--next,
    .spi-unw-moshi-grid a,
    .spi-unw-moshi-solo,
    .spi-unw-quiz-own,
    .spi-unw-mobile-chevron { transition: none; }
}

/* ===== 練習問題ページ：解説LINEゲート =====
   ゲートの見た目はミニクイズ [spi_mini] の結果ゲートに統一（.spi-mini-gate-* / spi-mini.css が担当）。
   旧 .spi-mondai-expl-gate__* 独自スタイルは 2026-06-30 に廃止。 */
.spi-mondai-page .accordion.main_c > label { color: #1f8a80; }
/* .spi-mini はタイトル等のCSSスコープ祖先として付けるが、外枠（白カード）は不要 → 無効化。
   実際のカード見た目は内側の .spi-mini-gate-card が担う。 */
.spi-mondai-expl-gate.spi-mini {
    border: 0;
    background: none;
    border-radius: 0;
    padding: 0;
    margin: 0;
}

/* ===== 練習問題ページ：目次 ===== */
.spi-mondai-toc {
    background: #f8fffe;
    border: 1.5px solid #d1f0ed;
    border-radius: 12px;
    padding: 14px 16px 16px;
    margin: 0 0 28px;
}
.spi-mondai-toc__label {
    font-size: 12px;
    font-weight: 700;
    color: #1f8a80;
    letter-spacing: .06em;
    margin: 0 0 10px;
}
.spi-mondai-toc__grid {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.spi-mondai-toc__num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 34px;
    height: 34px;
    padding: 0 6px;
    border-radius: 6px;
    background: #fff;
    border: 1px solid #b6e9e4;
    font-size: 12px;
    font-weight: 600;
    color: #1f8a80 !important;
    text-decoration: none !important;
    transition: background .12s;
}
.spi-mondai-toc__num:hover { background: #E4F8F6; }

/* 🚨 2026-09-11 オーナーGO「ボタンを出さない」＝**飛び先が無いときだけ、この記事のミニクイズボタンを出さない**。
   ---------------------------------------------------------------------------------------
   症状（本番実測・PC 1280x900）＝`/stress-test_taisakuhou/` と `/tekisei-kensa-seikaku/` の2記事で、
   サイドバーに「まずは5問だけ腕試し／ミニクイズ」のボタンが **315x42px で読者に見えている**のに、
   飛び先の `#spi-quiz` がページに1つも無い＝**押しても動かない**（記事内のクイズは実測 0本）。
   調べた範囲＝サイドバーが出る12カテゴリーの記事**151本すべて**／ページ内リンク139本→ 該当はこの2本だけ。

   なぜ出るのか＝**同じ記事に判定が2つあって食い違う**。
     ・サイドバー … `has_own_quiz` ＝ `spi_exam_post_uses_shortcode()`（Post Snippets のラッパーをBFSで辿る）
       ⇒「クイズを呼ぶ**可能性**がある」で true になる＝条件が合わず何も描かれない記事でもボタンだけ出る
     ・フッター   … `spi_footer_nav_target_exists()` ＝ post_content の直書きだけ見る
       ⇒ この2記事では「記事内に受け皿なし」と正しく判定し、記事外のページへ逃がしている（本番で確認）

   なぜCSSで消すのか＝**描画順に依存しないから**。2026-08-31 の同型（`/gab-border/`）では
   「サイドバー側を消す方向では直さない＝ボタンが出る/出ないの判定は本文の描画結果を見られない」として
   受け皿（`spi_exam_ensure_spi_quiz_anchor()`）を足す形にした。その保険は**記事埋め込み模試を受け皿にする**もので、
   模試もクイズも無いこの2記事には効かない。⇒ **ブラウザが組み上がった後に判定する**なら順番の問題は消える。
   `:has()` は「そのページに `#spi-quiz` が在るか」をブラウザに数えさせるだけ＝**PHP側の判定は1バイトも変えない**。

   ⚠ 効くのは**飛び先が無いページだけ**＝他の139本は1バイトも変わらない（自己修復＝将来クイズを足せば自動で戻る）。
   ⚠ `display:flex !important`（上の共通カード定義）を上書きするので `!important` が要る。
   ⚠ `:has()` 非対応の古いブラウザでは今までどおり（＝悪化しない）。
   ⚠ 見出し「まずは5問だけ腕試し」はこのボタン専用なので一緒に隠す（隣に別の中身は来ない）。
      同じ節の「ミニクイズに挑戦」側（`.spi-unw-moshi-solo[href="#spi-quiz"]`）は
      `spi_unit_nav_quiz_enabled()` が false で**本番に1本も出ていない**＝ここでは触らない。 */
body:not(:has(#spi-quiz)) .spi-unw-quiz-own,
body:not(:has(#spi-quiz)) .spi-unw-acc-sec:has(+ .spi-unw-quiz-own) { display: none !important; }
