:root{
  --paper:#F1EDE2; --ink:#191510; --red:#AE2016; --muted:#6C6454; --panel:#E8E2D1; --line:#CAC2AE; --paper3:#E1DAC5;
  --song:"Songti SC","STSong","Noto Serif SC","Source Han Serif SC","SimSun",serif;
  --hei:"PingFang SC","Heiti SC","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
  --latin:Georgia,"Times New Roman",serif;
  --mono:ui-monospace,"SF Mono",Consolas,monospace;
}
body{ background:var(--paper); color:var(--ink);
  background-image:radial-gradient(rgba(120,108,84,.06) .5px, transparent .6px); background-size:3px 3px; }
a{ color:var(--red); }

/* ---- masthead ---- */
.ts-masthead{ max-width:1160px; margin:0 auto; padding:16px 24px 0; }
.ts-folio{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; background:var(--red); color:#F4EBD8;
  font-family:var(--hei); font-size:.72rem; font-weight:600; letter-spacing:.05em; padding:5px 13px; }
.ts-folio .mid{ font-family:var(--mono); letter-spacing:.12em; text-transform:uppercase; opacity:.92; }
.ts-oxford{ border-top:3px solid var(--ink); border-bottom:1px solid var(--ink); height:4px; }
.ts-oxford.ts-sp{ margin:24px 0; }
.ts-nameplate-row{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:16px; padding:14px 0 8px; }
.ts-ear{ font-family:var(--hei); font-size:.71rem; color:var(--muted); line-height:1.5; }
.ts-ear.r{ text-align:right; display:flex; justify-content:flex-end; align-items:center; gap:12px; }
.ts-ear b{ display:block; color:var(--ink); font-size:.78rem; }
.ts-nameplate{ text-align:center; }
.ts-nameplate a{ text-decoration:none; color:inherit; display:block; }
.ts-morelist .wp-block-post-template{ list-style:none; }
.ts-morelist .wp-block-post-template.is-layout-grid{ gap:0 22px; }
.ts-morelist .wp-block-post-template > li{ padding:14px 0; border-top:2px solid var(--ink); }
.ts-morelist .wp-block-post-title{ font-family:var(--song); font-weight:800; font-size:1rem; line-height:1.34; margin:4px 0 0;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.ts-morelist .wp-block-post-title a{ color:var(--ink); text-decoration:none; }
.ts-morelist .wp-block-post-title a:hover{ color:var(--red); }
.ts-wordmark{ font-family:var(--latin); font-weight:800; font-size:clamp(2.6rem,7vw,5rem); line-height:.9; letter-spacing:-.015em; }
.ts-cn{ font-family:var(--song); font-weight:800; font-size:clamp(.95rem,2.2vw,1.3rem); letter-spacing:.46em; padding-left:.46em; margin-top:9px; }
.ts-seal{ width:52px; height:52px; background:var(--red); color:#F4EBD8; display:grid; place-items:center;
  writing-mode:vertical-rl; font-family:var(--song); font-weight:800; font-size:.86rem; letter-spacing:.12em;
  border-radius:5px; transform:rotate(-3deg); box-shadow:0 2px 0 #88170F; flex-shrink:0; }
.ts-infoband{ display:flex; justify-content:center; flex-wrap:wrap; gap:6px 18px; padding:5px 0;
  font-family:var(--mono); font-size:.68rem; letter-spacing:.1em; color:var(--muted); text-transform:uppercase; }
.ts-infoband span b{ color:var(--ink); font-weight:600; }
.ts-plate-strip{ display:flex; justify-content:center; gap:16px; align-items:center; padding:6px 0;
  font-family:var(--hei); font-size:.73rem; color:var(--muted); letter-spacing:.03em; flex-wrap:wrap; }
.ts-plate-strip .red{ color:var(--red); }
.ts-nav{ display:flex; justify-content:center; flex-wrap:wrap; padding:8px 0; font-family:var(--hei); font-weight:700; font-size:.92rem; }
.ts-nav a{ color:var(--ink); text-decoration:none; padding:2px 16px; }
.ts-nav a + a{ border-left:1px solid var(--line); }
.ts-nav a:hover{ color:var(--red); }

.ts-main{ max-width:1160px; margin:0 auto; padding:24px; }
.ts-single{ max-width:760px; }
.ts-kicker{ font-family:var(--hei); font-size:.72rem; font-weight:700; letter-spacing:.1em; margin-bottom:4px; }
.ts-kicker a{ color:var(--red); text-decoration:none; }

/* WordPress 的 is-layout-flow 会给 "* + *" 加 margin-block-start，
   在我们的网格容器里会把第2、3栏往下推，导致栏目头不齐 —— 这里统一归零 */
/* WP 规则是 `:root :where(.is-layout-flow) > *` = 优先级(0,1,0)。
   这里用两个类选择器 (0,2,0) 稳压它，不依赖样式表加载顺序。 */
.ts-fold > .ts-zone,
.ts-cols > .ts-col,
.ts-letters-row > *,
.ts-main > .ts-fold,
.ts-main > .ts-cols{ margin-block-start:0; margin-top:0; }
.ts-fold > *, .ts-cols > *{ margin-block-start:0; margin-top:0; }
.ts-cols, .ts-fold{ align-items:start; }

/* ---- fold: 3-zone front page ---- */
.ts-fold{ display:grid !important; grid-template-columns:196px 1fr 250px; gap:0; }
.ts-zone{ padding:0 20px; }
.ts-zone.ts-left{ padding-left:0; border-right:1px solid var(--line); }
.ts-zone.ts-right{ padding-right:0; border-left:1px solid var(--line); }

.ts-rail-h{ font-family:var(--hei); font-weight:800; font-size:.82rem; letter-spacing:.14em; color:var(--red);
  border-bottom:2px solid var(--ink); padding-bottom:5px; margin:0 0 10px; }
.ts-rail-h:not(:first-child){ margin-top:20px; }
.ts-index{ list-style:none; margin:0; padding:0; font-family:var(--hei); font-size:.8rem; }
.ts-index li{ display:flex; justify-content:space-between; gap:8px; padding:4px 0; border-bottom:1px dotted var(--line); color:var(--ink); }
.ts-index li a{ color:var(--ink); text-decoration:none; }
.ts-index li a:hover{ color:var(--red); text-decoration:underline; }
.ts-index li .p{ font-family:var(--mono); color:var(--red); font-size:.72rem; }
/* 最新简讯 — real latest posts */
.ts-briefq .wp-block-post-template{ list-style:none; margin:0; padding:0; }
.ts-briefq .wp-block-post-template > li{ padding:6px 0; border-bottom:1px solid var(--line); text-indent:-11px; padding-left:11px; }
.ts-briefq .wp-block-post-template > li:last-child{ border-bottom:0; }
.ts-briefq .wp-block-post-template > li::before{ content:"■"; color:var(--red); font-size:.6rem; margin-right:6px; vertical-align:middle; }
.ts-briefq .wp-block-post-title{ display:inline; font-family:var(--song); font-size:.8rem; line-height:1.55; font-weight:400; margin:0; }
.ts-briefq .wp-block-post-title a{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.ts-briefq .wp-block-post-title a{ color:var(--ink); text-decoration:none; }
.ts-briefq .wp-block-post-title a:hover{ color:var(--red); text-decoration:underline; }
.ts-weather{ display:flex; align-items:center; gap:11px; font-family:var(--hei); }
.ts-weather .t{ font-family:var(--latin); font-weight:800; font-size:2rem; line-height:1; }
.ts-weather .w{ font-size:.76rem; color:var(--muted); line-height:1.4; }
.ts-weather .w b{ color:var(--ink); display:block; font-size:.82rem; }
.ts-brief{ list-style:none; margin:0; padding:0; font-family:var(--song); font-size:.83rem; line-height:1.6; }
.ts-brief li{ padding:7px 0; border-bottom:1px solid var(--line); color:var(--ink); text-indent:-11px; padding-left:11px; }
.ts-brief li::before{ content:"■"; color:var(--red); font-size:.6rem; margin-right:6px; vertical-align:middle; }
.ts-brief li:last-child{ border-bottom:0; }

/* center lead */
.ts-hammer{ font-family:var(--hei); font-weight:800; font-size:.8rem; letter-spacing:.16em; color:var(--red); text-align:center; }
.ts-leadc{ text-align:center; }
.ts-lead-title{ font-family:var(--song); font-weight:800; font-size:clamp(1.8rem,4vw,3rem); line-height:1.14; margin:8px auto 10px; max-width:17ch; }
.ts-lead-title a{ color:var(--ink); text-decoration:none; }
.ts-lead-title a:hover{ color:var(--red); }
.ts-lead-deck{ font-family:var(--song); font-style:italic; color:var(--muted); max-width:52ch; margin:0 auto; font-size:1.02rem; line-height:1.5; }
.ts-byline-c{ text-align:center; font-family:var(--hei); font-size:.74rem; color:var(--muted); letter-spacing:.05em; padding:10px 0 12px; }
.ts-figure{ position:relative; background:var(--paper3); border:1px solid var(--ink); overflow:hidden; }
.ts-figure svg{ display:block; width:100%; height:auto; }
.ts-figure::after{ content:""; position:absolute; inset:0; pointer-events:none;
  background-image:radial-gradient(var(--ink) 20%, transparent 22%); background-size:3.5px 3.5px; opacity:.04; mix-blend-mode:multiply; }
.ts-stamp{ position:absolute; z-index:3; top:12px; right:14px; width:64px; height:64px; border-radius:50%;
  border:2.5px solid var(--red); color:var(--red); display:grid; place-items:center; transform:rotate(-13deg);
  font-family:var(--song); font-weight:800; font-size:1.1rem; letter-spacing:.06em; opacity:.92;
  box-shadow:inset 0 0 0 2px var(--paper), inset 0 0 0 4px var(--red); }
.fig-ink{ fill:var(--ink); } .fig-red{ fill:var(--red); } .fig-mut{ fill:var(--muted); }
.fig-sink{ stroke:var(--ink); } .fig-sred{ stroke:var(--red); } .fig-t{ font-family:var(--hei); }
.ts-figcap{ font-family:var(--song); font-style:italic; font-size:.8rem; color:var(--muted); line-height:1.5; margin:7px 0 0; }
.ts-figcap b{ font-family:var(--hei); font-style:normal; color:var(--red); font-size:.68rem; letter-spacing:.08em; margin-right:6px; }

/* right rail */
.ts-brisk .wp-block-post-template{ list-style:none; }
.ts-brisk .wp-block-post-template > li{ padding:0 0 11px; margin-bottom:11px; border-bottom:1px solid var(--line); }
.ts-brisk .wp-block-post-title{ font-family:var(--song); font-weight:800; font-size:1rem; line-height:1.34; margin:3px 0 0; }
.ts-brisk .wp-block-post-title a{ color:var(--ink); text-decoration:none; }
.ts-brisk .wp-block-post-title a:hover{ color:var(--red); }
.ts-review{ padding-top:4px; }
.ts-review .ts-k{ font-family:var(--hei); font-size:.67rem; color:var(--red); font-weight:700; letter-spacing:.08em; margin-bottom:4px; }
.ts-review h4{ font-family:var(--song); font-weight:800; font-size:1.02rem; line-height:1.34; margin:0 0 5px; }
.ts-review p{ font-family:var(--song); font-size:.82rem; line-height:1.62; color:var(--muted); margin:0; }

/* section columns */
/* 三栏必须完全等宽：用 gap 分隔，分隔线画在间隙中央的伪元素上。
   （原先靠首/末栏去掉单边 padding，会让中间栏窄 20px，图片按比例矮一截，逐排错位）*/
.ts-cols{ display:grid !important; grid-template-columns:repeat(3,1fr); gap:0 40px; }
.ts-col{ padding:0; position:relative; }
.ts-col + .ts-col::before{ content:""; position:absolute; left:-20px; top:0; bottom:0;
  width:1px; background:var(--line); }
.ts-col-head{ display:flex; align-items:center; gap:9px; border-bottom:2px solid var(--ink); padding-bottom:5px; margin-bottom:12px; }
.ts-col-head .nm{ font-family:var(--hei); font-weight:800; font-size:1.04rem; }
.ts-col-head .en{ font-family:var(--mono); font-size:.6rem; letter-spacing:.12em; text-transform:uppercase; color:var(--red); margin-left:auto; }
.ts-secq .wp-block-post-template{ list-style:none; margin:0; padding:0; }
.ts-secq .wp-block-post-template > li{ padding:11px 0; border-bottom:1px solid var(--line);
  display:flex; flex-direction:column; }
.ts-secq .wp-block-post-template > li > *{ margin-block-start:0; margin-block-end:0; }
.ts-secq .wp-block-post-template > li:first-child{ padding-top:0; }
/* 缩图高度锁死为栏宽的 10/16，避免各栏图片高度不一造成逐排错位 */
.ts-secq .ts-thumb{ margin:0 0 9px !important; }
.ts-secq .ts-thumb img{ aspect-ratio:16/10; height:auto; }
/* 每张卡片强制等高 → 各栏每一排都水平对齐。
   用精确 height（非 min-height）封顶，并直接作用在真正承载文字的元素上。*/
.ts-secq .wp-block-post-title{ font-family:var(--song); font-weight:800; font-size:1.05rem; line-height:1.32; margin:0 0 5px;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; height:2.64em; }
.ts-secq .wp-block-post-title a{ color:var(--ink); text-decoration:none; }
.ts-secq .wp-block-post-title a:hover{ color:var(--red); }
.ts-secq .wp-block-post-excerpt{ margin:0; }
.ts-secq .wp-block-post-excerpt__excerpt{ font-family:var(--song); font-size:.84rem; line-height:1.6; color:var(--muted);
  margin:0; display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; overflow:hidden; height:1.6em; }
.wp-block-post-excerpt__more-link{ display:none; }

/* letters + ads */
.ts-letters-row{ display:grid; grid-template-columns:1.9fr 1fr; }
.ts-letters-row > div{ padding:0 22px; }
.ts-letters-row > div:first-child{ padding-left:0; }
.ts-letters-row > div:last-child{ padding-right:0; border-left:1px solid var(--line); }
.ts-lt-head{ display:flex; align-items:stretch; gap:14px; }
.ts-vtitle{ writing-mode:vertical-rl; font-family:var(--song); font-weight:800; font-size:1.5rem; letter-spacing:.32em;
  color:var(--ink); border-right:3px double var(--ink); padding:2px 12px 2px 0; line-height:1; }
.ts-lt-intro{ font-family:var(--hei); font-size:.78rem; color:var(--muted); line-height:1.7; }
.ts-lt-intro b{ color:var(--red); }
.ts-letter{ padding:12px 0; border-bottom:1px solid var(--line); }
.ts-letter:last-child{ border-bottom:0; }
.ts-letter h5{ font-family:var(--song); font-weight:800; font-size:1rem; margin:0 0 5px; }
.ts-letter p{ font-family:var(--song); font-size:.86rem; line-height:1.72; color:var(--ink); margin:0; text-align:justify; }
.ts-letter .sig{ display:block; text-align:right; font-family:var(--hei); font-size:.76rem; color:var(--muted); margin-top:6px; }
.ts-adbox{ position:relative; border:1.5px solid var(--ink); padding:20px 18px; text-align:center; }
.ts-adbox + .ts-adbox{ margin-top:24px; }
.ts-adlabel{ position:absolute; top:-8px; left:50%; transform:translateX(-50%); background:var(--paper);
  font-family:var(--mono); font-size:.6rem; letter-spacing:.24em; text-transform:uppercase; color:var(--muted); padding:0 8px; }
.ts-adbox.house .ah{ font-family:var(--song); font-weight:800; font-size:1.35rem; line-height:1.3; margin-bottom:8px; }
.ts-adbox.house .ah .red{ color:var(--red); }
.ts-adbox.house p{ font-family:var(--hei); font-size:.82rem; color:var(--ink); margin:0 0 12px; line-height:1.6; }
.ts-adbox.house .cta{ display:inline-block; font-family:var(--hei); font-weight:700; font-size:.82rem; border:1.5px solid var(--ink); padding:7px 20px; color:var(--ink); }
.ts-adbox.rent{ display:grid; place-items:center; min-height:120px; }
.ts-adbox.rent .r1{ font-family:var(--song); font-weight:800; font-size:1.1rem; margin-bottom:6px; }
.ts-adbox.rent .r2{ font-family:var(--mono); font-size:.72rem; color:var(--muted); }

.ts-classifieds{ margin-top:24px; border-top:3px double var(--ink); padding-top:12px; }
.ts-cl-head{ display:flex; align-items:baseline; gap:10px; margin-bottom:12px; }
.ts-cl-head .nm{ font-family:var(--hei); font-weight:800; font-size:1rem; }
.ts-cl-head .en{ font-family:var(--mono); font-size:.62rem; letter-spacing:.16em; text-transform:uppercase; color:var(--red); }
.ts-cl-grid{ columns:4; column-gap:22px; column-rule:1px solid var(--line); }
.ts-cad{ break-inside:avoid; padding:0 0 11px; margin-bottom:11px; border-bottom:1px dotted var(--line);
  font-family:var(--song); font-size:.82rem; line-height:1.62; color:var(--ink); }
.ts-cad b{ font-family:var(--hei); color:var(--red); font-size:.72rem; letter-spacing:.05em; margin-right:4px; }

/* single article */
.ts-single-title{ font-family:var(--song); font-weight:800; font-size:clamp(1.8rem,4vw,2.8rem); line-height:1.22; margin:8px 0 12px; }
.ts-byline{ font-family:var(--hei); font-size:.78rem; color:var(--muted); gap:14px; border-bottom:1px solid var(--line); padding-bottom:12px; margin-bottom:20px; }
.ts-single .wp-block-post-content{ font-family:var(--song); font-size:1.05rem; line-height:1.9; }
.ts-single .wp-block-post-content > p:first-of-type::first-letter{ font-family:var(--song); font-weight:800; float:left; font-size:3.4rem; line-height:.8; padding:6px 10px 0 0; color:var(--red); }

/* feed (index) + archive */
.ts-feedq .wp-block-post-template > li{ padding:16px 0; border-bottom:1px solid var(--line); }
.ts-feedq .wp-block-post-title{ font-family:var(--song); font-weight:800; font-size:1.42rem; line-height:1.3; margin:5px 0; }
.ts-feedq .wp-block-post-title a{ color:var(--ink); text-decoration:none; }
.ts-feedq .wp-block-post-title a:hover{ color:var(--red); }
.ts-feedq .wp-block-post-excerpt{ font-family:var(--song); color:var(--muted); }
.ts-archive-title{ font-family:var(--song); font-weight:800; font-size:2rem; text-align:center; border-bottom:3px double var(--ink); padding-bottom:12px; margin-bottom:20px; }

/* footer */
.ts-footer{ max-width:1160px; margin:40px auto 0; padding:0 24px 40px; }
.ts-footer .ts-oxford{ margin-bottom:18px; }
.ts-foot-grid{ display:grid; grid-template-columns:1fr 1.6fr; gap:0; }
.ts-foot-col{ padding:0 24px; }
.ts-foot-col:first-child{ padding-left:0; }
.ts-foot-col:last-child{ padding-right:0; }
.ts-foot-col + .ts-foot-col{ border-left:1px solid var(--line); }
.ts-foot-h{ font-family:var(--hei); font-weight:800; font-size:.78rem; letter-spacing:.14em; color:var(--red);
  border-bottom:2px solid var(--ink); padding-bottom:5px; margin-bottom:10px; }
.ts-foot-col ul{ list-style:none; margin:0; padding:0; font-family:var(--hei); font-size:.85rem; }
.ts-foot-col li{ padding:4px 0; }
.ts-foot-col a{ color:var(--ink); text-decoration:none; }
.ts-foot-col a:hover{ color:var(--red); text-decoration:underline; }
.ts-social li a::before{ content:"↗ "; color:var(--red); font-size:.8em; }
.ts-foot-about{ font-family:var(--song); font-size:.86rem; line-height:1.7; color:var(--muted); margin:0; }
.ts-copy{ font-family:var(--hei); font-size:.78rem; color:var(--muted); text-align:center; margin:14px 0 0; }
@media (max-width:820px){
  .ts-foot-grid{ grid-template-columns:1fr; }
  .ts-foot-col{ padding:16px 0 0; } .ts-foot-col + .ts-foot-col{ border-left:0; border-top:1px solid var(--line); }
}
.wp-block-query-pagination{ font-family:var(--hei); margin-top:22px; gap:12px; }
.wp-block-query-pagination a, .wp-block-query-pagination .current{ color:var(--ink); }

/* ---- featured images ---- */
.wp-block-post-featured-image{ margin:0; overflow:hidden; }
.wp-block-post-featured-image img{ display:block; width:100%; height:auto; }
/* section/grid thumbnails */
.ts-thumb{ margin:0 0 9px !important; border:1px solid var(--ink); overflow:hidden; }
.ts-thumb img{ aspect-ratio:16/10; object-fit:cover; transition:transform .3s ease; }
.ts-thumb:hover img{ transform:scale(1.04); }
/* lead figure — full-colour featured image + 独家 stamp */
.ts-figure .wp-block-post-featured-image img{ aspect-ratio:16/9; object-fit:cover; }
/* single hero image */
.ts-hero-img{ margin:0 0 22px !important; border:1px solid var(--ink); }
.ts-hero-img img{ width:100%; height:auto; }

/* ---- section front (archive/category) ---- */
.ts-secfront-kick{ font-family:var(--mono); font-size:.72rem; letter-spacing:.3em; text-transform:uppercase; color:var(--red); text-align:center; }
.ts-secfront-title{ font-family:var(--song); font-weight:800; font-size:clamp(2rem,5vw,3.4rem); line-height:1.1; text-align:center; margin:6px 0 8px; }
.ts-secfront-desc{ font-family:var(--song); font-style:italic; color:var(--muted); text-align:center; max-width:60ch; margin:0 auto; font-size:1.02rem; line-height:1.6; }
.ts-secfront .wp-block-post-template{ list-style:none; }
.ts-secfront .wp-block-post-template.is-layout-grid{ gap:0 24px; }
.ts-secfront .wp-block-post-template > li{ padding:14px 0; border-top:2px solid var(--ink); }
.ts-secfront .wp-block-post-title{ font-family:var(--song); font-weight:800; font-size:1.14rem; line-height:1.34; margin:5px 0; }
.ts-secfront .wp-block-post-title a{ color:var(--ink); text-decoration:none; }
.ts-secfront .wp-block-post-title a:hover{ color:var(--red); }
.ts-secfront .wp-block-post-excerpt{ font-family:var(--song); font-size:.86rem; color:var(--muted); line-height:1.6; }
.ts-secfront .wp-block-post-template > li:first-child{ grid-column:1 / -1; border-top:3px solid var(--ink); border-bottom:3px double var(--ink); padding:18px 0 20px; }
.ts-secfront .wp-block-post-template > li:first-child .ts-thumb img{ aspect-ratio:21/8; }
.ts-secfront .wp-block-post-template > li:first-child .wp-block-post-title{ font-size:clamp(1.6rem,3.4vw,2.4rem); line-height:1.18; max-width:24ch; }
.ts-secfront .wp-block-post-template > li:first-child .wp-block-post-excerpt{ font-size:1rem; max-width:62ch; }
.ts-noresult{ font-family:var(--song); color:var(--muted); padding:30px 0; }

/* ---- single article: GEO 要点 / 来源 ---- */
.ts-tldr{ background:var(--panel); border:1px solid var(--ink); border-left:4px solid var(--red); padding:16px 18px; margin:0 0 24px; }
.ts-tldr-h{ font-family:var(--hei); font-weight:800; font-size:.8rem; letter-spacing:.14em; color:var(--red); margin-bottom:10px; }
.ts-tldr ul{ margin:0; padding-left:20px; font-family:var(--song); font-size:1rem; line-height:1.7; }
.ts-tldr li{ margin-bottom:5px; }
.ts-tldr p{ margin:0; font-family:var(--song); font-size:1rem; line-height:1.7; }
.ts-tldr-date{ font-family:var(--mono); font-size:.72rem; color:var(--muted); margin-top:11px; letter-spacing:.04em; }
/* 正文已自带要点段时，只显示这一行时效信息 */
.ts-dateline{ font-family:var(--mono); font-size:.72rem; color:var(--muted); letter-spacing:.04em;
  border-left:3px solid var(--red); padding:2px 0 2px 10px; margin:0 0 20px; }
.ts-sources{ border-top:3px double var(--ink); margin-top:30px; padding-top:16px; }
.ts-sources-h{ font-family:var(--hei); font-weight:800; font-size:.85rem; letter-spacing:.06em; margin-bottom:10px; }
.ts-sources ol{ margin:0; padding-left:22px; font-family:var(--song); font-size:.92rem; line-height:1.75; color:#3C362C; }
.ts-sources a{ color:var(--red); }

/* ---- single article ---- */
.ts-standfirst{ font-family:var(--song); font-style:italic; font-size:1.12rem; line-height:1.6; color:#3C362C; max-width:60ch; margin:2px 0 14px; }
.ts-more{ max-width:1160px; margin:0 auto; padding:0 24px 10px; }
.ts-more .ts-col-head{ margin-bottom:14px; }
.ts-more .wp-block-post-template{ list-style:none; }
.ts-more .wp-block-post-template.is-layout-grid{ gap:0 24px; }
.ts-more .wp-block-post-template > li{ padding:12px 0; border-top:2px solid var(--ink); }
.ts-more .wp-block-post-title{ font-family:var(--song); font-weight:800; font-size:1.05rem; line-height:1.32; margin:4px 0 0; }
.ts-more .wp-block-post-title a{ color:var(--ink); text-decoration:none; }
.ts-more .wp-block-post-title a:hover{ color:var(--red); }
@media (max-width:820px){
  .ts-secfront .wp-block-post-template.is-layout-grid{ grid-template-columns:1fr 1fr !important; }
  .ts-more .wp-block-post-template.is-layout-grid{ grid-template-columns:1fr 1fr !important; }
  .ts-morelist .wp-block-post-template.is-layout-grid{ grid-template-columns:1fr 1fr !important; }
}
@media (max-width:560px){
  .ts-secfront .wp-block-post-template.is-layout-grid{ grid-template-columns:1fr !important; }
  .ts-more .wp-block-post-template.is-layout-grid{ grid-template-columns:1fr !important; }
  .ts-morelist .wp-block-post-template.is-layout-grid{ grid-template-columns:1fr !important; }
}

/* ---- 404 / 搜索 ---- */
.ts-404{ text-align:center; }
.ts-404-kick{ font-family:var(--mono); font-size:.72rem; letter-spacing:.3em; text-transform:uppercase; color:var(--red); }
.ts-404-title{ font-family:var(--song); font-weight:800; font-size:clamp(1.9rem,4.6vw,3rem); line-height:1.15; margin:8px 0 10px; }
.ts-404-desc{ font-family:var(--song); font-style:italic; color:var(--muted); font-size:1.02rem; max-width:46ch; margin:0 auto 18px; }
.ts-404-links{ display:flex; flex-wrap:wrap; justify-content:center; gap:0 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:12px 0; margin-bottom:20px; }
.ts-404-links a{ font-family:var(--hei); font-weight:700; font-size:.92rem; color:var(--ink); text-decoration:none; padding:2px 16px; }
.ts-404-links a + a{ border-left:1px solid var(--line); }
.ts-404-links a:hover{ color:var(--red); }
.ts-searchform{ max-width:520px; margin:0 auto 4px; }
.ts-searchform .wp-block-search__input{ font-family:var(--song); border:1px solid var(--ink); background:var(--paper);
  color:var(--ink); padding:9px 13px; border-radius:0; }
.ts-searchform .wp-block-search__button{ font-family:var(--hei); font-weight:700; background:var(--ink); color:var(--paper);
  border:1px solid var(--ink); border-radius:0; padding:9px 20px; cursor:pointer; }
.ts-searchform .wp-block-search__button:hover{ background:var(--red); border-color:var(--red); }

/* AI 工具导航 page */
.ts-page .wp-block-post-content{ font-family:var(--song); }
.ts-tools{ display:grid; grid-template-columns:1fr 1fr; gap:22px; margin-top:8px; }
.ts-tgroup{ border:1px solid var(--line); border-top:3px solid var(--red); padding:16px 18px; background:var(--panel); }
.ts-tgroup h3{ font-family:var(--hei); font-weight:800; font-size:1.05rem; margin:0 0 12px; letter-spacing:.02em; }
.ts-tgroup ul{ list-style:none; margin:0; padding:0; }
.ts-tgroup li{ padding:8px 0; border-bottom:1px dotted var(--line); display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.ts-tgroup li:last-child{ border-bottom:0; }
.ts-tgroup a{ font-family:var(--hei); font-weight:700; font-size:.95rem; color:var(--ink); text-decoration:none; }
.ts-tgroup a:hover{ color:var(--red); }
.ts-tgroup .d{ font-family:var(--song); font-size:.8rem; color:var(--muted); text-align:right; }
.ts-tools-intro{ font-family:var(--song); font-size:1rem; line-height:1.8; color:var(--ink); max-width:70ch; margin:0 0 22px; }
@media (max-width:700px){ .ts-tools{ grid-template-columns:1fr; } }

/* responsive */
@media (max-width:900px){
  .ts-nameplate-row{ grid-template-columns:1fr; } .ts-ear{ display:none; }
  .ts-fold{ grid-template-columns:1fr; }
  .ts-zone{ padding:0; } .ts-zone.ts-left,.ts-zone.ts-right{ border:0; border-top:1px solid var(--line); padding-top:18px; margin-top:18px; }
  .ts-zone.ts-left{ order:2; } .ts-zone.ts-center{ order:1; } .ts-zone.ts-right{ order:3; }
  .ts-cols{ grid-template-columns:1fr; gap:0; }
  .ts-col{ padding:18px 0 0; } .ts-col + .ts-col{ border-top:1px solid var(--line); }
  .ts-col + .ts-col::before{ display:none; }
  .ts-letters-row{ grid-template-columns:1fr; }
  .ts-letters-row > div{ padding:0; } .ts-letters-row > div:last-child{ border-left:0; border-top:1px solid var(--line); padding-top:18px; margin-top:18px; }
  .ts-cl-grid{ columns:2; }
}
@media (max-width:560px){ .ts-cl-grid{ columns:1; } .ts-nav a{ padding:2px 10px; } }
