/* 数据故事 02：离开与留下 —— 中国 31 省人口迁移
   来源：独立页面 public-service-story-v3.html，选择器统一 scope 到 #migstory。
   仅在 slug = cn-migration 的文章页加载。
*/


#migstory{
  --bg:#f7f4ee; --surface:#fffdf8; --ink:#191610; --ink-2:#3d382e;
  --muted:#7a7264; --line:#e3dbcd; --line-2:#d3c8b6;
  --accent:#b4432e; --accent-soft:#e8b9a8; --teal:#2f6b66;
  --blue:#3f6f8f; --gold:#c98a5e;
  --shadow:0 1px 2px rgba(60,45,25,.05), 0 8px 28px rgba(60,45,25,.05);
}

#migstory *{box-sizing:border-box}

#migstory{-webkit-text-size-adjust:100%}

#migstory{
  margin:0; background:radial-gradient(1200px 600px at 8% -5%, #fffdf6 0%, rgba(255,253,246,0) 60%), var(--bg);
  color:var(--ink); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:16px; line-height:1.75; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}

#migstory .wrap{max-width:920px;margin:0 auto;padding:0 28px}

#migstory h1,
#migstory h2,
#migstory h3,
#migstory .serif{font-family:"Songti SC","Noto Serif CJK SC","Source Han Serif SC",Garamond,"Times New Roman",serif}

#migstory header.masthead{padding:30px 0 14px;border-bottom:1px solid var(--line)}

#migstory .kicker{display:flex;align-items:center;gap:12px;font-size:12px;letter-spacing:.22em;color:var(--accent);font-weight:600}

#migstory .kicker::before{content:"";width:34px;height:1px;background:var(--accent);display:block}

#migstory h1{font-size:clamp(28px,3.6vw,46px);line-height:1.12;font-weight:700;letter-spacing:-.01em;margin:14px 0 12px;max-width:17em}

#migstory h1 em{font-style:normal;color:var(--accent)}

#migstory .lead{font-size:15.5px;line-height:1.65;max-width:56em;color:var(--ink-2);margin:0 0 16px}

#migstory .lead b{font-weight:600;color:var(--ink);border-bottom:2px solid var(--accent-soft)}

#migstory .series{font-size:13px;line-height:1.75;color:var(--muted);margin:0 0 10px}

#migstory .series a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-soft)}

#migstory .series a:hover{border-bottom-color:var(--accent)}

#migstory .path{font-size:12.5px;color:var(--muted);margin:-4px 0 14px}

#migstory .path b{color:var(--accent)}

#migstory .byline{display:flex;flex-wrap:wrap;gap:6px 20px;font-size:12.5px;color:var(--muted)}

#migstory .byline span{white-space:nowrap}

#migstory .byline span::before{content:"";display:inline-block;width:3px;height:3px;background:var(--line-2);border-radius:50%;margin-right:10px;vertical-align:middle}

#migstory .strip{display:flex;flex-wrap:wrap;gap:10px 34px;align-items:baseline;padding:14px 0 6px;border-bottom:1px solid var(--line)}

#migstory .strip .item{font-size:12.5px;color:var(--muted)}

#migstory .strip .item b{font-family:"Songti SC",Georgia,serif;font-size:21px;color:var(--ink);margin-right:5px;font-weight:700}

#migstory .strip .note{margin-left:auto;font-size:11.5px;color:var(--muted)}

#migstory main{padding:24px 0 6px}

#migstory .block{background:var(--surface);border:1px solid var(--line);border-radius:5px;box-shadow:var(--shadow);margin-bottom:22px;overflow:hidden}

#migstory .block-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:16px 24px 12px;border-bottom:1px solid var(--line)}

#migstory .eyebrow{font-size:11px;letter-spacing:.14em;color:var(--muted);margin-bottom:3px}

#migstory .block-head h2{font-size:clamp(21px,2.4vw,28px);margin:0;line-height:1.25;letter-spacing:-.01em}

#migstory .block-head p{margin:4px 0 0;font-size:12.5px;color:var(--muted);max-width:60em}

#migstory .chart{padding:12px 24px 6px}

#migstory .edu-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:start}

@media (max-width:860px){
#migstory .edu-grid{grid-template-columns:1fr}
}

#migstory .insight{display:flex;gap:12px;align-items:flex-start;margin:4px 24px 18px;padding:12px 16px;background:#fbf6ec;border-left:3px solid var(--accent);font-size:13.5px;line-height:1.7;color:var(--ink-2)}

#migstory .insight b{color:var(--ink)}

#migstory .prose{max-width:880px;margin:0 auto;padding:2px 24px 28px;font-size:14.5px;line-height:1.95;color:var(--ink-2);text-wrap:pretty}

#migstory .prose p{margin:0 0 1.05em}

#migstory .prose p:last-child{margin-bottom:0}

#migstory .prose b{color:var(--ink);font-weight:600}

#migstory .prose h3{font-size:20px;margin:22px 0 10px;color:var(--ink);letter-spacing:-.01em}

#migstory .subhead{max-width:880px;margin:20px auto 0;padding:0 24px;font-size:21px;line-height:1.4;color:var(--ink);letter-spacing:-.01em}

#migstory .refs-section{max-width:900px;margin:6px auto 42px;padding:22px 24px 0;border-top:1px solid var(--line)}

#migstory .refs-section h3{font-size:22px;margin:0 0 12px}

#migstory .refs-section .refs{columns:2;column-gap:34px;font-size:11.5px;line-height:1.7}

#migstory .evidence{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:0 24px 16px}

#migstory .ev{background:#fbf6ec;border:1px solid var(--line);border-radius:4px;padding:10px 12px;font-size:12px;line-height:1.65;color:var(--ink-2)}

#migstory .ev b{display:block;font-size:10.5px;letter-spacing:.1em;color:var(--accent);margin-bottom:3px;font-weight:700}

#migstory .table-scroll{overflow-x:auto;padding:0 24px}

#migstory .matrix{width:100%;min-width:720px;margin:2px 0 16px;border-collapse:collapse;font-size:12px;line-height:1.6}

#migstory .matrix th{text-align:left;color:var(--muted);font-size:11px;font-weight:600;border-bottom:1px solid var(--line-2);padding:7px 8px}

#migstory .matrix td{border-bottom:1px solid var(--line);padding:7px 8px;vertical-align:top;color:var(--ink-2)}

#migstory .matrix td:first-child{font-weight:600;color:var(--ink)}

@media (max-width:900px){
#migstory .evidence{grid-template-columns:1fr}
#migstory .matrix{font-size:11px}
}

#migstory .toggle{display:flex;gap:6px;background:#f1eadc;border:1px solid var(--line-2);border-radius:999px;padding:3px}

#migstory .toggle button{border:0;background:transparent;font:inherit;font-size:12.5px;color:var(--muted);padding:6px 14px;border-radius:999px;cursor:pointer}

#migstory .toggle button.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(60,45,25,.12)}

#migstory .legend{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;padding:2px 24px 12px;font-size:11.5px;color:var(--muted)}

#migstory .legend .sw{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:6px;vertical-align:-1px}

#migstory .legend .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}

#migstory svg{display:block;width:100%;height:auto;overflow:visible}

#migstory .tile-name{font-size:12.5px;fill:#2f2a21;font-weight:600;paint-order:stroke;stroke:#fffdf8;stroke-width:2.6;stroke-linejoin:round}

#migstory .tile-val{font-size:10.5px;fill:#4b4437;paint-order:stroke;stroke:#fffdf8;stroke-width:2.4;stroke-linejoin:round}

#migstory .tile-name.dark,
#migstory .tile-val.dark{fill:#fffdf8;stroke:none}

#migstory .axis{font-size:10.5px;fill:#7a7264}

#migstory .axis-line{stroke:#cfc5b4;stroke-width:.8}

#migstory .grid-line{stroke:#e8e0d2;stroke-width:.7}

#migstory .lbl{font-size:10.5px;fill:#3d382e;paint-order:stroke;stroke:#fffdf8;stroke-width:2.4;stroke-linejoin:round}

#migstory .lbl-sm{font-size:9.5px;fill:#5a5244;paint-order:stroke;stroke:#fffdf8;stroke-width:2.2;stroke-linejoin:round}

#migstory .quad{font-size:11px;fill:#b0a693;letter-spacing:.08em}


#migstory .appendix{max-width:1000px;margin:38px auto 0;padding:34px 28px 6px;border-top:2px solid var(--ink)}

#migstory .ap-head{max-width:48em;margin-bottom:12px}

#migstory .ap-head h2{font-size:clamp(26px,3vw,35px);line-height:1.2;margin:10px 0 12px;letter-spacing:-.01em}

#migstory .ap-head .dek{font-size:15.5px;line-height:1.8;color:var(--ink-2);margin:0}

#migstory .part{display:grid;grid-template-columns:88px minmax(0,1fr);gap:28px;padding:26px 0 14px;border-top:1px solid var(--line);margin-top:26px}

#migstory .part:first-of-type{border-top:none;margin-top:8px}

#migstory .part-no{font-family:"Songti SC",Georgia,serif;font-size:42px;line-height:.92;color:#cdbca8;letter-spacing:-.02em}

#migstory .part-main{max-width:47em;min-width:0}

#migstory .part-main h3{font-size:clamp(21px,2.2vw,25px);margin:0 0 12px;line-height:1.3;letter-spacing:-.01em}

#migstory .part-main p{margin:0 0 1.05em;font-size:14.5px;line-height:1.95;color:var(--ink-2);text-wrap:pretty}

#migstory .part-main p.lead{font-size:15.5px;line-height:1.85;color:var(--ink)}

#migstory .part-main b{color:var(--ink);font-weight:600}

#migstory .srctable{width:100%;border-collapse:collapse;margin:8px 0 18px;font-size:12.5px;line-height:1.65;table-layout:fixed}

#migstory .srctable th{text-align:left;font-weight:600;color:var(--muted);font-size:10.5px;letter-spacing:.1em;padding:0 12px 7px 0;border-bottom:1px solid var(--ink)}

#migstory .srctable td{padding:9px 12px 9px 0;border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink-2)}

#migstory .srctable td:first-child{color:var(--ink);font-weight:600;width:34%}

#migstory .srctable td:nth-child(2){width:37%}

#migstory .srctable td:last-child{padding-right:0;color:var(--muted);font-size:11.5px;width:29%}

#migstory .refs{margin:14px 0 0;padding:0;list-style:none;columns:2;column-gap:40px;font-size:12px;line-height:1.72;color:var(--muted)}

#migstory .refs li{break-inside:avoid;margin:0 0 9px;padding-left:24px;text-indent:-24px}

#migstory .refs li b{color:var(--ink-2);font-weight:600}

@media (max-width:760px){

  #migstory .appendix{padding:26px 16px 4px}

  #migstory .part{grid-template-columns:1fr;gap:2px;padding:22px 0 10px;margin-top:22px}

  #migstory .part-no{font-size:27px;margin-bottom:3px}

  #migstory .part-main{max-width:none}

  #migstory .refs{columns:1}

  #migstory .refs-section .refs{columns:1}

  #migstory .srctable{font-size:13px}

  #migstory .srctable thead{display:none}

  #migstory .srctable tbody,
#migstory .srctable tr,
#migstory .srctable td{display:block;width:auto}

  #migstory .srctable tr{padding:9px 0;border-bottom:1px solid var(--line)}

  #migstory .srctable td{border:none;padding:0 0 2px}

  #migstory .srctable td:first-child{width:auto;margin-bottom:1px}

  #migstory .srctable td:nth-child(2){width:auto;color:var(--ink-2)}

  #migstory .srctable td:last-child{display:block;width:auto;font-size:11.5px;color:var(--muted);line-height:1.55}

  #migstory .srctable td:last-child::before{content:"注："}

}

#migstory .footer{max-width:1180px;margin:6px auto 40px;padding:18px 28px 0;border-top:1px solid var(--line);font-size:12px;line-height:1.8;color:var(--muted)}

#migstory .footer b{color:var(--ink-2)}

#migstory .footer ol{padding-left:18px;margin:6px 0 0}

#migstory .footer li{margin:3px 0}

#migstory #tip{position:fixed;z-index:50;pointer-events:none;background:#fffdf8;border:1px solid var(--line-2);box-shadow:0 6px 22px rgba(60,45,25,.14);border-radius:4px;padding:9px 12px;font-size:12px;line-height:1.55;color:var(--ink-2);opacity:0;transition:opacity .12s;max-width:240px}

#migstory #tip.on{opacity:1}

#migstory #tip b{color:var(--ink)}

@media (max-width:760px){

  #migstory .wrap{padding:0 16px}
#migstory .chart{padding:8px 10px 4px}
#migstory .block-head{padding:12px 16px 10px}

  #migstory .insight{margin:4px 16px 14px}
#migstory .strip{gap:8px 18px}
#migstory .strip .note{margin-left:0}

}

/* ---------- V3 narrative additions ---------- */
#migstory .masthead{padding:28px 0 16px}

#migstory h1{font-size:clamp(28px,3.5vw,44px);line-height:1.14;font-weight:700;letter-spacing:-.01em;margin:14px 0 12px;max-width:17em}

#migstory .lead{font-size:15.5px;line-height:1.8;max-width:56em;color:var(--ink-2);margin:0 0 16px}

#migstory .series{font-size:12.5px;line-height:1.75;color:var(--muted);margin:12px 0 0}

#migstory .byline span{white-space:normal}

#migstory .opening{padding:26px 0 2px}

#migstory .hook{display:flex;flex-wrap:wrap;align-items:flex-end;gap:18px 24px;padding:20px 22px;background:linear-gradient(135deg,#fffdf8 0%,#f9f1e4 100%);border:1px solid var(--line);border-radius:5px;box-shadow:var(--shadow)}

#migstory .hook-item{min-width:122px}

#migstory .hook-year{display:block;font-size:10.5px;letter-spacing:.14em;color:var(--muted);margin-bottom:6px}

#migstory .hook-val{display:block;font-family:"Songti SC","Noto Serif CJK SC",Georgia,serif;font-size:clamp(36px,4.6vw,56px);line-height:.95;font-weight:700;letter-spacing:-.035em;color:var(--ink)}

#migstory .hook-val small{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;font-size:12px;letter-spacing:0;font-weight:600;color:var(--muted);margin-left:4px}

#migstory .hook-val.accent{color:var(--accent)}

#migstory .hook-arrow{font-family:Georgia,serif;font-size:28px;line-height:1;color:var(--accent-soft);padding-bottom:8px}

#migstory .hook-copy{flex:1 1 320px;min-width:210px;font-size:13px;line-height:1.75;color:var(--ink-2);border-left:1px solid var(--line);padding:2px 0 2px 20px}

#migstory .hook-copy b{display:block;font-size:14.5px;color:var(--ink);margin-bottom:4px}

#migstory .opening-note{font-size:11.5px;line-height:1.65;color:var(--muted);margin:8px 2px 17px}

#migstory .opening-copy{font-size:15px;line-height:1.9;color:var(--ink-2);max-width:54em;margin:0 0 1em}

#migstory .opening-copy b{color:var(--ink);font-weight:600}

#migstory .anomaly-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:0 24px 16px}

#migstory .anomaly{background:#fbf6ec;border:1px solid var(--line);border-top:2px solid var(--line-2);padding:11px 13px}

#migstory .anomaly.hot{border-top-color:var(--accent);background:#fdf1ea}

#migstory .anomaly .k{display:block;font-size:10px;letter-spacing:.05em;color:var(--muted);line-height:1.45}

#migstory .anomaly .v{display:block;font-family:"Songti SC",Georgia,serif;font-size:25px;line-height:1.08;font-weight:700;color:var(--ink);margin:4px 0 2px;letter-spacing:-.01em}

#migstory .anomaly.hot .v{color:var(--accent)}

#migstory .anomaly .s{display:block;font-size:10.5px;color:var(--muted);line-height:1.45}

#migstory .policy-panel{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:24px;align-items:stretch;margin:4px 24px 18px;padding:18px 20px;background:#fbf6ec;border:1px solid var(--line);border-left:3px solid var(--accent)}

#migstory .policy-panel .tag,
#migstory .mode-card .tag{display:block;font-size:10.5px;letter-spacing:.12em;color:var(--accent);font-weight:600;margin-bottom:5px}

#migstory .policy-panel h3{font-size:22px;line-height:1.35;margin:0 0 9px;color:var(--ink)}

#migstory .policy-panel p{font-size:13px;line-height:1.8;color:var(--ink-2);margin:0 0 .8em}

#migstory .policy-panel p:last-child{margin-bottom:0}

#migstory .policy-panel .fine{font-size:11.5px;color:var(--muted);line-height:1.7}

#migstory .policy-stats{display:grid;grid-template-columns:1fr;gap:8px;border-left:1px solid var(--line);padding-left:18px;align-content:center}

#migstory .policy-stat{padding:8px 0;border-bottom:1px solid rgba(227,219,205,.7)}

#migstory .policy-stat:last-child{border-bottom:none}

#migstory .policy-stat b{display:block;font-family:"Songti SC",Georgia,serif;font-size:28px;line-height:1.05;color:var(--ink);letter-spacing:-.02em}

#migstory .policy-stat b small{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;font-size:11px;font-weight:600;color:var(--muted);margin-left:2px}

#migstory .policy-stat span{display:block;font-size:10.5px;color:var(--muted);line-height:1.5;margin-top:4px}

#migstory .mode-synthesis{padding:28px 0 8px;border-top:2px solid var(--ink);margin-top:4px}

#migstory .mode-synthesis h2{font-size:clamp(25px,2.8vw,33px);line-height:1.25;margin:7px 0 9px;letter-spacing:-.01em}

#migstory .mode-intro{font-size:13.5px;line-height:1.8;color:var(--ink-2);max-width:62em;margin:0 0 16px}

#migstory .mode-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}

#migstory .mode-card{background:var(--surface);border:1px solid var(--line);border-top:2px solid var(--line-2);border-radius:3px;padding:15px 16px 14px;box-shadow:var(--shadow)}

#migstory .mode-card.market{border-top-color:var(--accent)}

#migstory .mode-card.time{border-top-color:var(--gold)}

#migstory .mode-card.policy{border-top-color:var(--teal)}

#migstory .mode-card .tag{color:var(--muted);margin-bottom:7px}

#migstory .mode-card h3{font-size:21px;margin:0 0 7px;line-height:1.3}

#migstory .mode-card p{font-size:12.5px;line-height:1.75;color:var(--ink-2);margin:0 0 12px;min-height:5.2em}

#migstory .mode-big{display:block;font-family:"Songti SC",Georgia,serif;font-size:24px;line-height:1.1;color:var(--ink);letter-spacing:-.01em}

#migstory .mode-small{display:block;font-size:10.5px;line-height:1.5;color:var(--muted);margin-top:3px}

#migstory .mode-block{margin:30px 0 6px}

#migstory .mode-block > .mode-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:center;margin:0 24px;padding:16px 20px}

#migstory .mode-block .mode-card-body{min-width:0}

#migstory .mode-block .mode-card p{min-height:0;margin:0}

#migstory .mode-block .mode-card-metric{text-align:right;white-space:nowrap}

#migstory .mode-block .mode-big{font-size:30px}

#migstory .prose .fine{font-size:12.5px;color:var(--muted);line-height:1.75}

@media (max-width:760px){

  #migstory .mode-block{margin:22px 0 4px}

  #migstory .mode-block > .mode-card{grid-template-columns:1fr;gap:8px;margin:0 16px;padding:14px 16px}

  #migstory .mode-block .mode-card-metric{text-align:left;white-space:normal}

  #migstory .mode-block .mode-big{font-size:26px}

}

#migstory .closing-block{max-width:880px;margin:20px auto 26px;padding:30px 28px 30px;border-top:2px solid var(--ink);border-bottom:1px solid var(--line)}

#migstory .closing-block h2{font-size:clamp(27px,3.3vw,38px);line-height:1.24;margin:8px 0 17px;letter-spacing:-.01em}

#migstory .closing-block p{font-size:15px;line-height:1.95;color:var(--ink-2);margin:0 0 1em}

#migstory .closing-block p.last{font-family:"Songti SC","Noto Serif CJK SC",Georgia,serif;font-size:19px;line-height:1.75;color:var(--ink);border-left:2px solid var(--accent-soft);padding-left:17px;margin:22px 0 0}

#migstory .method-box{max-width:880px;margin:8px auto 34px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

#migstory .method-box summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--ink-2);letter-spacing:.02em}

#migstory .method-body{padding-top:12px;font-size:12px;line-height:1.82;color:var(--muted)}

#migstory .method-body p{margin:0 0 .75em}

#migstory .method-body b{color:var(--ink-2);font-weight:600}

#migstory .refs-note{font-size:11.5px;line-height:1.65;color:var(--muted);margin:-2px 0 12px}

@media (max-width:900px){

  #migstory .anomaly-grid{grid-template-columns:repeat(2,minmax(0,1fr))}

  #migstory .policy-panel{grid-template-columns:1fr}

  #migstory .policy-stats{grid-template-columns:repeat(3,minmax(0,1fr));border-left:none;border-top:1px solid var(--line);padding:12px 0 0}

  #migstory .policy-stat{padding:0 10px 0 0;border-bottom:none;border-right:1px solid rgba(227,219,205,.7)}

  #migstory .policy-stat:last-child{border-right:none}

  #migstory .mode-grid{grid-template-columns:1fr}

  #migstory .mode-card p{min-height:0}

}

@media (max-width:760px){

  #migstory .hook{gap:12px 14px;padding:16px}

  #migstory .hook-arrow{display:none}

  #migstory .hook-item{min-width:calc(50% - 7px)}

  #migstory .hook-copy{flex-basis:100%;border-left:none;border-top:1px solid var(--line);padding:12px 0 0}

  #migstory .opening{padding-top:20px}

  #migstory .anomaly-grid{padding:0 16px 14px}

  #migstory .policy-panel{margin:2px 16px 16px;padding:15px 16px}

  #migstory .policy-stats{padding-left:0}

  #migstory .mode-synthesis{padding:24px 16px 6px}

  #migstory .closing-block{padding:24px 16px 26px}

  #migstory .closing-block p.last{font-size:17px}

  #migstory .method-box{margin-left:16px;margin-right:16px}

}

