/* ==========================================================
   续历 · 版式（template = 不同的 DOM 结构 + 各自的 CSS）
   default 用左右两栏；其余版式把整页渲染进 .left、.right 留空。
   所有版式共享同一份 JSON 与 data-bind 路径；颜色只读主题变量。
   ========================================================== */
.resume.t-single .body,.resume.t-masthead .body,.resume.t-rail .body,.resume.t-rows .body,.resume.t-split .body{display:block;}
.resume.t-single .body::after,.resume.t-masthead .body::after,.resume.t-rail .body::after,.resume.t-rows .body::after,.resume.t-split .body::after{display:none;}
.resume.t-single .left,.resume.t-masthead .left,.resume.t-rail .left,.resume.t-rows .left,.resume.t-split .left{width:auto;padding:0;}
.resume.t-single .right,.resume.t-masthead .right,.resume.t-rail .right,.resume.t-rows .right,.resume.t-split .right{display:none;}

/* — 报头 — */
.resume.t-masthead{padding:14mm 16mm;}
.resume.t-masthead .mh{display:flex;align-items:flex-start;gap:10mm;}
.resume.t-masthead .mh-id{flex:1;min-width:0;}
.resume.t-masthead .mh .nm{margin:0;font-size:calc(var(--fs-name) * 1.18);line-height:1.12;font-weight:700;letter-spacing:.02em;font-family:var(--font-cjk-serif);}
.resume.t-masthead .mh .tagline{margin:2.4mm 0 0;font-size:calc(var(--fs-tagline) * .92);color:var(--accent);}
.resume.t-masthead .mh .pos{margin:1mm 0 0;font-size:var(--fs-pos);color:var(--muted);}
.resume.t-masthead .mh .photo{width:30mm;height:30mm;margin:0;flex:none;border-radius:2px;}
.resume.t-masthead .mh-bar{display:flex;justify-content:space-between;align-items:baseline;gap:8mm;margin-top:5mm;padding-bottom:2.6mm;border-bottom:0.8pt solid var(--accent);}
.resume.t-masthead .mh-role .role{margin:0;font-size:calc(var(--fs-role) * .95);font-weight:600;}
.resume.t-masthead .mh-role .dir{margin:.6mm 0 0;font-size:9pt;color:var(--muted);}
.resume.t-masthead .mh-contact{display:flex;flex-wrap:wrap;gap:1mm 7mm;margin:0;}
.resume.t-masthead .mh-contact .row{display:flex;align-items:center;gap:1.4mm;}
.resume.t-masthead .mh-contact dt{color:var(--muted);font-size:calc(var(--fs-contact) * .9);}
.resume.t-masthead .mh-contact dd{margin:0;font-size:var(--fs-contact);}
.resume.t-masthead .mh-cols{display:grid;grid-template-columns:34% 1fr;margin-top:5mm;}
.resume.t-masthead .mh-aside{padding-right:9mm;}
.resume.t-masthead .mh-main{padding-left:10mm;border-left:0.5pt solid var(--line);}
.resume.t-masthead .mh-main .summary{margin-top:0;}

/* — 轨道 — */
.resume.t-rail{padding:0;}
.resume.t-rail .rl{position:relative;display:grid;grid-template-columns:29% 1fr;min-height:297mm;}
.resume.t-rail .rl::before{content:'';position:absolute;left:0;top:0;bottom:0;width:29%;background:var(--rail);}
.resume.t-rail .rl-rail{position:relative;padding:14mm 5mm 14mm 12mm;}
.resume.t-rail .rl-main{padding:14mm 14mm 14mm 10mm;}
.resume.t-rail .rl-rail .photo{width:100%;height:auto;aspect-ratio:1;margin:0 0 4mm;border-radius:2px;}
.resume.t-rail .left-id{margin-bottom:3mm;padding-bottom:2mm;border-bottom:0.6pt solid var(--line);}
.resume.t-rail .left-id .role{color:var(--ink);}
.resume.t-rail .rl-contact{margin-bottom:4mm;}
.resume.t-rail .rl-contact .row{display:flex;gap:1mm;margin-bottom:1mm;font-size:calc(var(--fs-contact) * .86);line-height:1.45;}
.resume.t-rail .rl-contact dd{margin:0;overflow-wrap:anywhere;}
.resume.t-rail .rl-rail .block{margin-bottom:2.4mm;}
.resume.t-rail .rl-rail .block h2{font-size:calc(var(--fs-h2) * .72);letter-spacing:.05em;margin-bottom:1mm;}
.resume.t-rail .rl-rail ul.chips .chip{font-size:calc(var(--fs-keyword) * .9);}
.resume.t-rail .rl-head .nm{margin:0;font-size:calc(var(--fs-name) * 1.1);line-height:1.14;font-weight:700;letter-spacing:.02em;font-family:var(--font-cjk-serif);}
.resume.t-rail .rl-head .tagline{margin:1.8mm 0 0;font-size:calc(var(--fs-tagline) * .88);color:var(--accent);}
.resume.t-rail .rl-head .pos{margin:.8mm 0 0;font-size:var(--fs-pos);color:var(--muted);}
.resume.t-rail .rl-main .summary{margin-top:3.5mm;}
/* 时间线：日期挪到右侧窄槽，正文让出固定宽度 */
.resume.t-rail .r-sec .entry{position:relative;padding-right:23mm;}
.resume.t-rail .r-sec .entry-head .meta{position:absolute;right:0;top:.2mm;width:21mm;margin:0;text-align:right;}
.resume.t-rail .r-sec .entry-head .meta time{font-size:calc(var(--fs-meta) * .92);color:var(--muted);}

/* — 分栏（行式段落）— */
.resume.t-rows{padding:14mm 16mm;}
.resume.t-rows .rw-head{display:flex;align-items:flex-start;gap:10mm;}
.resume.t-rows .rw-id{flex:1;min-width:0;}
.resume.t-rows .rw-head .nm{margin:0;font-size:calc(var(--fs-name) * 1.14);line-height:1.12;font-weight:700;letter-spacing:.02em;font-family:var(--font-cjk-serif);}
.resume.t-rows .rw-head .tagline{margin:2.2mm 0 0;font-size:calc(var(--fs-tagline) * .88);color:var(--accent);}
.resume.t-rows .rw-head .pos{margin:1mm 0 0;font-size:var(--fs-pos);color:var(--muted);}
.resume.t-rows .rw-head .photo{width:28mm;height:28mm;margin:0;flex:none;border-radius:2px;}
.resume.t-rows .rw-contact{display:flex;flex-wrap:wrap;gap:1mm 8mm;margin:4.5mm 0 0;padding:2.6mm 0;border-top:0.8pt solid var(--ink);border-bottom:0.4pt solid var(--line);}
.resume.t-rows .rw-contact .row{display:flex;align-items:center;gap:1.4mm;}
.resume.t-rows .rw-contact dt{color:var(--muted);font-size:calc(var(--fs-contact) * .9);}
.resume.t-rows .rw-contact dd{margin:0;font-size:var(--fs-contact);}
.resume.t-rows .rw-role{margin:2.6mm 0 0;font-size:var(--fs-pos);color:var(--muted);}
.resume.t-rows .rw{margin-top:2mm;}
.resume.t-rows .rw-row{display:grid;grid-template-columns:27% 1fr;gap:0 9mm;padding:1mm 0;border-top:0.5pt solid var(--line);}
.resume.t-rows .rw-row h2{margin:0;align-self:start;font-size:var(--fs-h2);font-weight:700;color:var(--ink);letter-spacing:.06em;}
.resume.t-rows .rw-row h2 .ico{display:none;}
.resume.t-rows .rw-body{min-width:0;}
.resume.t-rows .rw-body .summary{margin:0;font-size:var(--fs-bullet);line-height:1.7;}
.resume.t-rows .rw-add{display:flex;gap:6px;margin-top:3mm;}
.resume.t-rows .rw-body .entry{margin-bottom:1.4mm;}
.resume.t-rows .rw-body ul.bullets li{line-height:1.72;}

/* — 对开 — */
.resume.t-split{padding:14mm 16mm;}
.resume.t-split .sp-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10mm;}
.resume.t-split .sp-id{flex:1;min-width:0;}
.resume.t-split .sp-head .nm{margin:0;font-size:calc(var(--fs-name) * 1.14);line-height:1.12;font-weight:700;letter-spacing:.02em;font-family:var(--font-cjk-serif);}
.resume.t-split .sp-head .tagline{margin:2.2mm 0 0;font-size:calc(var(--fs-tagline) * .88);color:var(--accent);}
.resume.t-split .sp-head .pos{margin:1mm 0 0;font-size:var(--fs-pos);color:var(--muted);}
.resume.t-split .sp-head .photo{width:29mm;height:29mm;margin:0;flex:none;border-radius:2px;}
.resume.t-split .sp-contact{display:flex;flex-wrap:wrap;gap:1mm 8mm;margin:4.5mm 0 0;padding:2.4mm 0;border-top:0.8pt solid var(--accent);border-bottom:0.4pt solid var(--line);}
.resume.t-split .sp-contact .row{display:flex;align-items:center;gap:1.4mm;}
.resume.t-split .sp-contact dt{color:var(--muted);font-size:calc(var(--fs-contact) * .9);}
.resume.t-split .sp-contact dd{margin:0;font-size:var(--fs-contact);}
.resume.t-split .sp-body{display:grid;grid-template-columns:1fr 1fr;margin-top:4mm;}
.resume.t-split .sp-a{padding-right:9mm;border-right:0.5pt solid var(--line);}
.resume.t-split .sp-b{padding-left:9mm;}
.resume.t-split .sp-a .left-id{margin:3mm 0 0;padding-bottom:1.6mm;border-bottom:0.5pt solid var(--line);}
.resume.t-split .sp-a .summary{margin-top:3mm;}
.resume.t-split .sp-a .block{margin-bottom:2.2mm;}
.resume.t-split .sp-b .entry{margin-bottom:1.6mm;}
.resume.t-split .sp-b .r-sec:first-child{margin-top:0;padding-top:0;border-top:0;}

/* — 单栏（国内通用投递版）—
   依据 docs/调研中国环境下比较实用的专业的简历排版应该是怎么样的.md：
   A4 单栏、页边距 18–20mm、全文一种字体、黑 / 深灰为主（主题色只用于标题下的细线）、
   日期统一靠右、模块间距明显大于条目间距、无图标 / 色块 / 进度条。 */
.resume.t-single{padding:18mm 20mm;}
.resume.t-single,.resume.t-single .nm,.resume.t-single h2,.resume.t-single h3{font-family:var(--font-cjk-serif);}
.resume.t-single .sc-head{display:flex;align-items:flex-start;gap:8mm;}
.resume.t-single .sc-id{flex:1;min-width:0;}
.resume.t-single .sc-line{display:flex;align-items:baseline;justify-content:space-between;gap:6mm;flex-wrap:wrap;}
.resume.t-single .sc-line .nm{margin:0;font-size:calc(var(--fs-name) * .95);line-height:1.2;font-weight:700;letter-spacing:.08em;color:var(--ink);}
.resume.t-single .sc-target{margin:0;font-size:var(--fs-role);font-weight:600;color:var(--ink);}
.resume.t-single .sc-label{font-weight:400;color:var(--muted);}
.resume.t-single .sc-dot{color:var(--muted);font-weight:400;}
.resume.t-single .sc-sub{margin:1.6mm 0 0;font-size:var(--fs-pos);color:var(--muted);}
.resume.t-single .sc-contact{display:flex;flex-wrap:wrap;margin:2.2mm 0 0;font-size:var(--fs-contact);color:var(--ink);font-variant-numeric:tabular-nums;}
.resume.t-single .sc-contact .row{display:flex;align-items:baseline;}
.resume.t-single .sc-contact .row + .row::before{content:"｜";color:var(--line);margin:0 1.6mm;}
.resume.t-single .sc-contact dt{display:none;}
.resume.t-single .sc-contact dd{margin:0;}
.resume.t-single .sc-contact .ico{display:none;}
.resume.t-single .sc-head .photo{width:25mm;height:35mm;margin:0;flex:none;border-radius:0;object-position:50% 25%;}
.resume.t-single .sc-head .photo-empty{width:25mm;height:35mm;}

.resume.t-single .sc-sec{margin-top:5mm;}
.resume.t-single .sc-head + .sc-sec{margin-top:6mm;}
.resume.t-single .sc-sec > h2{display:flex;align-items:center;gap:5px;margin:0 0 2mm;padding-bottom:1.2mm;border-bottom:.6pt solid var(--accent);font-size:calc(var(--fs-h2) * .96);font-weight:700;color:var(--ink);letter-spacing:.1em;}
.resume.t-single .sc-sec > h2 .ico{display:none;}
.resume.t-single .summary{margin:0;padding:0;border:0;font-size:var(--fs-summary);line-height:1.7;text-align:justify;}

.resume.t-single .entry{margin-bottom:2.6mm;}
.resume.t-single .entry:last-child{margin-bottom:0;}
.resume.t-single .entry-head{gap:0 4mm;margin-bottom:.8mm;}
.resume.t-single .entry-head h3{font-size:var(--fs-h3);font-weight:700;color:var(--ink);}
.resume.t-single .entry-head .sub{font-size:var(--fs-bullet);color:var(--ink);}
.resume.t-single .entry-head .meta{font-family:inherit;font-variant-numeric:tabular-nums;color:var(--muted);}
.resume.t-single ul.bullets li,.resume.t-single .left ul.list li{padding-left:3.2mm;margin-bottom:.6mm;font-size:var(--fs-bullet);line-height:1.68;}
.resume.t-single ul.bullets li::before,.resume.t-single .left ul.list li::before{top:.68em;width:.95mm;height:.95mm;border-radius:50%;background:var(--ink);opacity:.6;}

/* 技能关键词：不做色块，用间隔号排成一行 */
.resume.t-single ul.chips{gap:.6mm 0;}
.resume.t-single ul.chips .chip{padding:0;background:none;border-radius:0;color:var(--ink);font-size:var(--fs-bullet);line-height:1.68;}
.resume.t-single ul.chips .chip + .chip::before{content:"·";margin:0 1.8mm;color:var(--muted);}
/* 键值段落：键在左侧固定宽度，值左对齐（等同 Word 里的制表位） */
.resume.t-single .left dl.kv{display:grid;grid-template-columns:20mm 1fr;gap:.8mm 3mm;}
.resume.t-single .left dl.kv dt{margin:0;font-size:var(--fs-bullet);line-height:1.68;color:var(--muted);}
.resume.t-single .left dl.kv dd{font-size:var(--fs-bullet);line-height:1.68;}
.resume.t-single.is-editing .left dl.kv{grid-template-columns:20mm 1fr auto;}
.resume.t-single.is-editing .sc-contact dt{display:inline;margin-right:1mm;color:var(--muted);}
.resume.t-single .sc-add{display:flex;gap:6px;margin-top:3mm;}
