/* 日本株ファクターバックテスト（/jp-stock/backtest/）専用。
 * 出どころ: 旧 /private/backtest/index.php の <style> 2本。
 * 変換の要点（2026-09-10 公開化）:
 *   - 全セレクタを .fbt-root 配下へ閉じ込めた。サイト共通CSSへ漏らさないため。
 *   - .layout/.sidebar/.chart-card/.quick-btn/.table-scroll は共通CSSに同名があり、
 *     しかも .layout は !important 付きなので fbt- 接頭辞へ改名した。
 *   - :root のトークン定義は落とした。theme.css が正本で、残すと light が壊れる。
 *   - body{} 直書きは .fbt-root{} へ移した（html[data-theme] body に詳細度で負けるため）。
 *   - 画面全体を 100vh で固定するのはやめ、ページごとスクロールする作りへ変えた
 *     （共通トップバー52pxと共存させるため。末尾の「公開化の上書き」を参照）。
 */
.fbt-root /* 2026-09-03: このページは共通の theme.css を読んでいない独立ページ。
   色をトークンで書くために、ダーク側の値をここで定義する
   （値は jp-stock/assets/theme.css の html[data-theme] と同じ）。 */



*{box-sizing:border-box;margin:0;padding:0}.fbt-root{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Helvetica Neue',sans-serif;background:#0f172a;color:#e2e8f0;min-height:100vh}.fbt-root /* ヘッダー */
.page-header{background:#1e293b;border-bottom:1px solid #334155;padding:var(--kb-space-3) 20px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:100}.fbt-root .page-title{font-size:.95rem;font-weight:700;color:#f1f5f9;flex:1}.fbt-root .header-links{display:flex;gap:10px;align-items:center}.fbt-root .header-links a{color:var(--kb-text-muted);font-size:.75rem;text-decoration:none}.fbt-root .header-links a:hover{color:var(--kb-accent)}.fbt-root .logout-btn{background:rgba(255,255,255,.08);border:1px solid #475569;color:var(--kb-text-muted);padding:4px var(--kb-space-3);border-radius:var(--kb-radius-sm);font-size:.72rem;cursor:pointer}.fbt-root .logout-btn:hover{background:rgba(255,255,255,.15);color:#e2e8f0}.fbt-root /* レイアウト */
.fbt-layout{display:flex;gap:0;height:calc(100vh - 41px)}.fbt-root .fbt-sidebar{width:310px;flex-shrink:0;background:#1e293b;border-right:1px solid #334155;overflow-y:auto;padding:var(--kb-space-4)}.fbt-root .main{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px}.fbt-root /* サイドバー共通 */
.sb-section{margin-bottom:18px}.fbt-root .sb-label{font-size:.7rem;font-weight:700;color:var(--kb-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}.fbt-root .mode-tabs{display:flex;border:1px solid #334155;border-radius:var(--kb-radius-sm);overflow:hidden;margin-bottom:14px}.fbt-root .mode-tab{flex:1;padding:7px;text-align:center;font-size:.78rem;font-weight:600;cursor:pointer;color:var(--kb-text-muted);background:#0f172a;border:none;transition:all .15s}.fbt-root .mode-tab.active{background:#3b82f6;color:white}.fbt-root .mode-tab:hover:not(.active){background:#1e293b;color:var(--kb-text-muted)}.fbt-root select, .fbt-root input[type=text], .fbt-root input[type=number], .fbt-root input[type=month]{width:100%;padding:var(--kb-space-2) var(--kb-space-3);background:#0f172a;border:1px solid #334155;border-radius:var(--kb-radius-sm);color:#e2e8f0;font-size:.82rem;outline:none}.fbt-root select:focus, .fbt-root input:focus{border-color:#3b82f6}.fbt-root select option{background:#1e293b}.fbt-root .form-row{margin-bottom:10px}.fbt-root .form-row label{display:block;font-size:.72rem;color:var(--kb-text-muted);margin-bottom:4px}.fbt-root .run-btn{width:100%;padding:var(--kb-space-2);background:#3b82f6;color:white;border:none;border-radius:var(--kb-radius-sm);font-size:.85rem;font-weight:700;cursor:pointer;transition:background .15s;margin-top:4px}.fbt-root .run-btn:hover{background:#2563eb}.fbt-root .run-btn:disabled{background:#334155;color:var(--kb-text-muted);cursor:not-allowed}.fbt-root /* コンボ条件 */
.combo-cond, .fbt-root .univ-cond{background:#0f172a;border:1px solid #334155;border-radius:var(--kb-radius-sm);padding:var(--kb-space-3);margin-bottom:8px;position:relative}.fbt-root .combo-cond-num, .fbt-root .univ-cond-num{font-size:.68rem;color:var(--kb-text-muted);font-weight:700;margin-bottom:6px}.fbt-root .combo-row{display:flex;gap:6px;align-items:center}.fbt-root .combo-row select{flex:1}.fbt-root .del-btn{background:#334155;border:none;color:var(--kb-text-muted);border-radius:var(--kb-radius-sm);padding:var(--kb-space-1) 8px;cursor:pointer;font-size:.8rem;flex-shrink:0}.fbt-root .del-btn:hover{background:#475569;color:#f1f5f9}.fbt-root .add-cond-btn{width:100%;padding:var(--kb-space-2);background:transparent;border:1px dashed #334155;color:var(--kb-text-muted);border-radius:var(--kb-radius-sm);font-size:.78rem;cursor:pointer;margin-bottom:8px}.fbt-root .add-cond-btn:hover{border-color:#475569;color:var(--kb-text-muted)}.fbt-root /* 分位セレクター */
.quantile-tabs{display:flex;border:1px solid #334155;border-radius:var(--kb-radius-sm);overflow:hidden;margin-bottom:14px}.fbt-root .quantile-tab{flex:1;padding:6px;text-align:center;font-size:.78rem;font-weight:600;cursor:pointer;color:var(--kb-text-muted);background:#0f172a;border:none;transition:all .15s}.fbt-root .quantile-tab.active{background:#7c3aed;color:white}.fbt-root .quantile-tab:hover:not(.active){background:#1e293b;color:var(--kb-text-muted)}.fbt-root /* スプレッドトグル */
.spread-toggle-btn{background:rgba(255,255,255,.08);border:1px solid #475569;color:var(--kb-text-muted);padding:3px var(--kb-space-3);border-radius:var(--kb-radius-sm);font-size:.72rem;cursor:pointer;white-space:nowrap}.fbt-root .spread-toggle-btn:hover{background:rgba(255,255,255,.15);color:#e2e8f0}.fbt-root .spread-toggle-btn.inverted{background:#1e3a5f;border-color:#3b82f6;color:var(--kb-accent)}.fbt-root /* 判定カード（単一ファクター）。累積チャートは「効いて見える」を作りやすいので、
   t値・減衰・単調性を文章で先に置く。色はランキング画面の判定と同じ意味に揃える。 */
.sv-card{background:var(--kb-surface,#131c2b);border:1px solid #23324a;border-left:3px solid var(--kb-positive);
  border-radius:var(--kb-radius-md);padding:12px 14px}.fbt-root .sv-card.weak{border-left-color:var(--kb-warning)}.fbt-root .sv-card.bad{border-left-color:var(--kb-negative)}.fbt-root .sv-head{font-size:.92rem;font-weight:700;color:#e8edf5;margin-bottom:5px}.fbt-root .sv-card.ok .sv-head{color:var(--kb-positive)}.fbt-root .sv-card.weak .sv-head{color:var(--kb-warning)}.fbt-root .sv-card.bad .sv-head{color:var(--kb-negative)}.fbt-root .sv-copy{font-size:.78rem;color:#9fb0c8;line-height:1.85}.fbt-root .sv-copy b{color:#e8edf5}.fbt-root .sv-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;margin-top:10px}.fbt-root .sv-kpi{background:#0f172a;border:1px solid #223049;border-radius:var(--kb-radius-sm);padding:7px 9px}.fbt-root .sv-kpi .k{font-size:.66rem;color:var(--kb-text-subtle);margin-bottom:3px}.fbt-root .sv-kpi .v{font-size:.94rem;font-weight:700;color:#e8edf5;font-variant-numeric:tabular-nums}.fbt-root .sv-kpi .v.pos{color:var(--kb-positive)}.fbt-root .sv-kpi .v.neg{color:var(--kb-negative)}.fbt-root /* ユニバース条件 */
.univ-section{border:1px solid #2d4a6b;border-radius:var(--kb-radius-md);padding:var(--kb-space-3);margin-bottom:14px;background:rgba(59,130,246,.05)}.fbt-root .univ-title{font-size:.72rem;font-weight:700;color:#60a5fa;margin-bottom:8px;display:flex;align-items:center;gap:6px}.fbt-root .univ-cond-type{font-size:.78rem;padding:var(--kb-space-1) 8px;width:100%;background:#0f172a;border:1px solid #334155;border-radius:var(--kb-radius-sm);color:#e2e8f0;margin-bottom:5px}.fbt-root .univ-cond-val{font-size:.78rem;padding:var(--kb-space-1) 8px;width:100%;background:#0f172a;border:1px solid #334155;border-radius:var(--kb-radius-sm);color:#e2e8f0}.fbt-root .univ-badge{font-size:.68rem;background:#1e40af;color:var(--kb-accent);padding:1px var(--kb-space-2);border-radius:var(--kb-radius-md)}.fbt-root /* メインコンテンツ */
.fbt-chart-card{background:#1e293b;border:1px solid #334155;border-radius:var(--kb-radius-md);padding:var(--kb-space-5)}.fbt-root .card-title{font-size:.85rem;font-weight:700;color:#f1f5f9;margin-bottom:4px}.fbt-root .card-sub{font-size:.72rem;color:var(--kb-text-muted);margin-bottom:14px}.fbt-root .chart-wrap{position:relative;height:360px}.fbt-root /* 期間スライダー */
.period-slider-wrap{margin-top:14px;padding:0 4px}.fbt-root .slider-labels{display:flex;justify-content:space-between;font-size:.7rem;color:var(--kb-text-muted);margin-bottom:4px}.fbt-root .slider-current{text-align:center;font-size:.72rem;color:var(--kb-accent);margin-bottom:6px;font-weight:600}.fbt-root .dual-range{position:relative;height:24px;user-select:none}.fbt-root .dual-range input[type=range]{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;-webkit-appearance:none;background:transparent;margin:0;padding:0}.fbt-root .dual-range input[type=range]::-webkit-slider-thumb{pointer-events:all;-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#3b82f6;cursor:pointer;border:2px solid #0f172a;box-shadow:0 0 0 2px #3b82f640}.fbt-root .dual-range input[type=range]::-moz-range-thumb{pointer-events:all;width:14px;height:14px;border-radius:50%;background:#3b82f6;cursor:pointer;border:2px solid #0f172a}.fbt-root .dual-range input[type=range]::-webkit-slider-runnable-track{height:4px;background:#334155;border-radius:var(--kb-radius-sm)}.fbt-root .dual-range input[type=range]::-moz-range-track{height:4px;background:#334155;border-radius:var(--kb-radius-sm)}.fbt-root .range-fill{position:absolute;top:10px;height:4px;background:#3b82f6;border-radius:var(--kb-radius-sm);pointer-events:none}.fbt-root /* 統計テーブル */
.stats-card{background:#1e293b;border:1px solid #334155;border-radius:var(--kb-radius-md);padding:var(--kb-space-5)}.fbt-root .stats-table{width:100%;border-collapse:collapse;font-size:.78rem;margin-top:12px}.fbt-root .stats-table th{padding:8px var(--kb-space-3);text-align:right;font-weight:600;color:var(--kb-text-muted);border-bottom:1px solid #334155}.fbt-root .stats-table th:first-child{text-align:left}.fbt-root .stats-table td{padding:7px var(--kb-space-3);text-align:right;border-bottom:1px solid #1e293b}.fbt-root .stats-table td:first-child{text-align:left;font-weight:600}.fbt-root .stats-table tr:hover td{background:rgba(255,255,255,.03)}.fbt-root .pos{color:var(--kb-positive)}.fbt-root .neg{color:var(--kb-negative)}.fbt-root .neu{color:var(--kb-text-muted)}.fbt-root /* 年次リターン */
.annual-card{background:#1e293b;border:1px solid #334155;border-radius:var(--kb-radius-md);padding:var(--kb-space-5)}.fbt-root .annual-table{width:100%;border-collapse:collapse;font-size:.75rem}.fbt-root .annual-table th{padding:6px 8px;text-align:right;color:var(--kb-text-muted);font-weight:600;border-bottom:1px solid #334155;white-space:nowrap}.fbt-root .annual-table th:first-child{text-align:left}.fbt-root .annual-table td{padding:5px 8px;text-align:right;border-bottom:1px solid rgba(51,65,85,.5)}.fbt-root .annual-table td:first-child{text-align:left;font-weight:600;color:var(--kb-text-muted)}.fbt-root .annual-table tr:hover td{background:rgba(255,255,255,.03)}.fbt-root .fbt-table-scroll{max-width:100%;overflow-x:auto}.fbt-root /* ローディング */
.loading{text-align:center;padding:60px 20px;color:var(--kb-text-muted);font-size:.85rem}.fbt-root .spinner{width:28px;height:28px;border:3px solid #334155;border-top-color:#3b82f6;border-radius:50%;animation:spin .7s linear infinite;margin:0 auto 12px}
@keyframes spin{to{transform:rotate(360deg)}}.fbt-root .empty-state{text-align:center;padding:80px 20px;color:var(--kb-text-2)}.fbt-root .empty-icon{font-size:2.5rem;margin-bottom:12px}.fbt-root .empty-text{font-size:.85rem}

@media(max-width:768px){.fbt-root .fbt-layout{flex-direction:column;height:auto}.fbt-root .fbt-sidebar{width:100%;border-right:none;border-bottom:1px solid #334155}
}.fbt-root /* v2: 情報の階層を明確にした分析ワークベンチ */
:root{--ink:#e8eef8;--muted:#91a0b8;--panel:rgba(15,27,48,.84);--line:rgba(148,163,184,.16);--blue:#5ea7ff;--violet:#9b8cff;--mint:#48d6ae;--amber:#f7c76d}.fbt-root{background:
  radial-gradient(circle at 78% -10%,rgba(76,100,255,.20),transparent 34rem),
  radial-gradient(circle at 8% 96%,rgba(35,211,170,.10),transparent 30rem),#07111f;color:var(--ink)}.fbt-root .page-header{height:64px;padding:var(--kb-space-3) 24px;background:rgba(7,17,31,.82);backdrop-filter:blur(18px);border-color:var(--line)}.fbt-root .brand-lockup{display:flex;align-items:center;gap:11px;min-width:0;flex:1}.fbt-root .brand-mark{width:36px;height:36px;border-radius:var(--kb-radius-md);display:grid;place-items:center;background:linear-gradient(145deg,#63b3ff,#7c6cff);box-shadow:0 9px 28px rgba(87,112,255,.3);font-size:1rem}.fbt-root .page-title{font-size:.96rem;line-height:1.15}.fbt-root .page-kicker{display:block;font-size:.66rem;color:#72839d;font-weight:500;margin-top:4px;letter-spacing:.03em}.fbt-root .fbt-layout{height:calc(100vh - 64px)}.fbt-root .fbt-sidebar{width:354px;background:rgba(10,23,41,.72);backdrop-filter:blur(14px);border-color:var(--line);padding:var(--kb-space-5)}.fbt-root .main{padding:24px;gap:18px}.fbt-root .sb-section{margin-bottom:20px}.fbt-root .sb-label{color:#8190a8;letter-spacing:.09em}.fbt-root .quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.fbt-root .fbt-quick-btn{min-height:64px;padding:var(--kb-space-3);border:1px solid var(--line);border-radius:var(--kb-radius-lg);background:linear-gradient(145deg,rgba(30,52,82,.72),rgba(15,29,50,.85));color:var(--ink);text-align:left;cursor:pointer;transition:.18s ease}.fbt-root .fbt-quick-btn:hover, .fbt-root .fbt-quick-btn:focus-visible{transform:translateY(-2px);border-color:rgba(94,167,255,.55);box-shadow:0 10px 26px rgba(0,0,0,.2);outline:none}.fbt-root .fbt-quick-btn b{display:block;font-size:.76rem;margin-bottom:4px}.fbt-root .fbt-quick-btn span{display:block;font-size:.64rem;line-height:1.35;color:#8797af}.fbt-root .trust-card{border:1px solid rgba(72,214,174,.22);border-radius:var(--kb-radius-lg);padding:var(--kb-space-3);background:linear-gradient(145deg,rgba(21,67,65,.36),rgba(12,30,47,.72));margin-bottom:18px}.fbt-root .trust-head{display:flex;align-items:center;gap:7px;font-size:.73rem;font-weight:700;color:#baf5df}.fbt-root .trust-dot{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 5px rgba(72,214,174,.1)}.fbt-root .trust-copy{font-size:.65rem;line-height:1.5;color:#78978f;margin-top:7px}.fbt-root .trust-warning{font-size:.65rem;line-height:1.55;color:#e9bd78;margin-top:8px;padding-top:8px;border-top:1px solid rgba(233,189,120,.18)}.fbt-root .trust-metrics{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.fbt-root .trust-chip{font-size:.62rem;padding:4px var(--kb-space-2);border:1px solid rgba(72,214,174,.18);border-radius:999px;color:#9fdcca;background:rgba(7,17,31,.4)}.fbt-root .mode-tabs, .fbt-root .quantile-tabs{padding:3px;background:#071321;border-color:var(--line);border-radius:var(--kb-radius-md);gap:3px}.fbt-root .mode-tab, .fbt-root .quantile-tab{border-radius:var(--kb-radius-md)}.fbt-root .mode-tab.active{background:linear-gradient(135deg,#478fef,#7167ed)}.fbt-root .quantile-tab.active{background:linear-gradient(135deg,#7868ef,#a064dc)}.fbt-root .univ-section, .fbt-root .combo-cond, .fbt-root .univ-cond{border-color:var(--line);background:rgba(4,13,25,.52);border-radius:var(--kb-radius-md)}.fbt-root select, .fbt-root input[type=text], .fbt-root input[type=number], .fbt-root input[type=month]{min-height:38px;border-color:var(--line);background:#071321;border-radius:var(--kb-radius-md)}.fbt-root .run-btn{min-height:44px;border-radius:var(--kb-radius-md);background:linear-gradient(135deg,#4c9cf4,#7167ef);box-shadow:0 10px 24px rgba(62,111,226,.22)}.fbt-root .run-btn:hover{background:linear-gradient(135deg,#5ca9fa,#8174f2);transform:translateY(-1px)}.fbt-root .fbt-chart-card, .fbt-root .stats-card, .fbt-root .annual-card{background:var(--panel);border-color:var(--line);border-radius:var(--kb-radius-lg);box-shadow:0 14px 40px rgba(0,0,0,.16)}.fbt-root .empty-state{padding:34px 24px;text-align:left;color:inherit}.fbt-root .empty-hero{max-width:880px;margin:0 auto}.fbt-root .empty-eyebrow{font-size:.7rem;color:var(--mint);font-weight:800;letter-spacing:.11em;text-transform:uppercase}.fbt-root .empty-title{font-size:clamp(1.5rem,3vw,2.65rem);line-height:1.14;margin-top:12px;max-width:700px;letter-spacing:-.03em}.fbt-root .empty-lead{font-size:.86rem;line-height:1.8;color:#8fa0b7;max-width:680px;margin-top:14px}.fbt-root .feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:24px}.fbt-root .feature-tile{padding:var(--kb-space-4);border:1px solid var(--line);border-radius:var(--kb-radius-lg);background:rgba(20,38,63,.56)}.fbt-root .feature-tile b{font-size:.78rem;display:block;margin-bottom:6px}.fbt-root .feature-tile span{font-size:.68rem;color:#8495ad;line-height:1.55}.fbt-root button:focus-visible, .fbt-root select:focus-visible, .fbt-root input:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media(max-width:900px){.fbt-root .fbt-sidebar{width:320px}.fbt-root .feature-grid{grid-template-columns:1fr}}
@media(max-width:768px){.fbt-root .page-header{height:auto;min-height:64px;padding:10px 14px}.fbt-root .fbt-layout{height:auto}.fbt-root .fbt-sidebar{width:100%;padding:14px}.fbt-root .main{width:100%;min-width:0;padding:14px;overflow-x:hidden}.fbt-root .fbt-chart-card, .fbt-root .stats-card, .fbt-root .annual-card{min-width:0;max-width:100%}.fbt-root .fbt-chart-card{overflow:hidden}.fbt-root .quick-grid{grid-template-columns:repeat(2,1fr)}.fbt-root .header-links a:nth-child(2){display:none}}.fbt-root /* ===== ファクター・ラボ（/private/quant/lab.php から統合。2026-09-07） ===== */
#panelLab .lab-hint{font-size:.7rem;color:#8495ad;line-height:1.55;margin:-2px 0 6px}.fbt-root #panelLab textarea{width:100%;padding:8px 10px;background:#071321;border:1px solid var(--line);border-radius:var(--kb-radius-sm);color:#e2e8f0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;line-height:1.6;resize:vertical;outline:none}.fbt-root #panelLab textarea:focus{border-color:#3b82f6}.fbt-root #panelLab .lab-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.fbt-root #panelLab .lab-grid label{display:block;font-size:.68rem;color:var(--kb-text-muted);margin-bottom:3px}.fbt-root #panelLab .lab-check{display:flex;gap:14px;margin-top:8px;font-size:.72rem;color:#8fa0b7}.fbt-root #panelLab .lab-check label{display:flex;align-items:center;gap:5px;cursor:pointer}.fbt-root #panelLab .lab-check input{width:auto;min-height:0}.fbt-root #labChips{display:flex;flex-wrap:wrap;gap:4px;max-height:132px;overflow-y:auto;padding:4px 2px;border:1px solid var(--line);border-radius:var(--kb-radius-sm);background:rgba(4,13,25,.52)}.fbt-root #labChips .chip{background:#0f1d33;border:1px solid var(--line);border-radius:11px;padding:2px 8px;font-size:.68rem;cursor:pointer;white-space:nowrap;color:#c3cee0}.fbt-root #labChips .chip:hover{border-color:var(--blue);color:var(--blue)}.fbt-root #labChips .chip b{font-weight:700;color:#e8eef8;font-family:ui-monospace,Menlo,monospace}.fbt-root #labChips .chipgroup{font-size:.66rem;color:#7d8ca4;align-self:center;margin:0 2px;font-weight:700}.fbt-root #labSearch{margin-bottom:5px}.fbt-root .lab-presetnote{font-size:.68rem;color:var(--mint);line-height:1.5;margin-top:4px;min-height:1em}.fbt-root #labWrap{display:flex;flex-direction:column;gap:16px}.fbt-root #labWrap .lab-head{background:var(--panel);border:1px solid var(--line);border-radius:var(--kb-radius-lg);padding:14px 18px}.fbt-root #labWrap .lab-head h2{font-size:1.05rem;margin:0 0 4px}.fbt-root #labWrap .lab-formula{font-family:ui-monospace,Menlo,monospace;font-size:.82rem;color:var(--blue);word-break:break-all}.fbt-root #labWrap .lab-sub{font-size:.72rem;color:#8495ad;line-height:1.6;margin-top:6px}.fbt-root /* 「その式、もう在るのでは？」の答え。左の色で新しさが一目で分かるようにする */
#labWrap .lab-novel{font-size:.74rem;color:#8495ad;line-height:1.7;margin-top:8px;
  padding:7px 11px;border-radius:6px;background:#151e2b;border-left:3px solid #37c99b}.fbt-root #labWrap .lab-novel.dup{border-left-color:#ef6f78}.fbt-root #labWrap .lab-novel.part{border-left-color:#f2ca52}.fbt-root #labWrap .lab-novel b{color:#e8edf5}.fbt-root #labWrap .lab-novel .more{color:#6f7f96;margin-left:6px}.fbt-root #labWrap .lab-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px}.fbt-root #labWrap .lab-kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--kb-radius-lg);padding:11px 13px}.fbt-root #labWrap .lab-kpi .k{font-size:.68rem;color:#8495ad;line-height:1.4}.fbt-root #labWrap .lab-kpi .v{font-size:1.32rem;font-weight:800;margin-top:3px;letter-spacing:-.02em}.fbt-root #labWrap .lab-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--kb-radius-lg);padding:14px 16px}.fbt-root #labWrap .lab-card h3{font-size:.82rem;margin:0 0 10px;color:#c3cee0;font-weight:700}.fbt-root #labWrap table{width:100%;border-collapse:collapse;font-size:.8rem}.fbt-root #labWrap th, .fbt-root #labWrap td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.fbt-root #labWrap th{color:#8495ad;font-weight:700;font-size:.72rem}.fbt-root #labWrap td.nm, .fbt-root #labWrap th.nm{text-align:left}.fbt-root #labWrap .pos{color:var(--mint)}.fbt-root #labWrap .neg{color:#f2777a}.fbt-root #labWrap .dim{color:#7d8ca4}.fbt-root #labWrap .sig{font-weight:800}.fbt-root #labWrap .lab-scroll{overflow-x:auto}.fbt-root #labWrap .lab-charts{display:grid;grid-template-columns:1fr 1fr;gap:14px}.fbt-root #labWrap .lab-chartbox{background:var(--panel);border:1px solid var(--line);border-radius:var(--kb-radius-lg);padding:12px;height:280px;position:relative}.fbt-root #labWrap .lab-tabs{display:flex;gap:6px}.fbt-root #labWrap .lab-tab{padding:6px 15px;border:1px solid var(--line);border-radius:var(--kb-radius-md);background:rgba(4,13,25,.52);cursor:pointer;font-size:.78rem;color:#8495ad;font-weight:600}.fbt-root #labWrap .lab-tab.on{background:linear-gradient(135deg,#478fef,#7167ed);color:#fff;border-color:transparent}.fbt-root #labWrap .lab-note{font-size:.72rem;color:#8495ad;line-height:1.75}.fbt-root #labWrap .lab-note code{background:#071321;border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-size:.72rem;color:#c3cee0}.fbt-root #labErr{color:#f2777a;font-size:.75rem;white-space:pre-wrap;margin-top:6px;line-height:1.5}.fbt-root /* 比較（複数の条件を並べて見る） */
#labWrap .lab-headrow{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.fbt-root #labWrap .lab-pin{flex:0 0 auto;padding:7px 14px;border-radius:var(--kb-radius-md);border:1px solid var(--line);background:rgba(4,13,25,.52);color:#c3cee0;font-size:.76rem;font-weight:700;cursor:pointer;white-space:nowrap}.fbt-root #labWrap .lab-pin:hover:not(:disabled){border-color:#478fef;color:#fff}.fbt-root #labWrap .lab-pin:disabled{opacity:.4;cursor:default}.fbt-root #labWrap .lab-tab .cnt{display:inline-block;min-width:16px;margin-left:6px;padding:0 4px;border-radius:8px;background:rgba(255,255,255,.14);font-size:.66rem;font-weight:800}.fbt-root #labWrap .cmp-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.fbt-root #labWrap .cmp-bar button{padding:5px 12px;border-radius:var(--kb-radius-md);border:1px solid var(--line);background:rgba(4,13,25,.52);color:#8495ad;font-size:.74rem;font-weight:600;cursor:pointer}.fbt-root #labWrap .cmp-bar button:hover{border-color:#478fef;color:#fff}.fbt-root #labWrap td.cmp-nm{max-width:300px;white-space:normal;line-height:1.45}.fbt-root #labWrap td.cmp-nm .e{font-family:ui-monospace,Menlo,monospace;font-size:.7rem;color:#7d8ca4;word-break:break-all}.fbt-root #labWrap .cmp-act{color:#7d8ca4;cursor:pointer;font-size:.72rem;text-decoration:underline;text-underline-offset:2px}.fbt-root #labWrap .cmp-act:hover{color:#fff}.fbt-root #labWrap tr.cmp-best td{background:rgba(72,214,167,.07)}.fbt-root #labWrap th.srt{cursor:pointer;user-select:none}.fbt-root #labWrap th.srt:hover, .fbt-root #labWrap th.srt.on{color:#fff}.fbt-root #labSweepBox{margin-top:8px;font-size:.72rem;color:#8495ad;line-height:1.6}.fbt-root #labSweepBox .go{width:100%;margin-top:8px;padding:8px;border-radius:var(--kb-radius-md);border:1px solid var(--line);background:rgba(4,13,25,.52);color:#c3cee0;font-size:.78rem;font-weight:700;cursor:pointer}.fbt-root #labSweepBox .go:hover{border-color:#478fef;color:#fff}.fbt-root /* ファクター一覧モード（旧 /private/quant/factors.php を統合） */
#fxWrap{display:flex;flex-direction:column;gap:16px}.fbt-root #fxWrap .lab-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--kb-radius-lg);padding:14px 16px}.fbt-root #fxWrap h3{font-size:.86rem;margin:0 0 4px;color:#e8eef8;font-weight:700}.fbt-root #fxWrap .fx-sub{font-size:.72rem;color:#8495ad;line-height:1.6;margin-bottom:10px}.fbt-root #fxWrap table{width:100%;border-collapse:collapse;font-size:.78rem}.fbt-root #fxWrap th, .fbt-root #fxWrap td{padding:5px 7px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.fbt-root #fxWrap th{color:#8495ad;font-weight:700;font-size:.7rem}.fbt-root #fxWrap td.nm, .fbt-root #fxWrap th.nm{text-align:left}.fbt-root #fxWrap .pos{color:var(--mint)}.fbt-root #fxWrap .neg{color:#f2777a}.fbt-root #fxWrap .dim{color:#7d8ca4}.fbt-root #fxWrap .sig{font-weight:800}.fbt-root #fxWrap .q td{font-variant-numeric:tabular-nums}.fbt-root #fxWrap .hm td{border:1px solid var(--line);text-align:center}.fbt-root #fxWrap .grp td{background:rgba(4,13,25,.72);font-weight:700}.fbt-root #fxWrap .fx-scroll{overflow-x:auto}
@media(max-width:900px){.fbt-root #labWrap .lab-charts{grid-template-columns:1fr}}


/* ===== 公開化の上書き（2026-09-10） ===== */
/* 元は .page-header 41px を前提に height:calc(100vh - 41px) で固定していた。
   公開ページでは共通トップバー(52px)＋パンくず＋フッターが載るので、
   全体スクロール＋サイドバー sticky に変える。 */
.fbt-root{background:#0f172a;color:#e2e8f0;min-height:calc(100vh - 52px);display:block}
.fbt-root .fbt-layout{height:auto;align-items:flex-start}
.fbt-root .fbt-sidebar{position:sticky;top:52px;max-height:calc(100vh - 52px);overflow-y:auto}
.fbt-root .main{overflow:visible;min-height:520px}
@media(max-width:900px){
  .fbt-root .fbt-layout{flex-direction:column}
  .fbt-root .fbt-sidebar{position:static;max-height:none;width:100%}
}
/* 公開ページの見出し帯。非公開版の .page-header（ログアウト付き）の置き換え。 */
.fbt-head{padding:14px 20px 4px}
.fbt-head h1{font-size:1.15rem;font-weight:800;color:#f1f5f9;margin:0 0 4px;line-height:1.35}
.fbt-head h1 small{display:block;font-size:.74rem;font-weight:600;color:#8d9ab0;margin-top:3px}
.fbt-head .fbt-lead{font-size:.8rem;color:#8d9ab0;line-height:1.7;max-width:74ch;margin:0}
.fbt-head .kbu-crumbs{margin-bottom:8px}
.fbt-related{border-top:1px solid #273448;margin:26px 20px 0;padding:16px 0 24px}
.fbt-related h2{font-size:.9rem;color:#e8edf5;margin:0 0 10px}
.fbt-related ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:0}
.fbt-related a{display:inline-block;padding:6px 12px;border:1px solid #273448;border-radius:6px;
  color:#8d9ab0;text-decoration:none;font-size:.78rem;background:#101722}
.fbt-related a:hover{color:#75a7ff;border-color:#3a4b63}
.fbt-note{color:#8d9ab0;font-size:.8rem;line-height:1.85;max-width:82ch;margin-bottom:22px}
.fbt-note h3{font-size:.82rem;color:#c7d4e8;margin:14px 0 6px}
.fbt-note ul{margin:0 0 0 1.1em;padding:0}
.fbt-note li{margin-bottom:5px}
.fbt-note b{color:#c7d4e8}
.fbt-note a{color:#75a7ff}
