/* ============================================================
   Free マインドマップ ガイド記事 共通スタイル v2
   本体アプリのデザイントークンと同期（白ベース＋ブルー）
   ============================================================ */
:root{
  --accent:#2563eb;
  --accent-hover:#1d4ed8;
  --accent-light:#3b82f6;
  --accent-soft:rgba(59,130,246,.24);
  --line:#8bb8e8;
  --bg:#eef6ff;
  --panel:#ffffff;
  --text:#102033;
  --muted:#5d6f86;
  --border:#d7e5f5;
  --marker:#fde047;
  --good:#059669;
  --good-bg:#ecfdf5;
  --warn:#d97706;
  --warn-bg:#fffbeb;
  --bad:#dc2626;
  --bad-bg:#fef2f2;
  --shadow:0 1px 3px rgba(30,64,175,.10),0 1px 2px rgba(30,64,175,.06);
  --shadow-lg:0 10px 30px rgba(30,64,175,.10);
}
*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; scroll-padding-top:70px; }
html,body{ margin:0; }
body{
  font-family:"Segoe UI","Hiragino Kaku Gothic ProN","Noto Sans JP",Meiryo,sans-serif;
  color:var(--text);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  line-height:1.9;
}
a{ color:var(--accent); }
a:hover{ color:var(--accent-hover); }
img,svg{ max-width:100%; height:auto; }

/* ===== ヘッダー ===== */
.site-header{
  background:rgba(255,255,255,.92); backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);
  padding:12px 20px;
  position:sticky; top:0; z-index:50;
}
.site-header-inner{
  max-width:1180px; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
}
.brand{
  display:flex; align-items:center; gap:10px;
  font-weight:700; font-size:16px; color:var(--text); text-decoration:none;
}
.brand-mark{
  width:32px; height:32px; border-radius:9px; background:var(--accent);
  display:flex; align-items:center; justify-content:center; color:#fff; font-size:15px; font-weight:800;
}
.header-nav{ display:flex; gap:16px; align-items:center; }
.header-nav a{ font-size:14px; text-decoration:none; color:var(--muted); }
.header-nav a:hover{ color:var(--accent); }
.header-nav a.cta{
  background:var(--accent); color:#fff; padding:9px 18px; border-radius:9px; font-weight:700;
  box-shadow:0 3px 10px rgba(37,99,235,.3); transition:transform .1s, box-shadow .15s;
}
.header-nav a.cta:hover{ background:var(--accent-hover); color:#fff; transform:translateY(-1px); }

/* ===== 記事ヒーロー ===== */
.article-hero{
  background:linear-gradient(135deg,#1e3a8a 0%,#2563eb 55%,#3b82f6 100%);
  color:#fff; padding:40px 20px 46px; position:relative; overflow:hidden;
}
.article-hero::after{
  content:""; position:absolute; right:-80px; top:-80px; width:340px; height:340px;
  border-radius:50%; background:rgba(255,255,255,.08); pointer-events:none;
}
.article-hero::before{
  content:""; position:absolute; left:-60px; bottom:-120px; width:260px; height:260px;
  border-radius:50%; background:rgba(255,255,255,.06); pointer-events:none;
}
.hero-inner{ max-width:1180px; margin:0 auto; position:relative; z-index:1; }
.breadcrumb{ font-size:12.5px; margin-bottom:14px; color:rgba(255,255,255,.85); }
.breadcrumb a{ color:rgba(255,255,255,.85); text-decoration:none; }
.breadcrumb a:hover{ color:#fff; text-decoration:underline; }
.article-hero h1{
  font-size:clamp(24px,3.4vw,34px); line-height:1.5; margin:0 0 14px; font-weight:800;
  text-wrap:balance;
}
.hero-meta{ display:flex; gap:14px; flex-wrap:wrap; align-items:center; font-size:13px; color:rgba(255,255,255,.9); }
.hero-meta .chip{
  background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.28);
  border-radius:999px; padding:4px 13px; font-weight:600;
}

/* ===== ワイド2カラムレイアウト ===== */
.page-wide{
  max-width:1180px; margin:-24px auto 0; padding:0 20px 64px;
  display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:28px;
  align-items:start; position:relative; z-index:2;
}
.article-main{
  background:var(--panel); border:1px solid var(--border); border-radius:18px;
  box-shadow:var(--shadow-lg); padding:40px 48px 48px; min-width:0;
}
@media (max-width:1023px){
  .page-wide{ grid-template-columns:1fr; }
  .side{ display:none; }
  .article-main{ padding:30px 22px 36px; }
}

/* ===== サイドバー ===== */
.side-sticky{ position:sticky; top:76px; display:grid; gap:18px; }
.side-card{
  background:var(--panel); border:1px solid var(--border); border-radius:14px;
  box-shadow:var(--shadow); padding:20px 20px;
}
.side-card .side-title{
  font-size:14px; font-weight:800; margin:0 0 12px; display:flex; align-items:center; gap:8px;
  color:var(--text);
}
.side-toc ol{ margin:0; padding-left:20px; font-size:13.5px; }
.side-toc li{ margin-bottom:8px; }
.side-toc a{ text-decoration:none; color:var(--muted); }
.side-toc a:hover{ color:var(--accent); text-decoration:underline; }
.side-cta{ text-align:center; background:linear-gradient(160deg,#f0f6ff,#e0edff); }
.side-cta strong{ display:block; font-size:15px; margin-bottom:4px; }
.side-cta p{ font-size:12.5px; color:var(--muted); margin:0 0 12px; }
.btn-primary{
  display:inline-block; background:var(--accent); color:#fff !important; text-decoration:none;
  padding:12px 24px; border-radius:10px; font-weight:700; font-size:14.5px;
  box-shadow:0 4px 14px rgba(37,99,235,.35); transition:transform .1s, box-shadow .15s;
}
.btn-primary:hover{ background:var(--accent-hover); transform:translateY(-1px); }

/* ===== アイキャッチ・図解 ===== */
.eyecatch{ margin:0 0 28px; }
.eyecatch svg{ display:block; border-radius:14px; border:1px solid var(--border); }
figure.fig{ margin:26px 0; text-align:center; }
figure.fig svg{ display:block; margin:0 auto; border-radius:12px; background:#f8fbff; border:1px solid var(--border); }
figure.fig figcaption{ font-size:12.5px; color:var(--muted); margin-top:8px; }

/* ===== 記事本文 ===== */
.post-lead{ font-size:16.5px; }
.article-main p{ margin:0 0 18px; font-size:16px; }
.article-main ul,.article-main ol{ padding-left:26px; margin:0 0 18px; }
.article-main li{ margin-bottom:8px; font-size:16px; }

.article-main h2{
  font-size:21px; line-height:1.5; margin:52px 0 22px; padding:14px 20px;
  background:linear-gradient(120deg,var(--accent),var(--accent-light));
  color:#fff; border-radius:10px; font-weight:800;
  box-shadow:0 4px 12px rgba(37,99,235,.22);
}
.article-main h2:first-of-type{ margin-top:36px; }
.article-main h3{
  font-size:18px; margin:36px 0 14px; padding:8px 0 8px 14px;
  border-left:5px solid var(--accent); border-bottom:2px solid var(--border);
  font-weight:750;
}
.article-main h4{ font-size:16px; margin:26px 0 10px; color:var(--accent-hover); }

/* 番号つきルール見出し */
.rule-num{
  display:inline-flex; align-items:center; justify-content:center;
  width:30px; height:30px; border-radius:50%; background:var(--accent); color:#fff;
  font-size:15px; font-weight:800; margin-right:10px; flex:none; vertical-align:-7px;
}

/* ===== マーカー・強調 ===== */
.marker{ background:linear-gradient(transparent 55%, var(--marker) 55%); font-weight:700; }
.marker-blue{ background:linear-gradient(transparent 55%, #bfdbfe 55%); font-weight:700; }

/* ===== 目次 ===== */
.toc{
  background:#f4f9ff; border:2px solid var(--line); border-radius:14px;
  padding:22px 26px; margin:0 0 34px;
}
.toc .toc-title{
  font-size:16px; font-weight:800; margin:0 0 12px;
  display:flex; align-items:center; gap:8px; color:var(--accent-hover);
}
.toc ol{ margin:0; padding-left:24px; font-size:15px; }
.toc li{ margin-bottom:7px; }
.toc a{ text-decoration:none; }
.toc a:hover{ text-decoration:underline; }

/* ===== 囲みボックス ===== */
.box{
  position:relative; border-radius:12px; padding:22px 22px 16px; margin:26px 0;
  border:2px solid; font-size:15.5px;
}
.box .box-label{
  position:absolute; top:-14px; left:16px;
  padding:2px 14px; border-radius:999px; font-size:12.5px; font-weight:800; color:#fff;
}
.box p:last-child, .box ul:last-child{ margin-bottom:0; }
.box-point{ border-color:var(--accent-light); background:#eff6ff; }
.box-point .box-label{ background:var(--accent); }
.box-good{ border-color:var(--good); background:var(--good-bg); }
.box-good .box-label{ background:var(--good); }
.box-warn{ border-color:var(--warn); background:var(--warn-bg); }
.box-warn .box-label{ background:var(--warn); }
.box-bad{ border-color:var(--bad); background:var(--bad-bg); }
.box-bad .box-label{ background:var(--bad); }

/* ===== 吹き出し ===== */
.bubble{
  display:flex; gap:14px; align-items:flex-start; margin:24px 0;
}
.bubble .avatar{
  width:48px; height:48px; border-radius:50%; flex:none;
  background:var(--accent); color:#fff; font-weight:800; font-size:20px;
  display:flex; align-items:center; justify-content:center;
  box-shadow:var(--shadow);
}
.bubble .talk{
  position:relative; background:#f0f6ff; border:1.5px solid var(--line);
  border-radius:14px; padding:14px 18px; font-size:15px; margin-top:2px;
}
.bubble .talk::before{
  content:""; position:absolute; left:-9px; top:16px;
  border-style:solid; border-width:7px 9px 7px 0;
  border-color:transparent var(--line) transparent transparent;
}
.bubble .talk::after{
  content:""; position:absolute; left:-7px; top:16px;
  border-style:solid; border-width:7px 9px 7px 0;
  border-color:transparent #f0f6ff transparent transparent;
}
.bubble .talk p{ margin:0; }

/* ===== ステップ ===== */
.steps{ counter-reset:step; list-style:none; padding:0 !important; margin:24px 0 !important; }
.steps > li{
  counter-increment:step; position:relative; padding:0 0 26px 58px; margin:0 !important;
}
.steps > li::before{
  content:counter(step); position:absolute; left:0; top:-2px;
  width:40px; height:40px; border-radius:50%;
  background:var(--accent); color:#fff; font-weight:800; font-size:18px;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 3px 10px rgba(37,99,235,.3);
}
.steps > li:not(:last-child)::after{
  content:""; position:absolute; left:19px; top:42px; bottom:2px; width:2px;
  background:var(--border);
}
.steps > li strong.step-title{ display:block; font-size:16.5px; margin-bottom:4px; }

/* ===== テーブル ===== */
.table-wrap{ overflow-x:auto; margin:0 0 22px; border-radius:12px; border:1px solid var(--border); }
.article-main table{ width:100%; border-collapse:collapse; font-size:15px; margin:0; }
.article-main th,.article-main td{ border:none; border-bottom:1px solid var(--border); padding:12px 16px; text-align:left; }
.article-main thead th{ background:var(--accent); color:#fff; font-weight:700; white-space:nowrap; }
.article-main tbody tr:nth-child(even){ background:#f4f9ff; }
.article-main tbody tr:last-child td{ border-bottom:none; }
.article-main table kbd{
  background:#102033; color:#fff; border-radius:6px; padding:2px 9px; font-size:13px;
  font-family:Consolas,monospace; white-space:nowrap;
}

/* ===== 広告枠 ===== */
.ad-slot{
  width:100%; min-height:96px; border:1px dashed #93c5fd; border-radius:14px;
  background:linear-gradient(135deg, rgba(219,234,254,.92), rgba(255,255,255,.92));
  color:#52667d; display:flex; align-items:center; justify-content:center; text-align:center;
  padding:16px; margin:34px 0;
}
.ad-slot-inner{ max-width:520px; }
.ad-slot .ad-label{
  display:inline-flex; margin:0 0 8px; color:#1d4ed8; background:#fff; border:1px solid #bfdbfe;
  border-radius:999px; padding:4px 9px; font-size:11px; font-weight:800;
}
.ad-slot strong{ display:block; color:#102033; font-size:14px; margin-bottom:4px; }
.ad-slot p{ margin:0; font-size:12.5px; line-height:1.6; }

/* ===== まとめ・CTA ===== */
.summary-box{
  background:#f4f9ff; border:2px solid var(--accent-light); border-radius:14px;
  padding:26px 28px; margin:34px 0;
}
.summary-box .summary-title{ font-size:17px; font-weight:800; color:var(--accent-hover); margin:0 0 12px; }
.summary-box ul{ margin:0; }
.cta-box{
  background:linear-gradient(135deg,#1e3a8a,#2563eb);
  border-radius:16px; color:#fff;
  padding:34px 28px; text-align:center; margin:40px 0 8px;
  box-shadow:0 10px 26px rgba(30,64,175,.3);
}
.cta-box strong{ display:block; font-size:20px; margin-bottom:8px; }
.cta-box p{ font-size:14px; color:rgba(255,255,255,.88); margin:0 0 18px; }
.cta-box a.btn{
  display:inline-block; background:#fff; color:var(--accent); text-decoration:none;
  padding:14px 36px; border-radius:12px; font-weight:800; font-size:16px;
  box-shadow:0 6px 18px rgba(0,0,0,.18); transition:transform .1s;
}
.cta-box a.btn:hover{ transform:translateY(-2px); }

/* ===== 関連記事 ===== */
.related{ margin-top:36px; }
.related h2{ font-size:18px; margin:0 0 16px; padding:0; background:none; color:var(--text); box-shadow:none; border-bottom:2px solid var(--accent); padding-bottom:8px; border-radius:0; }
.related-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:640px){ .related-grid{ grid-template-columns:1fr; } }
.related-card{
  display:flex; flex-direction:column; text-decoration:none;
  background:var(--panel); border:1px solid var(--border); border-radius:14px; overflow:hidden;
  box-shadow:var(--shadow); transition:transform .12s, box-shadow .15s, border-color .15s;
}
.related-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-lg); border-color:var(--accent); }
.related-card .thumb{ background:linear-gradient(135deg,#dbeafe,#eff6ff); }
.related-card .thumb svg{ display:block; }
.related-card .rc-body{ padding:14px 16px 16px; }
.related-card .rc-title{ font-size:14.5px; font-weight:700; color:var(--text); line-height:1.6; }
.related-card .rc-more{ font-size:12.5px; color:var(--accent); margin-top:8px; font-weight:700; }

/* ===== 記事一覧（guide/index.html） ===== */
.guide-hero{
  background:linear-gradient(135deg,#1e3a8a 0%,#2563eb 55%,#3b82f6 100%);
  color:#fff; padding:44px 20px 52px; text-align:center;
}
.guide-hero h1{ font-size:clamp(24px,3.2vw,32px); margin:0 0 10px; font-weight:800; }
.guide-hero p{ color:rgba(255,255,255,.88); margin:0; font-size:15px; }
.list-page{ max-width:1180px; margin:-26px auto 0; padding:0 20px 64px; position:relative; }
.post-grid{ list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
@media (max-width:1023px){ .post-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .post-grid{ grid-template-columns:1fr; } }
.post-card{
  background:var(--panel); border:1px solid var(--border); border-radius:16px; overflow:hidden;
  box-shadow:var(--shadow); transition:transform .12s, box-shadow .15s, border-color .15s;
  display:flex; flex-direction:column;
}
.post-card:hover{ transform:translateY(-4px); box-shadow:var(--shadow-lg); border-color:var(--accent); }
.post-card .thumb{ background:linear-gradient(135deg,#dbeafe,#eff6ff); }
.post-card .thumb svg{ display:block; width:100%; }
.post-card .pc-body{ padding:18px 20px 20px; display:flex; flex-direction:column; gap:8px; }
.post-card a.title{ font-size:16px; font-weight:800; text-decoration:none; line-height:1.6; color:var(--text); }
.post-card a.title:hover{ color:var(--accent); }
.post-card .date{ font-size:12px; color:var(--muted); }
.post-card p{ margin:0; font-size:13.5px; color:var(--muted); }

/* ===== フッター ===== */
.site-footer{
  border-top:1px solid var(--border); background:var(--panel);
  padding:26px 20px; margin-top:20px;
}
.site-footer-inner{
  max-width:1180px; margin:0 auto; display:flex; justify-content:space-between;
  gap:14px; flex-wrap:wrap; font-size:13px; color:var(--muted);
}
.site-footer a{ color:var(--muted); text-decoration:none; margin-right:14px; }
.site-footer a:hover{ color:var(--accent); }
