/* 候選人頁 v4（海報化，定稿 proto_candidate_v4.html）。
   全 cv- 前綴與 _shared.css 隔離；黨色由各頁內嵌 :root 覆寫
   --pc/--pc-ink/--pc-soft/--pc-num/--pc-hero（預設聯盟紫）。 */
:root{
  /* 基色由 _shared.css 全域 token 供給（健檢：刪同名同值重複定義）。
     黨色 5 token 預設＝聯盟紫（值源 design-tokens.json color_party_derived），各頁內嵌 :root 覆寫。 */
  --pc:var(--fwd);--pc-ink:var(--fwd-ink);--pc-soft:var(--fwd-soft);--pc-num:var(--fwd-num);--pc-hero:var(--fwd-hero);
}
body[data-page="candidates"]{font-weight:500;line-height:1.7}
.cv-wrap{max-width:1080px;margin:0 auto;padding:0 24px}

/* ===== S1 Hero 海報化 ===== */
/* 07-05 定案（全站正式預設，35 人一致）：拱門站台（.cv-arch）＋ v1 暗紫場景（.cv-poster--v1）＋黨色（拱門讀 var(--pc)）。
   統一形狀＋統一暗場，單一版本；比較階段的多場景/多形狀/斜帶 modifier（v2 斜切・v3 亮場・blob・partycolor・
   circle/squircle/capsule/leaf 形狀・方向D 金色斜帶 ::before）已全數收乾淨（見 git 史）。
   .cv-poster 只留結構基座；背景/地板/拱門全在下方 .cv-poster--v1 段（各頁一定同時掛 v1）。
   零重拍：沿用既有 assets/faces/hero/*.webp 去背照，純版面/CSS 調整。 */
.cv-poster{
  position:relative;overflow:hidden;color:#fff;
  /* 背景/地板/拱門一律由 .cv-poster--v1 供給（全站唯一場景），故基座不另設 background */
}
.cv-poster::before{ /* 網點紋理：打破純色/漸層滿版背景的攝影棚感 */
  content:"";position:absolute;inset:0;z-index:0;opacity:.14;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.9) 1.4px,transparent 1.6px);
  background-size:14px 14px;mix-blend-mode:overlay;
}
.cv-ttop,.cv-tbot{text-shadow:0 1px 14px rgba(43,31,69,.35)}/* 淡化區邊界輕陰影保可讀 */
.cv-pgrid{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 600px;grid-template-areas:'top photo' 'bot photo';grid-template-rows:auto 1fr;gap:0 16px;min-height:620px}
.cv-ttop{grid-area:top;padding-top:60px;position:relative;z-index:3}
.cv-tbot{grid-area:bot;padding-bottom:110px;position:relative;z-index:3;align-self:end}
.cv-pill{display:inline-block;background:var(--pc);color:var(--pc-ink);font-size:var(--fs-base);font-weight:900;letter-spacing:2px;padding:7px 18px;border-radius:999px;margin-bottom:20px}
.cv-poster h1{font-size:128px;font-weight:900;letter-spacing:6px;line-height:1.02;margin:0 0 12px}
.cv-poster h1 .cv-tuck{display:inline-block;margin-right:-.07em}/* 姓名末字微疊入照片側，打破名牌｜照片絕對對稱並排 */
.cv-dist{font-size:var(--fs-m);font-weight:700;color:rgba(255,255,255,.75);margin-bottom:18px}
.cv-slogan{font-family:'Noto Serif TC',serif;font-size:34px;font-weight:900;line-height:1.6;margin-bottom:22px;max-width:22ch}
.cv-slogan.long{font-size:var(--fs-l)}
.cv-slogan .hl{color:var(--pc-hero);white-space:nowrap}
.cv-creds{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}
.cv-cred{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);color:#fff;font-size:var(--fs-xs);font-weight:700;padding:5px 14px;border-radius:999px}
.cv-cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;position:relative;z-index:4}
.cv-social{display:flex;gap:10px;margin-left:4px;position:relative;z-index:4}
.cv-social a{width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;color:#fff;transition:.15s}
.cv-social a:hover{background:#fff;color:var(--p)}
.cv-social svg{width:20px;height:20px}
.cv-photo{grid-area:photo;position:relative;z-index:1;pointer-events:none;align-self:start;justify-self:end;display:flex;justify-content:flex-end;width:min(600px,52vw);margin-top:104px}
.cv-photo img{position:relative;z-index:1;width:100%;height:auto;display:block;margin-right:0;filter:drop-shadow(0 12px 22px rgba(0,0,0,.32))}
.cv-photo .cv-noimg{position:relative;z-index:1;width:340px;height:340px;border-radius:50%;background:var(--pc);color:var(--pc-ink);display:flex;align-items:center;justify-content:center;font-size:120px;font-weight:900}

/* ============================================================
   定案 hero「拱門基座・暗場破框」（.cv-poster--v1，全站唯一場景，實照落地 proto_candidate_hero_polish.html）。
   design-director 病灶修法：① 中央空洞 → 巨大淡字 .cv-word「前進」水印填呼吸區；
   ② 黑三角 → 覆寫成單一和緩斜切地板；③ 背景過忙 → 收成單一徑向深紫；
   ④ 色塊像貼紙 → .cv-arch 完整拱門站台（收在地板線），人像破框而出。
   拱門填色讀該頁黨色 token var(--pc)（台灣前進 .cv-poster--goldarch fallback 金色）；零重拍沿用 hero webp。
   破框關鍵：站台 .cv-arch 為 .cv-photo 內絕對定位、z-index:0 永遠在人像(img z-index:1)之後，
   且 .cv-photo overflow 保持可見，人像頭頂/髮絲自然溢出拱門上緣（真照片加分處）。
   ============================================================ */
.cv-poster--v1 .cv-photo{align-self:end;margin-top:0;overflow:visible}
/* v1 人像保留 bottom-anchored 破框，但限制橫向 footprint，避免寬圖蓋到左欄 CTA 與社群。 */
.cv-poster--v1 .cv-photo img{width:min(600px,52vw);height:auto;max-width:100%;margin-right:-24px}
/* poster 高由左欄文字長度決定，保留較高地板讓人像和旗面有垂直張力。 */
.cv-poster--v1 .cv-pgrid{min-height:720px}
.cv-arch{position:absolute;z-index:0;pointer-events:none}       /* 站台：永遠在人像之後 */
.cv-word{position:absolute;z-index:0;font-family:'Noto Serif TC',serif;font-weight:900;line-height:.86;letter-spacing:12px;writing-mode:vertical-rl;pointer-events:none;user-select:none}

/* --- 變體1：暗場破框場景（v1）＝深紫 radial 底＋淡點紋＋斜切地板＋「前進」水印 --- */
/* hero 底色走 poster 調色盤 token（不再硬寫 hex；與總覽頁 .cl-hero 共用同一組 radial 配方）。
   註：poster 家族（候選人＋總覽）刻意比 .tf-hero/首頁的內容 hero 深且沉，當人像/旗幟色塊的背板；兩套 hero 調色盤是刻意分層。 */
.cv-poster.cv-poster--v1{background:radial-gradient(120% 150% at 70% 28%,var(--p-poster-hi) 0%,var(--p-poster-mid) 46%,var(--p-hero-deep) 100%)}
.cv-poster--v1::before{opacity:.10}                             /* 點紋收淡 */
/* 單一和緩斜切地板取代黑三角。07-05 bug 修正：舊基底 .cv-poster::after 被整條刪除後，
   本規則只剩 height/background/clip-path＝孤兒死碼（content:none 不渲染）→ 補回 content＋定位；
   z-index:1 沿舊值（地板壓過 z0 的水印，讓元素「站進地板」；手機由下方 display:none 收起）。 */
.cv-poster--v1::after{content:"";position:absolute;left:0;right:0;bottom:0;z-index:1;height:120px;background:var(--p-hero-floor);clip-path:polygon(0 100%,100% 100%,100% 22px,0 70px)}
.cv-poster--v1 .cv-word{left:46%;top:5%;font-size:150px;color:rgba(255,255,255,.06)}

/* ============================================================
   07-05 定案 hero 色塊（全站 35 人一致）：圓角旗幟站台（.cv-arch）。
   Codex 修正版：保留整片黨色，靠內漸層（左上白光＋右肩微光）＋深紫垂直罩色＋外圍柔光，
   把亮黃/深紅/中綠/鮭橘/金五色份量收齊、旗面邊緣融進暗紫場景，去除純色貼紙感；
   人像破出旗面上緣。黨色抽成 --stage（預設 var(--pc)；台灣前進 goldarch 覆寫成金 --gold）。
   ::before＝左脊柔光；::after＝表面細 hairline＋微罩色。z 序：旗面 z0 → 照片 z1 → 文字 z3 → CTA z4。
   源序須在上方 v1 場景規則之後。 */
.cv-poster--v1{--stage:var(--pc)}
.cv-poster--v1 .cv-arch{left:15%;right:2%;top:78px;bottom:0;overflow:hidden;
  border-radius:46px 230px 34px 46px / 46px 220px 34px 46px;
  background:
    radial-gradient(90% 56% at 42% 14%,rgba(255,255,255,.30),rgba(255,255,255,.11) 42%,transparent 68%),
    radial-gradient(90% 76% at 98% 26%,rgba(255,255,255,.14),transparent 58%),
    linear-gradient(180deg,rgba(43,31,69,.10) 0%,rgba(43,31,69,.22) 100%),
    var(--stage);
  box-shadow:
    inset -34px 0 48px rgba(43,31,69,.20),
    inset 0 -96px 78px -58px rgba(43,31,69,.38),
    0 30px 64px rgba(0,0,0,.34),
    0 0 38px rgba(43,31,69,.36)}
.cv-poster--v1 .cv-arch::before{content:"";position:absolute;inset:0 auto 0 0;width:34%;border-radius:inherit;
  background:linear-gradient(90deg,rgba(255,255,255,.24),rgba(255,255,255,.08) 48%,transparent 100%)}
.cv-poster--v1 .cv-arch::after{content:"";position:absolute;inset:0;border-radius:inherit;
  background:linear-gradient(180deg,rgba(255,255,255,.10),transparent 30%,rgba(43,31,69,.16) 100%);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.30),inset 0 1px 0 rgba(255,255,255,.28)}

/* 台灣前進（無黨籍代稱）黨色＝主紫，與暗紫底同系 → 旗面 fallback 成金 --gold（覆寫 --stage）；
   左脊柔光改低透明主紫折光，與全站主紫產生關聯而不搶色。源序在 v1 規則後、靠源序覆蓋。
   註：姓氏圈 stub(.cv-noimg) 維持預設 var(--pc)＝主紫，落在金旗面上對比清楚，故不隨旗面翻金。 */
.cv-poster--goldarch{--stage:var(--gold)}
.cv-poster--goldarch .cv-arch::before{background:linear-gradient(90deg,rgba(101,73,148,.30),rgba(101,73,148,.10) 48%,transparent 100%)}

/* ===== S2 宣言帶 ===== */
.cv-quote{background:var(--ink);color:#fff;padding:52px 0;position:relative;z-index:1}
.cv-quote blockquote{font-family:'Noto Serif TC',serif;font-size:38px;font-weight:900;line-height:1.75;max-width:34ch;margin:0 auto;position:relative;padding:0 12px}
.cv-quote .who{display:block;text-align:right;font-family:'Noto Sans TC',sans-serif;font-size:var(--fs-base);font-weight:700;color:rgba(255,255,255,.65);margin-top:14px}

/* ===== 通用 section ===== */
.cv-sec{padding:64px 0}
.cv-kick{font-size:var(--fs-xs);font-weight:900;letter-spacing:3px;color:var(--p);margin-bottom:var(--sp-2)}
.cv-h2{font-size:var(--fs-l);font-weight:900;color:var(--ink);line-height:1.25;margin:0}
.cv-h2 .u{background:linear-gradient(transparent 62%,var(--p20) 62%);padding:0 2px}
.cv-h2.sm{font-size:var(--fs-l)}

/* ===== S3 政見 ===== */
.cv-plist{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.cv-pcard{background:#fff;border:none;border-left:8px solid var(--pc);border-radius:16px;padding:24px 26px 26px 28px;position:relative;overflow:hidden;box-shadow:0 10px 30px rgba(101,73,148,.16)}
.cv-pcard .cv-no{font-family:'Noto Sans TC',sans-serif;font-size:var(--fs-xs);font-weight:900;color:var(--pc-ink);background:var(--pc);line-height:1;position:absolute;top:22px;right:22px;border-radius:999px;padding:6px 9px;letter-spacing:.08em}
.cv-pcard h3{font-size:var(--fs-m);font-weight:900;background:#fff;color:var(--ink);margin:0 0 14px;padding:0 62px 0 0;letter-spacing:0;line-height:1.45}
.cv-pbody{font-size:var(--fs-base);font-weight:600;color:var(--t);line-height:1.9}
.cv-pbody ul{list-style:disc;margin:0 0 12px 1.2em;padding:0}
.cv-pbody ul.plain{list-style:none;margin-left:0}
.cv-pbody ul.plain li{padding-left:0}
.cv-pbody ul li{padding-left:2px;font-size:var(--fs-base);font-weight:600;color:var(--t);margin-bottom:8px;line-height:1.8;background:none;display:list-item}
.cv-pbody p{font-size:var(--fs-base);font-weight:500;color:var(--t);line-height:1.9;margin:0 0 8px}
.cv-pbody p:last-child,.cv-pbody ul:last-child{margin-bottom:0}
.cv-pcard--titleonly{background:linear-gradient(180deg,#fff,var(--bg));box-shadow:0 6px 18px rgba(101,73,148,.11)}
.cv-pcard--titleonly h3{margin-bottom:0}
.cv-plist-note{font-size:var(--fs-xs);color:var(--tm);font-weight:700;margin:-18px 0 22px}

/* ===== S4 故事 ===== */
.cv-storysec{background:var(--p10)}
.cv-sgrid{display:grid;grid-template-columns:minmax(0,1fr) 200px;gap:32px;align-items:start}
.cv-scard{background:#fff;border-radius:16px;padding:34px 36px;box-shadow:0 4px 18px rgba(101,73,148,.08);position:relative;overflow:hidden}
.cv-scard::before{content:"」";position:absolute;top:8px;right:20px;z-index:0;font-size:56px;font-family:'Noto Serif TC',serif;font-weight:900;color:var(--pc-soft);opacity:.5;line-height:1;pointer-events:none}
.cv-scard>*{position:relative;z-index:1}
.cv-lead{font-size:var(--fs-m);font-weight:900;color:var(--p);line-height:1.8;margin-bottom:14px}
.cv-scard p{font-size:var(--fs-base);line-height:1.95;color:var(--t);margin:0 0 10px}
.cv-scard p:last-child{margin-bottom:0}
.cv-sphoto{position:sticky;top:90px;text-align:center}
.cv-sphoto .disc{width:190px;height:190px;border-radius:20px;background:linear-gradient(180deg,var(--p10),var(--p15));margin:0 auto;overflow:hidden;position:relative}
.cv-sphoto img{width:100%;height:100%;object-fit:cover;display:block}
.cv-smore{background:linear-gradient(160deg,var(--p),var(--pd));border-radius:16px;padding:32px 36px;margin-top:20px;box-shadow:0 10px 30px rgba(74,53,112,.35)}
.cv-smore h3{font-size:var(--fs-m);font-weight:900;color:var(--pc-hero);margin:0 0 12px}
.cv-smore p{font-size:var(--fs-base);line-height:2;color:rgba(255,255,255,.94);margin:0 0 10px}
.cv-smore p:last-child{margin-bottom:0}

/* 其他敘事（為什麼是我／專業／行動／實績） */
.cv-prosecard{background:#fff;border-radius:16px;padding:30px 34px;box-shadow:0 4px 18px rgba(101,73,148,.08)}
.cv-prosecard p{font-size:var(--fs-base);line-height:1.95;color:var(--t);margin:0 0 12px}
.cv-prosecard p:last-child{margin-bottom:0}
.cv-exptags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.cv-exptags span{background:var(--p10);color:var(--p);font-size:var(--fs-xs);font-weight:900;padding:6px 14px;border-radius:999px}
.cv-act{display:grid;gap:14px}
.cv-act-item{background:#fff;border-radius:16px;padding:24px 28px;box-shadow:0 4px 18px rgba(101,73,148,.08)}
.cv-act-item h3{font-size:var(--fs-m);font-weight:900;color:var(--ink);margin:0 0 8px}
.cv-act-item p{font-size:var(--fs-base);line-height:1.9;color:var(--t);margin:0}
.cv-date{font-size:var(--fs-xs);font-weight:900;color:var(--p);letter-spacing:1px;margin-bottom:4px}

/* ===== S5 學經歷 ===== */
.cv-biocard{background:#fff;border-radius:16px;box-shadow:0 10px 30px rgba(101,73,148,.16);
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;padding:28px}
.cv-biocard>div{min-width:0}
.cv-biocard h4{display:inline-block;font-size:var(--fs-base);font-weight:900;background:var(--pc);color:var(--pc-ink);letter-spacing:3px;padding:5px 14px;border-radius:6px;margin:18px 0 10px}
.cv-biocard ul{list-style:none;margin:0;padding:0}
.cv-biocard li{font-size:var(--fs-base);font-weight:500;letter-spacing:.3px;padding:13px 2px;border-bottom:1px solid #eee7f6;color:var(--ink);line-height:1.75;overflow-wrap:anywhere;word-break:break-word}
.cv-biocard li:last-child{border-bottom:none}
.cv-biocard li.cv-bigroup{font-size:var(--fs-base);font-weight:900;letter-spacing:2px;color:var(--p);border-bottom:2px solid var(--pc-soft);padding-top:22px}
.cv-bidate{display:block;font-size:var(--fs-xs);font-weight:900;color:var(--p);letter-spacing:.06em;margin-bottom:2px}

/* ===== S6 支持區 ===== */
.cv-support{background:linear-gradient(160deg,var(--p),var(--pd));color:#fff;text-align:center;padding:64px 24px}
.cv-support h2{font-size:52px;font-weight:900;margin:0 0 12px}
.cv-support .acc{font-size:var(--fs-xs);color:rgba(255,255,255,.8);font-weight:700;margin-bottom:26px}
.cv-support .acc .acc-line{line-height:1.7}
.cv-support .acc .acc-line+.acc-line{font-variant-numeric:tabular-nums;letter-spacing:.02em}
.cv-support .btns{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-bottom:16px}
.cv-support .others{margin-top:14px}
.cv-support .others a{color:rgba(255,255,255,.85);font-size:var(--fs-base);font-weight:900;border-bottom:1px solid rgba(255,255,255,.4)}
.cv-support .hint{font-size:var(--fs-xs);color:rgba(255,255,255,.65)}

/* ===== S7 議題 chips ===== */
.cv-chips{display:flex;flex-wrap:wrap;gap:12px}
.cv-chip{display:inline-flex;align-items:center;gap:6px;background:#fff;border:2px solid var(--p20);color:var(--p);font-size:var(--fs-base);font-weight:900;padding:9px 20px;border-radius:999px;transition:.15s;text-decoration:none}
.cv-chip .cv-cic{width:26px;height:26px;display:block;flex-shrink:0}
a.cv-chip:hover{background:var(--p);color:#fff;border-color:var(--p)}
.cv-chip.off{color:var(--tm);border-color:var(--bd);background:var(--bg)}

/* ===== S8 陣線夥伴 ===== */
.cv-fellowsec{background:var(--p10)}
.cv-fellows{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.cv-fcard{display:flex;align-items:center;gap:20px;background:#fff;border:none;border-radius:16px;padding:20px 24px;box-shadow:0 8px 24px rgba(101,73,148,.12);transition:.15s;text-decoration:none}
.cv-fcard:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(101,73,148,.22)}
.cv-fava{width:112px;height:112px;border-radius:16px;background:linear-gradient(180deg,var(--p10),var(--p15));overflow:hidden;flex-shrink:0;position:relative;display:flex;align-items:center;justify-content:center;font-size:44px;font-weight:900}
.cv-fava img{width:100%;height:100%;object-fit:cover;display:block}
.cv-fn{font-size:var(--fs-m);font-weight:900;color:var(--ink)}
.cv-pdot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:baseline;border:1px solid rgba(0,0,0,.15)}
.cv-fm{font-size:var(--fs-base);font-weight:700;color:var(--tm);margin-top:4px}

.cv-foot{text-align:center;font-size:var(--fs-xs);color:var(--tm);padding:26px 0}

/* ===== S9 吸底列（手機） ===== */
.cv-cbar{position:fixed;bottom:0;left:0;right:0;z-index:120;display:none;background:#fff;border-top:1px solid var(--bd);padding:10px 14px;gap:10px;box-shadow:0 -6px 20px rgba(0,0,0,.08)}
.cv-cbar .btn{flex:1;text-align:center;padding:12px 0}
.cv-cbar .btn:first-child{flex:1.3}

/* ===== RWD ===== */
@media(max-width:820px){
  /* v1 暗場在手機沿用桌機深紫底（.cv-poster--v1 特異度 0,2,0 勝過此區 .cv-poster）；
     tbot 文字亦沿用桌機暗場白字（全站只剩暗場 v1，不再需要亮底↔暗底兩套覆寫），只收掉文字陰影。 */
  .cv-tbot{text-shadow:none}
  .cv-pgrid{grid-template-columns:1fr;grid-template-areas:'top' 'photo' 'bot';grid-template-rows:auto auto auto;min-height:0}
  .cv-ttop{padding-top:22px;text-align:center}
  .cv-tbot{padding-bottom:20px;text-align:center;align-self:auto}
  .cv-poster h1{font-size:58px;letter-spacing:3px;margin-bottom:4px}
  .cv-poster h1 .cv-tuck{margin-right:0}
  .cv-photo img{margin-right:0}
  /* 手機還原：桌機寬圖控制與 min-height 不套用手機（單欄）。
     會議6（手機候選人區照片擠壓）修正：固定成 270px 受控寬度（超窄機 max-width:100% 收邊）。
     ★此規則須寫在 .cv-poster--v1 選擇器上；否則下方 .cv-photo img{width:270px} 特異度較低會被
       本區桌機 v1 規則的 width 蓋掉而失效，照片會撐成近滿版（擠壓感）。 */
  .cv-poster--v1 .cv-photo img{width:270px;height:auto;max-width:100%}
  .cv-poster--v1 .cv-pgrid{min-height:0}
  /* 手機：水印/地板收起、旗面置中縮小（人像仍破框） */
  .cv-word,
  .cv-poster--v1::after{display:none}
  .cv-poster--v1 .cv-arch{left:50%;right:auto;transform:translateX(-50%);
    width:220px;top:34px;bottom:6px;border-radius:34px 150px 24px 34px / 34px 142px 24px 34px;
    box-shadow:
      inset -22px 0 34px rgba(43,31,69,.20),
      inset 0 -68px 58px -42px rgba(43,31,69,.38),
      0 20px 42px rgba(0,0,0,.32),
      0 0 28px rgba(43,31,69,.34)}
  .cv-pill{font-size:var(--fs-xs);padding:6px 14px;white-space:nowrap;margin-bottom:10px}
  .cv-dist{font-size:var(--fs-base);margin-bottom:6px}
  .cv-slogan{font-size:var(--fs-m);margin-left:auto;margin-right:auto;margin-bottom:12px}
  .cv-slogan.long{font-size:var(--fs-m)}
  .cv-creds{display:grid;grid-template-columns:auto auto;justify-content:center;gap:7px;margin-bottom:14px}
  .cv-cta{justify-content:center}
  .cv-social{width:100%;justify-content:center;margin-left:0}
  .cv-social a{width:38px;height:38px}
  .cv-social svg{width:18px;height:18px}
  .cv-photo{width:fit-content;margin:4px auto}/* 縮到與圖片同寬，避免 ::before 色塊依滿版格軌寬度換算而失真 */
  .cv-photo img{width:270px}/* base fallback；實際生效值由上方 .cv-poster--v1 .cv-photo img 決定（全站皆 v1）*/
  .cv-plist{grid-template-columns:1fr}
  .cv-sgrid{grid-template-columns:1fr}
  .cv-sphoto{display:none}
  .cv-fellows{grid-template-columns:1fr}
  .cv-cbar .shr{width:46px;height:46px;border-radius:50%;background:var(--p10);color:var(--p);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
  .cv-cbar{display:flex}
  body.has-cbar{padding-bottom:64px}
}
@media(max-width:640px){
  .cv-sec{padding:48px 0}
  .cv-quote blockquote{font-size:var(--fs-m)}
  .cv-support h2{font-size:34px}
  .cv-biocard{grid-template-columns:1fr}
  .cv-scard::before{font-size:44px;right:14px;top:10px}
}
