/* =========================================================
   Chao Visuals 2.0 · 識別系統層（chaovisual-2.css）
   載入順序：Google Fonts → chaovisual.css → woo.css → 這一支。
   它做三件事：
     1. 定義新 tokens（paper / dusk 雙主題），並把舊變數名（--bg、--muted、--accent…）
        重新指向新 tokens，讓還沒改版的頁面（關於、服務、商店、燈箱、跨頁式）跟著換色。
     2. 關掉 1.x 的裝置語言：自訂游標、顆粒層、開場遮罩、SCROLL 提示、陰影、圓角。
     3. 2.0 改版頁面（首頁、作品列表、單件作品、札記列表、文章）的版面，全部用 v2- 前綴，
        不與舊規則相撞。
   規則見 Design System README；這裡的註解只寫「為什麼」。
   ========================================================= */

/* ---------- 1. tokens ---------- */
:root, html[data-theme="paper"] {
  color-scheme: light;
  --ground-000:#f4f1ea; --ground-100:#ebe7de; --ground-200:#d9d4c8;
  --ink:#1b1b1a; --ink-2:#4a4946; --ink-3:#68655d;
  --line:#d6d1c5; --line-strong:#85817a;
  --ribbon:#d9522b; --ribbon-ink:#b3401d;
  --on-ink:#f4f1ea; --on-ribbon:#f4f1ea;
  --scrim:#00000099; --on-photo:#ffffff;
  --state-ok:#2d6a4f; --state-error:#b3261e;
}
html[data-theme="dusk"] {
  color-scheme: dark;
  --ground-000:#161615; --ground-100:#1e1e1c; --ground-200:#262624;
  --ink:#edeae3; --ink-2:#b9b5ac; --ink-3:#8a877e;
  --line:#2c2c2a; --line-strong:#6e6b64;
  --ribbon:#e8683f; --ribbon-ink:#e8683f;
  --on-ink:#161615; --on-ribbon:#161615;
  --scrim:#00000099; --on-photo:#ffffff;
  --state-ok:#7cc4a0; --state-error:#f28b82;
}
:root {
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-6:24px; --space-8:32px;
  --space-12:48px; --space-16:64px; --space-24:96px; --space-36:144px;
  --measure:34em; --rail:56px;
  --radius-0:0; --radius-1:2px; --radius-pill:999px;
  --stroke-hair:1px; --stroke-ribbon:2px; --stroke-focus:2px;
  --font-serif:"Noto Serif TC","Songti TC","Noto Serif CJK TC","PMingLiU",serif;
  --font-sans:"Archivo","Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;
  --font-mono:"IBM Plex Mono","SFMono-Regular",Menlo,Consolas,monospace;
  --ease-2:cubic-bezier(.2,.7,.2,1);

  /* 舊變數 → 新 tokens。舊 CSS 的 3,300 行不必逐條改，先換底。
     --accent 指向 --ink 而不是橙色：舊站的金色有 112 處，其中大半是「底色上放字」的填色
     （主要按鈕、選取中的篩選、頁碼），路條橙在 paper 主題下只有 3.6:1，放小字會不及格。
     真正該是橙色記號的地方（目前頁面底線、焦點框、價格、進度條）在第 2 節逐項指回 --ribbon。 */
  --bg:var(--ground-000); --bg-soft:var(--ground-100);
  --muted:var(--ink-3);
  --accent:var(--ink); --on-accent:var(--on-ink);
  --shadow-1:none; --shadow-2:none;
  --r-img:var(--radius-0); --r-card:var(--radius-0); --r-pill:var(--radius-1);
  --pad:clamp(16px, 3.34vw, 48px);
  --font-display:var(--font-sans);
  --font-body:var(--font-sans);
}

/* ---------- 2. 全站基底與 1.x 裝置的退場 ---------- */
html{background:var(--ground-000)}
body{background:var(--ground-000);color:var(--ink);font-family:var(--font-sans);line-height:1.9}
body::before{display:none}                      /* 顆粒層：紙色底不需要底片質感 */
.cursor-dot,.cursor-ring,.scroll-cue,.preload,.hero-grain{display:none !important}
html.cv-cursor,html.cv-cursor *{cursor:auto !important}
html.preloading body{overflow:auto}
h1,h2,h3{font-weight:500;letter-spacing:0}
img{background:var(--ground-200)}
img[src$=".svg"]{background:none}
:focus-visible{outline:var(--stroke-focus) solid var(--ribbon);outline-offset:2px}
.skip-link:focus{background:var(--ink);color:var(--on-ink);outline:var(--stroke-focus) solid var(--ribbon)}
::selection{background:var(--ribbon);color:var(--on-ribbon)}

/* 舊站的橙色記號：把該是記號的地方指回路條橙 */
.nav-list a[aria-current]::after,.nav-list .current-menu-item > a::after,.nav-list .current_page_item > a::after,
.nav-list .current-menu-ancestor > a::after,.nav-list .current-menu-parent > a::after{background:var(--ribbon);opacity:1;height:var(--stroke-ribbon)}
.price,.svc-price,.tier-price,.woocommerce-Price-amount,.lb-buy:hover,.footer-mail:hover,a:hover>.ttl{color:var(--ribbon-ink)}
.cv-progress,.read-progress i,.preload-bar i{background:var(--ribbon)}

/* 頁首：不再浮在 hero 上、不再模糊。紙色實底、一條髮線。 */
.site-header{position:sticky;top:0;left:auto;right:auto;height:72px;padding:0 var(--pad);
  background:var(--ground-000);border-bottom:var(--stroke-hair) solid var(--line);transition:none;gap:var(--space-6)}
.site-header::before{display:none}
.site-header.scrolled{background:var(--ground-000);backdrop-filter:none;-webkit-backdrop-filter:none;padding:0 var(--pad);border-bottom-color:var(--line)}
.site-header.nav-open,.site-header.scrolled.nav-open{background:var(--ground-000)}
.admin-bar .site-header{top:32px}
.cv-brand{display:inline-flex;align-items:center;text-shadow:none}
.cv-mark{display:inline-flex}
.cv-mark__dusk{display:none}
html[data-theme="dusk"] .cv-mark__paper{display:none}
html[data-theme="dusk"] .cv-mark__dusk{display:block}
.cv-mark img,.cv-chop{background:none}
.nav-list{gap:var(--space-8);font-family:var(--font-sans);letter-spacing:0;font-size:14px;font-weight:500;align-items:baseline}
.nav-list a{color:var(--ink);text-shadow:none;display:inline-flex;gap:var(--space-2);align-items:baseline;padding:6px 0;border-bottom:var(--stroke-ribbon) solid transparent;transition:border-color .12s}
.nav-list a::after{display:none}
.nav-list a:hover{color:var(--ink);border-bottom-color:var(--line-strong)}
.nav-list a[aria-current],.nav-list .current-menu-item > a,.nav-list .current_page_item > a,.nav-list .current-menu-ancestor > a,.nav-list .current-menu-parent > a{border-bottom-color:var(--ribbon)}
.nav-list .nav-en{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-3);text-transform:uppercase}
.nav-list .sub-menu{background:var(--ground-000);border:var(--stroke-hair) solid var(--line)}
.v2-header-tools{display:flex;align-items:center;gap:var(--space-6)}
.nav-toggle span{background:var(--ink)}
.site-cart{color:var(--ink)}
@media(max-width:760px){
  .site-header{height:64px}
  .primary-nav{background:var(--ground-000);backdrop-filter:none;-webkit-backdrop-filter:none;padding:96px var(--pad) var(--space-12)}
  .nav-list{gap:var(--space-6);font-size:20px;text-align:left;align-items:stretch}
  .nav-list a{justify-content:space-between;border-bottom:var(--stroke-hair) solid var(--line);padding:var(--space-3) 0}
  .nav-list a[aria-current]{border-bottom-color:var(--ribbon)}
  .v2-header-tools .v2-btn{display:none}
}

/* 主題切換鈕：符號的半圓翻轉 */
.cv-toggle{display:inline-flex;align-items:center;gap:var(--space-2);height:32px;padding:0 var(--space-3) 0 var(--space-1);
  border:var(--stroke-hair) solid var(--line-strong);border-radius:var(--radius-pill);background:none;color:var(--ink-2);
  font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;cursor:pointer}
.cv-toggle svg{width:24px;height:24px;display:block}
.cv-toggle .ring{fill:none;stroke:var(--ink);stroke-width:3.5}
.cv-toggle .half{fill:var(--ink);transform-origin:32px 36px;transition:transform .32s var(--ease-2)}
.cv-toggle .tick{stroke:var(--ribbon);stroke-width:3.5}
html[data-theme="dusk"] .cv-toggle .half{transform:rotate(180deg)}
@media (prefers-reduced-motion:reduce){.cv-toggle .half{transition:none}}

/* ---------- 3. 2.0 元件 ---------- */
.v2-grid{display:grid;grid-template-columns:var(--rail) repeat(12,minmax(0,1fr));column-gap:var(--space-6);padding-left:var(--pad);padding-right:var(--pad);max-width:1440px;margin-left:auto;margin-right:auto;box-sizing:border-box}
.v2-rail{grid-column:1;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-3);font-variant-numeric:tabular-nums;display:flex;flex-direction:column;gap:var(--space-2)}
.v2-rail--v{writing-mode:vertical-rl}
.v2-section{padding-top:var(--space-24)}
.v2-section--tight{padding-top:var(--space-16)}
.v2-mono{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-variant-numeric:tabular-nums}
.v2-eyebrow{margin:0;font-family:var(--font-sans);font-size:12px;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--ink-3)}
.v2-ribbon{display:block;width:32px;height:var(--stroke-ribbon);background:var(--ribbon)}
.v2-statement{margin:0;font-family:var(--font-serif);font-weight:500;letter-spacing:.01em;color:var(--ink);text-wrap:balance}
.v2-statement--xl{font-size:clamp(32px,3.6vw,52px);line-height:1.25}
.v2-statement--lg{font-size:clamp(26px,2.8vw,40px);line-height:1.3}
.v2-statement--md{font-size:28px;line-height:1.4}
.v2-title{margin:0;font-family:var(--font-sans);font-stretch:112%;font-weight:600;letter-spacing:-.01em;color:var(--ink);text-wrap:balance}
.v2-title--xl{font-size:clamp(44px,5vw,72px);line-height:.95}
.v2-title--lg{font-size:clamp(30px,3vw,44px);line-height:1.05}
.v2-title--md{font-size:24px;line-height:1.2;font-weight:500}
.v2-body{font-family:var(--font-sans);font-size:16px;line-height:1.9;color:var(--ink-2)}
.v2-body--lg{font-size:18px;max-width:var(--measure)}
.v2-en{font-family:var(--font-sans);font-size:13px;letter-spacing:.02em;color:var(--ink-3)}

/* 按鈕 */
.v2-btn{display:inline-flex;align-items:center;gap:var(--space-2);min-height:44px;padding:var(--space-3) var(--space-4);border:var(--stroke-hair) solid transparent;border-radius:var(--radius-0);
  font-family:var(--font-sans);font-size:14px;line-height:1.4;font-weight:500;letter-spacing:.02em;text-decoration:none;cursor:pointer;transition:background .12s var(--ease-2),border-color .12s var(--ease-2)}
.v2-btn--primary{background:var(--ink);color:var(--on-ink)}
.v2-btn--primary:hover{background:var(--ink-2);color:var(--on-ink)}
.v2-btn--secondary{background:none;color:var(--ink);border-color:var(--line-strong)}
.v2-btn--secondary:hover{border-color:var(--ink);color:var(--ink)}
.v2-btn--text{background:none;color:var(--ink);padding-left:0;padding-right:0;border-bottom:var(--stroke-ribbon) solid transparent}
.v2-btn--text:hover{color:var(--ink);border-bottom-color:var(--ribbon)}
.v2-btn__en{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:inherit;opacity:.7}
.v2-btn--primary .v2-btn__en{opacity:.75}

/* 標籤 */
.v2-tag{display:inline-flex;align-items:center;min-height:28px;padding:var(--space-1) var(--space-2);border:var(--stroke-hair) solid var(--line-strong);border-radius:var(--radius-1);
  font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);background:none;text-decoration:none;cursor:pointer}
.v2-tag:hover{border-color:var(--ink);color:var(--ink)}
.v2-tag[aria-current],.v2-tag--active{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}
.v2-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}

/* 圖說列：地點 · 座標 · 時間 · 8AM/6PM */
.cv-caption{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-2);margin-top:var(--space-2);font-family:var(--font-mono);font-size:12px;line-height:1.5;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-variant-numeric:tabular-nums}
.cv-caption>span+span::before{content:"·";margin-right:var(--space-2);color:var(--line-strong)}
.cv-caption .cv-caption__time{color:var(--ink-2)}
.cv-caption a{color:inherit;text-decoration:none;border-bottom:var(--stroke-hair) solid var(--line-strong)}
.cv-caption a:hover{color:var(--ribbon-ink);border-bottom-color:var(--ribbon)}

/* 區塊標題：序號｜眉標、路條線、中文標題、右端動作 */
.v2-sechead{grid-column:1 / -1;display:grid;grid-template-columns:var(--rail) 1fr;column-gap:var(--space-6);align-items:end}
.v2-sechead__body{display:flex;flex-direction:column;gap:var(--space-3)}
.v2-sechead__row{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-6);flex-wrap:wrap}
.v2-sechead__row h2 small{font-family:var(--font-sans);font-size:16px;font-weight:400;color:var(--ink-2);margin-left:var(--space-4)}

/* 作品卡 */
.v2-card{display:flex;flex-direction:column;color:inherit;text-decoration:none}
.v2-card__media{display:block;width:100%;background:var(--ground-200);overflow:hidden}
.v2-card__media img{width:100%;height:100%;object-fit:cover;aspect-ratio:auto 3/2}
.v2-card__media--3x2 img{aspect-ratio:3/2}.v2-card__media--4x5 img{aspect-ratio:4/5}.v2-card__media--2x3 img{aspect-ratio:2/3}.v2-card__media--4x3 img{aspect-ratio:4/3}
.v2-card__head{display:flex;align-items:baseline;gap:var(--space-3);margin-top:var(--space-3)}
.v2-card__series{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap}
.v2-card__rule{flex:1;height:var(--stroke-hair);background:var(--line);transform:translateY(-4px)}
.v2-card__zh{font-family:var(--font-sans);font-size:14px;color:var(--ink-2);white-space:nowrap}
.v2-card__title{margin:var(--space-1) 0 0;font-family:var(--font-sans);font-stretch:112%;font-weight:500;font-size:24px;line-height:1.2;color:var(--ink)}
.v2-card:hover .v2-card__title{color:var(--ribbon-ink)}
.v2-card:focus-visible{outline-offset:4px}

/* 列表列：系列、札記 */
.v2-rows{display:flex;flex-direction:column;border-bottom:var(--stroke-hair) solid var(--line)}
.v2-row{display:grid;align-items:baseline;gap:var(--space-6);padding:var(--space-6) 0;border-top:var(--stroke-hair) solid var(--line);text-decoration:none;color:inherit}
.v2-row:hover .v2-row__title,.v2-row:hover .v2-title{color:var(--ribbon-ink)}
.v2-row__arrow{font-family:var(--font-mono);font-size:14px;color:var(--ink-3);text-align:right}
.v2-row--series{grid-template-columns:1fr minmax(160px,220px) 120px 24px}
.v2-row--journal{grid-template-columns:120px 1fr minmax(160px,200px) 80px}
.v2-row--journal-thumb{grid-template-columns:120px 200px 1fr minmax(160px,200px) 80px;align-items:start}
.v2-row__date{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--ink-3);font-variant-numeric:tabular-nums}
.v2-row__title{font-family:var(--font-sans);font-size:20px;font-weight:500;line-height:1.5;color:var(--ink);margin:0}
.v2-row__excerpt{font-family:var(--font-sans);font-size:14px;line-height:1.8;color:var(--ink-2);margin:var(--space-2) 0 0}
.v2-row__cat{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.v2-row__min{font-family:var(--font-mono);font-size:12px;color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums}
.v2-row__thumb{width:200px;aspect-ratio:3/2;object-fit:cover;background:var(--ground-200)}
.v2-row__sub{font-family:var(--font-sans);font-size:16px;color:var(--ink-2)}
.v2-row__count{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums;text-transform:uppercase}
@media(max-width:760px){
  .v2-row--series{grid-template-columns:1fr auto;gap:var(--space-3) var(--space-4)}
  .v2-row--series .v2-row__sub,.v2-row--series .v2-row__arrow{display:none}
  .v2-row--journal,.v2-row--journal-thumb{grid-template-columns:1fr;gap:var(--space-2);padding:var(--space-4) 0}
  .v2-row__thumb{width:100%}
  .v2-row__min{text-align:left}
}

/* ---------- 4. 首頁 ---------- */
.v2-hero{padding-top:var(--space-24);padding-bottom:var(--space-16);align-items:end}
.v2-hero__rail{grid-column:1;display:flex;flex-direction:column;justify-content:space-between;align-self:stretch;gap:var(--space-6)}
.v2-hero__text{grid-column:2 / span 6;display:flex;flex-direction:column;gap:var(--space-8)}
.v2-hero__media{grid-column:8 / span 6;display:flex;flex-direction:column}
.v2-hero__media img{width:100%;aspect-ratio:3/2;object-fit:cover;background:var(--ground-200)}
.v2-hero__ctas{display:flex;gap:var(--space-8);align-items:center;flex-wrap:wrap}
.v2-intro{padding-top:var(--space-24);align-items:start}
.v2-intro__inner{grid-column:2 / -1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--space-6);border-top:var(--stroke-hair) solid var(--line);padding-top:var(--space-24);row-gap:var(--space-6)}
.v2-intro__lead{grid-column:1 / span 7;display:flex;flex-direction:column;gap:var(--space-6)}
.v2-intro__text{grid-column:8 / span 5;display:flex;flex-direction:column;gap:var(--space-6);padding-top:var(--space-2)}
.v2-intro__text .v2-statement--md{font-size:18px;line-height:1.6}
.v2-featured{row-gap:var(--space-12)}
.v2-featured__grid{grid-column:2 / -1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--space-6);row-gap:var(--space-16);align-items:end}
.v2-span-8{grid-column:span 8}.v2-span-7{grid-column:span 7}.v2-span-6{grid-column:span 6}.v2-span-5{grid-column:span 5}.v2-span-4{grid-column:span 4}
.v2-series{row-gap:var(--space-6)}
.v2-series__body{grid-column:2 / -1;display:flex;flex-direction:column}
.v2-series__body .v2-eyebrow{margin-bottom:var(--space-3)}
.v2-series__body .v2-ribbon{margin-bottom:var(--space-6)}
.v2-compare{row-gap:var(--space-12);align-items:start}
.v2-compare .v2-statement{grid-column:2 / span 8}
.v2-compare .v2-en{grid-column:10 / span 4;align-self:end;line-height:1.6}
.v2-compare .philos-split{grid-column:2 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-6);margin:0}
.v2-compare .philos-split figure{margin:0;display:flex;flex-direction:column;gap:var(--space-2)}
.v2-compare .philos-split img{width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--ground-200);border-radius:0}
.v2-compare .philos-split figcaption{display:flex;gap:var(--space-2);font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-variant-numeric:tabular-nums;position:static;background:none;padding:0}
.v2-compare .philos-split .ps-time{color:var(--ink-2)}
.v2-compare .philos-split .ps-note::before{content:"·";margin-right:var(--space-2);color:var(--line-strong)}
.v2-compare .philos-link{grid-column:2 / -1;justify-self:start}
.v2-journal{row-gap:var(--space-8)}
.v2-journal__body{grid-column:2 / -1;display:flex;flex-direction:column}
.v2-journal__body .v2-sechead__row{margin:var(--space-3) 0 var(--space-8)}
.v2-commission{margin:var(--space-24) var(--pad) 0;padding:var(--space-12);background:var(--ground-100);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--space-6);row-gap:var(--space-8);max-width:calc(1440px - 2*var(--pad));margin-left:auto;margin-right:auto}
.v2-commission .v2-eyebrow{grid-column:1 / -1}
.v2-commission .v2-statement{grid-column:1 / span 6}
.v2-commission__list{grid-column:7 / span 6;display:flex;flex-direction:column}
.v2-commission__item{display:grid;grid-template-columns:120px 1fr 180px;gap:var(--space-6);padding:var(--space-4) 0;border-top:var(--stroke-hair) solid var(--line);align-items:baseline}
.v2-commission__item:last-of-type{border-bottom:var(--stroke-hair) solid var(--line)}
.v2-commission__price{font-family:var(--font-mono);font-size:20px;color:var(--ribbon-ink);text-align:right;font-variant-numeric:tabular-nums}
.v2-commission__ctas{display:flex;gap:var(--space-8);align-items:center;margin-top:var(--space-8);flex-wrap:wrap}
.v2-mail{font-family:var(--font-mono);font-size:13px;letter-spacing:.04em;color:var(--ink);text-decoration:none;border-bottom:var(--stroke-hair) solid var(--line-strong)}
.v2-mail:hover{color:var(--ribbon-ink);border-bottom-color:var(--ribbon)}

/* ---------- 5. 頁尾 ---------- */
.site-footer.v2-footer{margin-top:var(--space-36);padding:var(--space-12) var(--pad) var(--space-8);border-top:var(--stroke-hair) solid var(--line);background:var(--ground-000)}
.v2-footer__inner{max-width:1440px;margin:0 auto;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--space-6);row-gap:var(--space-12);align-items:start}
.v2-footer__mark{grid-column:1 / span 7}
.v2-footer__mark img{width:100%;height:auto;max-width:720px;background:none}
.v2-footer__col{display:flex;flex-direction:column;gap:var(--space-3);font-family:var(--font-sans);font-size:14px}
.v2-footer__col a{color:var(--ink);text-decoration:none}
.v2-footer__col a:hover{color:var(--ribbon-ink)}
.v2-footer__col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}
.v2-footer__col--site{grid-column:9 / span 2}
.v2-footer__col--legal{grid-column:11 / span 2}
.v2-footer__base{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--ink-3);padding-top:var(--space-6);border-top:var(--stroke-hair) solid var(--line)}
.v2-footer__social{display:flex;gap:var(--space-4)}
.v2-footer__social a{display:inline-flex;width:44px;height:44px;align-items:center;justify-content:center;color:var(--ink-2);border:var(--stroke-hair) solid var(--line-strong)}
.v2-footer__social a:hover{color:var(--ink);border-color:var(--ink)}
.v2-footer__social svg path[fill]{fill:var(--ground-000)}
@media(max-width:900px){
  .v2-footer__mark{grid-column:1 / -1}
  .v2-footer__col--site{grid-column:1 / span 6}.v2-footer__col--legal{grid-column:7 / span 6}
}

/* ---------- 6. 作品列表 ---------- */
.v2-pagehead{padding-top:var(--space-24);row-gap:var(--space-12);align-content:start}
.v2-pagehead__title{grid-column:2 / span 7;display:flex;flex-direction:column;gap:var(--space-4)}
.v2-pagehead__aside{grid-column:10 / span 4;display:flex;flex-direction:column;justify-content:flex-end;gap:var(--space-2);text-align:right}
.v2-pagehead__bar{grid-column:2 / -1;display:flex;justify-content:space-between;align-items:center;gap:var(--space-6);padding:var(--space-4) 0;border-top:var(--stroke-hair) solid var(--line);border-bottom:var(--stroke-hair) solid var(--line);flex-wrap:wrap}
.v2-pagehead__bar .v2-body{max-width:none}
.v2-works{padding-top:var(--space-16);row-gap:var(--space-20,80px)}
.v2-works__grid{grid-column:2 / -1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--space-6);row-gap:80px;align-items:end}
.v2-works__foot{grid-column:2 / -1;display:flex;justify-content:space-between;align-items:center;gap:var(--space-6);padding-top:var(--space-6);border-top:var(--stroke-hair) solid var(--line)}
.v2-pager{display:flex;gap:var(--space-6);font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--ink-3);font-variant-numeric:tabular-nums}
.v2-pager .nav-links{display:flex;gap:var(--space-6)}
.v2-pager a,.v2-pager span{color:var(--ink-3);text-decoration:none;padding-bottom:2px;border-bottom:var(--stroke-ribbon) solid transparent}
.v2-pager a:hover{color:var(--ink)}
.v2-pager .current{color:var(--ink);border-bottom-color:var(--ribbon)}
.v2-empty{grid-column:2 / -1;font-family:var(--font-sans);font-size:16px;color:var(--ink-2)}
.v2-empty a{color:var(--ink);border-bottom:var(--stroke-hair) solid var(--line-strong)}
/* 照片牆放在 2.0 作品頁下方時：拿掉舊的暗色底 */
.archive-work + .photo-wall,.photo-wall{background:none}

/* ---------- 7. 單件作品 ---------- */
.v2-work{padding-top:var(--space-16);row-gap:var(--space-8);align-content:start}
.v2-work__crumb{grid-column:2 / -1;display:flex;gap:var(--space-3);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.v2-work__crumb a{color:var(--ink-3);text-decoration:none}
.v2-work__crumb a:last-child{color:var(--ink-2)}
.v2-work__title{grid-column:2 / span 7;display:flex;flex-direction:column;gap:var(--space-6)}
.v2-meta{grid-column:10 / span 4;margin:0;align-self:end;display:grid;grid-template-columns:96px 1fr;row-gap:var(--space-3);column-gap:var(--space-4);font-family:var(--font-sans);font-size:14px;line-height:1.6;border-top:var(--stroke-hair) solid var(--line);padding-top:var(--space-4)}
.v2-meta dt{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding-top:3px}
.v2-meta dd{margin:0;color:var(--ink-2)}
.v2-work__hero{padding:var(--space-8) var(--pad) 0;max-width:1440px;margin:0 auto}
.v2-work__hero img{width:100%;height:auto;max-height:82vh;object-fit:cover;background:var(--ground-200)}
.v2-work__hero--pano img{aspect-ratio:21/9}
.v2-work__hero .v2-figfoot{display:flex;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}
.v2-work__body{padding-top:var(--space-24);align-items:start}
.v2-work__body .sw-body,.v2-work__content{grid-column:2 / -1;max-width:none;margin:0}
/* 內文裡的一般段落走 measure；影像區塊（.cvf、圖庫、章節）滿欄。 */
.v2-work__content > p,.v2-work__content > h2,.v2-work__content > h3,.v2-work__content > ul,.v2-work__content > ol,.v2-work__content > blockquote{max-width:var(--measure);font-size:18px;line-height:1.9;color:var(--ink-2)}
.v2-work__content > h2,.v2-work__content > h3{font-family:var(--font-serif);color:var(--ink);font-weight:500;line-height:1.4;margin:var(--space-16) 0 var(--space-6)}
.v2-work__content > h2{font-size:28px}.v2-work__content > h3{font-size:22px}
.v2-work__content > blockquote{border-left:var(--stroke-ribbon) solid var(--ribbon);padding-left:var(--space-6);font-family:var(--font-serif);font-size:28px;line-height:1.5;color:var(--ink);margin:var(--space-16) 0}
.v2-work__content > figure,.v2-work__content > .wp-block-image,.v2-work__content > .wp-block-gallery,.v2-work__content > .cvf,.v2-work__content > .wp-block-chaovisual-frame{margin:var(--space-16) 0}
.v2-work__content img{border-radius:0}
.v2-work__end{margin:var(--space-24) var(--pad) 0;padding-top:var(--space-8);border-top:var(--stroke-hair) solid var(--line);max-width:calc(1440px - 2*var(--pad));margin-left:auto;margin-right:auto;display:grid;grid-template-columns:var(--rail) repeat(12,minmax(0,1fr));column-gap:var(--space-6);align-items:start;row-gap:var(--space-6)}
.v2-work__end .cv-chop{grid-column:1;width:48px;height:48px}
.v2-work__end-by{grid-column:2 / span 6;display:flex;flex-direction:column;gap:var(--space-3)}
.v2-work__end-act{grid-column:9 / span 5;display:flex;flex-direction:column;gap:var(--space-4);align-items:flex-end}
.v2-adjacent{margin:var(--space-12) var(--pad) 0;max-width:calc(1440px - 2*var(--pad));margin-left:auto;margin-right:auto;border-top:var(--stroke-hair) solid var(--line);display:grid;grid-template-columns:1fr 1fr;column-gap:var(--space-6)}
.v2-adjacent a{display:flex;flex-direction:column;justify-content:center;gap:var(--space-3);padding:var(--space-10,40px) 0;text-decoration:none;color:inherit}
.v2-adjacent a:first-child{border-right:var(--stroke-hair) solid var(--line);padding-right:var(--space-6)}
.v2-adjacent a:last-child{text-align:right;align-items:flex-end;padding-left:var(--space-6)}
.v2-adjacent a:only-child{grid-column:1 / -1;border-right:0}
.v2-adjacent__dir,.v2-adjacent__cat{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.v2-adjacent__title{font-family:var(--font-sans);font-stretch:112%;font-weight:500;font-size:clamp(22px,2.4vw,32px);line-height:1.1;color:var(--ink)}
.v2-adjacent a:hover .v2-adjacent__title{color:var(--ribbon-ink)}
.v2-more{padding-top:var(--space-24);row-gap:var(--space-8)}
.v2-more__grid{grid-column:2 / -1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--space-6);row-gap:var(--space-8)}
@media(max-width:900px){.v2-more__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- 8. 札記列表與文章 ---------- */
.v2-featured-post{padding-top:var(--space-16);align-items:end}
.v2-featured-post__media{grid-column:2 / span 7;display:flex;flex-direction:column;text-decoration:none;color:inherit}
.v2-featured-post__media img{width:100%;aspect-ratio:3/2;object-fit:cover;background:var(--ground-200)}
.v2-featured-post__text{grid-column:9 / span 5;display:flex;flex-direction:column;gap:var(--space-4);text-decoration:none;color:inherit;padding-bottom:var(--space-8)}
.v2-featured-post__text:hover .v2-statement{color:var(--ribbon-ink)}
.v2-featured-post__meta{display:flex;gap:var(--space-3);align-items:baseline;flex-wrap:wrap;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.v2-featured-post__meta .is-cat{color:var(--ribbon-ink)}
.v2-journal-list{padding-top:var(--space-12);align-items:start}
.v2-journal-list__body{grid-column:2 / -1}
.v2-journal-list__foot{display:flex;justify-content:space-between;align-items:center;gap:var(--space-6);padding-top:var(--space-6)}
.v2-cattabs{display:flex;gap:var(--space-8);flex-wrap:wrap;font-family:var(--font-sans);font-size:14px;font-weight:500}
.v2-cattabs a{color:var(--ink);text-decoration:none;padding:6px 0;border-bottom:var(--stroke-ribbon) solid transparent}
.v2-cattabs a[aria-current]{border-bottom-color:var(--ribbon)}
.v2-cattabs a:hover{color:var(--ink);border-bottom-color:var(--line-strong)}
.v2-cattabs .v2-mono{font-size:11px;letter-spacing:.08em;margin-left:var(--space-2)}

.v2-article-head{padding-top:var(--space-16);row-gap:var(--space-8);align-content:start}
.v2-article-head h1{grid-column:2 / span 9}
.v2-article-head .v2-article-sub{grid-column:2 / span 7;margin:0;font-family:var(--font-sans);font-stretch:112%;font-weight:500;font-size:24px;line-height:1.2;color:var(--ink-2)}
.v2-article-head .v2-meta{grid-column:10 / span 4;grid-template-columns:1fr auto}
.v2-article-head .v2-meta dt{padding-top:2px}
.v2-article-head .v2-meta dd{text-align:right}
.v2-article-hero{padding:var(--space-8) var(--pad) 0;max-width:1440px;margin:0 auto}
.v2-article-hero img{width:100%;aspect-ratio:21/9;object-fit:cover;background:var(--ground-200)}
.v2-article{padding-top:var(--space-24);align-items:start}
.v2-article__toc{grid-column:2 / span 3;position:sticky;top:calc(72px + var(--space-6));display:flex;flex-direction:column;gap:var(--space-3);border-top:var(--stroke-hair) solid var(--line);padding-top:var(--space-4)}
.v2-article__toc .v2-eyebrow{margin-bottom:var(--space-2)}
.v2-article__toc a{display:flex;gap:var(--space-3);text-decoration:none;font-family:var(--font-sans);font-size:14px;line-height:1.6;color:var(--ink-2);border-left:var(--stroke-ribbon) solid transparent;padding-left:var(--space-3)}
.v2-article__toc a:hover,.v2-article__toc a.is-active{color:var(--ink);border-left-color:var(--ribbon)}
.v2-article__toc a .v2-mono{font-size:11px;letter-spacing:.08em;padding-top:3px;text-transform:none}
.v2-article__toc a[data-level="3"]{padding-left:var(--space-8)}
.v2-article__body{grid-column:6 / span 7;max-width:var(--measure)}
.v2-article__body.is-wide{grid-column:2 / span 9}
.v2-article__aside{grid-column:13 / span 1;display:flex;flex-direction:column;gap:var(--space-4);border-top:var(--stroke-hair) solid var(--line);padding-top:var(--space-4);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-3)}
.v2-article__aside a{color:var(--ink-2);text-decoration:none;text-transform:uppercase}
.v2-article__aside a:hover{color:var(--ribbon-ink)}
.v2-article__body .page-body{max-width:none;font-size:18px;line-height:1.9;color:var(--ink-2);font-family:var(--font-sans)}
.v2-article__body .page-body > p:first-of-type{font-family:var(--font-serif);font-size:22px;line-height:1.7;color:var(--ink)}
.v2-article__body .page-body h2,.v2-article__body .page-body h3{font-family:var(--font-serif);font-weight:500;line-height:1.4;color:var(--ink);margin:var(--space-16) 0 var(--space-6);letter-spacing:.01em}
.v2-article__body .page-body h2{font-size:28px}.v2-article__body .page-body h3{font-size:22px}
.v2-article__body .page-body h2[id]::before{content:attr(data-no);font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;color:var(--ink-3);margin-right:var(--space-4)}
.v2-article__body .page-body blockquote{margin:var(--space-12) 0;padding-left:var(--space-6);border-left:var(--stroke-ribbon) solid var(--ribbon);font-family:var(--font-serif);font-size:28px;line-height:1.5;color:var(--ink);font-weight:500}
.v2-article__body .page-body figure,.v2-article__body .page-body .wp-block-image{margin:var(--space-12) 0}
.v2-article__body .page-body figcaption{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--ink-3);margin-top:var(--space-2);text-transform:uppercase}
.v2-article__body .page-body img{border-radius:0;background:var(--ground-200)}
.v2-article__body .page-body a:not([class]){color:var(--ink);border-bottom:var(--stroke-hair) solid var(--line-strong);text-decoration:none}
.v2-article__body .page-body a:not([class]):hover{color:var(--ribbon-ink);border-bottom-color:var(--ribbon)}
.v2-article__tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-12)}
.v2-article__share{margin-top:var(--space-8)}
.v2-next{padding-top:var(--space-24);row-gap:var(--space-8);border-top:0}
.v2-next__inner{grid-column:2 / -1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--space-6);row-gap:var(--space-8);border-top:var(--stroke-hair) solid var(--line);padding-top:var(--space-16)}
.v2-next__head{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-6);flex-wrap:wrap}

/* ---------- 9. 響應式 ---------- */
@media(max-width:1024px){
  .v2-grid{grid-template-columns:repeat(12,minmax(0,1fr))}
  .v2-rail,.v2-hero__rail{display:none}
  .v2-sechead{grid-template-columns:1fr}
  .v2-sechead > .v2-rail{display:none}
  .v2-hero__text{grid-column:1 / span 6}.v2-hero__media{grid-column:7 / span 6}
  .v2-intro__inner,.v2-featured__grid,.v2-series__body,.v2-journal__body,.v2-works__grid,.v2-works__foot,.v2-journal-list__body,.v2-next__inner,.v2-empty{grid-column:1 / -1}
  .v2-compare .v2-statement{grid-column:1 / span 8}.v2-compare .v2-en{grid-column:9 / span 4}.v2-compare .philos-split,.v2-compare .philos-link{grid-column:1 / -1}
  .v2-pagehead__title{grid-column:1 / span 7}.v2-pagehead__aside{grid-column:9 / span 4}.v2-pagehead__bar{grid-column:1 / -1}
  .v2-work__crumb{grid-column:1 / -1}.v2-work__title{grid-column:1 / span 7}.v2-meta{grid-column:9 / span 4}.v2-work__body .sw-body,.v2-work__content{grid-column:1 / -1}
  .v2-work__end{grid-template-columns:48px repeat(12,minmax(0,1fr))}
  .v2-featured-post__media{grid-column:1 / span 7}.v2-featured-post__text{grid-column:8 / span 5}
  .v2-article-head h1{grid-column:1 / span 9}.v2-article-head .v2-article-sub{grid-column:1 / span 7}.v2-article-head .v2-meta{grid-column:9 / span 4}
  .v2-article__toc{grid-column:1 / span 3}.v2-article__body{grid-column:4 / span 9}.v2-article__body.is-wide{grid-column:1 / span 10}.v2-article__aside{grid-column:1 / -1;flex-direction:row;position:static}
}
@media(max-width:760px){
  .v2-section,.v2-hero,.v2-intro,.v2-pagehead,.v2-work,.v2-article-head,.v2-article,.v2-more,.v2-next,.v2-work__body{padding-top:var(--space-16)}
  .v2-hero{row-gap:var(--space-6)}
  .v2-hero__text,.v2-hero__media,.v2-intro__lead,.v2-intro__text,.v2-pagehead__title,.v2-pagehead__aside,.v2-work__title,.v2-meta,.v2-featured-post__media,.v2-featured-post__text,.v2-article-head h1,.v2-article-head .v2-article-sub,.v2-article-head .v2-meta,.v2-article__toc,.v2-article__body,.v2-article__body.is-wide,.v2-compare .v2-statement,.v2-compare .v2-en{grid-column:1 / -1}
  .v2-hero__media{order:-1}
  .v2-intro__inner{padding-top:var(--space-16)}
  .v2-pagehead__aside{text-align:left;align-items:flex-start}
  .v2-featured__grid > .v2-card,.v2-works__grid > .v2-card{grid-column:1 / -1 !important}
  .v2-featured__grid,.v2-works__grid{row-gap:var(--space-12)}
  .v2-compare .philos-split{grid-template-columns:1fr;row-gap:var(--space-8)}
  .v2-commission{margin-top:var(--space-16);padding:var(--space-6) var(--space-4);grid-template-columns:1fr}
  .v2-commission .v2-statement,.v2-commission__list{grid-column:1 / -1}
  .v2-commission__item{grid-template-columns:1fr auto}
  .v2-commission__item .v2-body{grid-column:1 / -1;font-size:14px}
  .v2-work__end{grid-template-columns:1fr}
  .v2-work__end .cv-chop,.v2-work__end-by,.v2-work__end-act{grid-column:1}
  .v2-work__end-act{align-items:flex-start}
  .v2-adjacent{grid-template-columns:1fr}
  .v2-adjacent a:first-child{border-right:0;border-bottom:var(--stroke-hair) solid var(--line);padding-right:0}
  .v2-adjacent a:last-child{text-align:left;align-items:flex-start;padding-left:0}
  .v2-more__grid{grid-template-columns:1fr}
  .v2-article__toc{position:static}
  .v2-article__body .page-body,.v2-work__content > p{font-size:17px}
  .v2-work__hero img{max-height:none}
  .site-footer.v2-footer{margin-top:var(--space-24)}
}
@media(max-width:480px){
  .v2-featured-post__meta,.v2-cattabs{gap:var(--space-4)}
  .v2-statement--xl{font-size:32px;line-height:1.35}
  .v2-title--xl{font-size:44px}
}

/* ---------- 10. 舊頁面（關於／服務／聯絡／商店／燈箱／跨頁式）的最小相容 ----------
   這些頁還沒改版，預設走 dusk（inc/brand.php），新 tokens 的暗色值與 1.x 幾乎相同，
   寫死的白色半透明線在那裡仍然成立。這裡只修「兩個主題都會看到」的東西。 */
.ghost-btn{border-radius:var(--radius-0);border-color:var(--line-strong);color:var(--ink)}
.ghost-btn:hover{border-color:var(--ink)}
.filters button,.filters a{border-radius:var(--radius-1)}
.tile,.jc-media img,.sw-more-img img,.pw-item img,.lb-img-wrap img,.series-img img{border-radius:0}
.lb{background:var(--ground-000)}
.sw-adjacent .sw-adj-title,.sw-more-title{font-family:var(--font-sans);font-stretch:112%;font-weight:500}
.page-title,.sec-head h2,.svc-section-title{font-family:var(--font-sans);font-stretch:112%;font-weight:600;letter-spacing:-.01em}
.eyebrow,.svc-eyebrow,.store-eyebrow,.footer-eyebrow{font-family:var(--font-sans);letter-spacing:.28em;color:var(--ink-3)}

/* 導覽的中英兩層：英文 mono 小字在前、中文主字在後（標記由 inc/appearance.php 產生） */
.nav-list a{display:inline-flex}
.nav-list .nav-zh,.nav-list a:hover .nav-zh,.nav-list a:focus-visible .nav-zh{position:static;display:inline;opacity:1;transform:none;pointer-events:auto;
  font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--ink);letter-spacing:0;margin:0;white-space:nowrap;transition:none}
.nav-list .nav-en,.nav-list a:hover .nav-en,.nav-list a:focus-visible .nav-en{display:inline;opacity:1;transform:none;transition:none}
@media (hover:none){.nav-list .nav-zh{opacity:1;margin-left:0;font-size:14px}}
@media(max-width:760px){.nav-list .nav-zh,.nav-list a:hover .nav-zh{font-size:20px}}

/* 修正：對照區的時間與說明沿用 1.65.7 的大字樣式，這裡壓回圖說列的尺度 */
.v2-compare .philos-split figcaption,.v2-compare .philos-split .ps-time,.v2-compare .philos-split .ps-note{font-size:12px;font-weight:400;line-height:1.5;letter-spacing:.06em;text-transform:uppercase;font-family:var(--font-mono);position:static;inset:auto;background:none;padding:0;margin:0;text-shadow:none}
.v2-compare .philos-split figure{position:static}
.v2-footer__mark .cv-mark{display:block;width:100%}
.v2-footer__mark .cv-mark img{width:100%;height:auto}
.v2-row__thumb{display:block}
.v2-row__thumb-wrap{display:block;width:200px}
@media(max-width:760px){.v2-row__thumb-wrap{width:100%}}
.v2-pagehead__title .crumbs,.v2-pagehead__title .breadcrumb,.v2-pagehead__title nav[aria-label="麵包屑"]{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.cv-crumbs{margin:0 0 var(--space-2);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:0}
.cv-crumbs ol{display:flex;gap:var(--space-3);list-style:none;margin:0;padding:0;flex-wrap:wrap}
.cv-crumbs a{color:var(--ink-3);text-decoration:none}
.cv-crumbs a:hover{color:var(--ribbon-ink)}

/* 文章內文欄：拿掉 1.x .page-body 的置中與內距，寬度改成 18px 內文的 34em */
.v2-article__body{max-width:calc(34 * 18px)}
.v2-article__body .page-body{padding:0;margin:0;max-width:none}
.v2-article__body .page-body > *{margin-left:0;margin-right:0}
.v2-article__body .page-body p{margin:0 0 var(--space-6)}
.v2-work__content > *{margin-left:0;margin-right:0}
.v2-work__content > p{margin:0 0 var(--space-6)}
.v2-more__grid > .v2-card{grid-column:auto}

/* ---- 滿版出血的影像區塊（2.0.2） ----

   上面那條 `.v2-work__content > figure { margin: var(--space-16) 0 }` 把左右
   margin 歸零，正好取消掉外掛的 `.cvf-fit-cover{ margin-inline: calc(50% - 50vw) }`。
   width:100vw 活了下來、負邊界沒有，於是一張 2519px 寬的圖從內容欄左緣
   （660px）開始畫，整頁往右溢出 675px：作品頁因此有橫向捲軸，照片看起來偏右。

   2.0 的製圖桌版面有一條 56px 的邊欄，內容欄並不在視窗正中央，所以以 vw 為
   基準的 breakout 不可能同時對稱又不溢出（vw 還含捲軸寬）。在這個版面裡，
   滿版出血改成「填滿內容欄」：不溢出、左右對稱，也跟 1.19.1 的比例規範一致。 */
@media (min-width: 1200px) {
  .v2-work__content > figure.cvf-fit-cover {
    width: 100%;
    max-width: 100%;
    margin-inline: 0;
  }
  .v2-work__content > figure.cvf-fit-cover .cvf-img { border-radius: var(--r-img, 3px); }
}
