/* ==========================================================================
   TT Core — Story 文章页版式 "T5"（Claude 设计稿 story-article-option-b，2026-10-13 新版）
   · 服务 tt_layout='t5' 的 story 文章页（tt_story_html() 内按 ID 分发 article/hub）。
   · HEADING RULE（Claude 新版已承诺）：不新增/不删除/不改名/不升降任何 heading；
     H3 保级 —— 地点/叙述 H3=stop 卡；对话 H3=.ttst-say；提示 H3=.ttst-note；
     活站 H2（少数页）=.ttst-part 分隔；唯一 H2 是活站的 "Frequently asked questions"。
   · 字体：Fraunces + Public Sans 自托管（SIL OFL），零 Google 依赖。
   · 色板与 T3（ttct）一致：--acc #8E2A17。
   ========================================================================== */
@font-face{font-family:'Fraunces';font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/fraunces-var.woff2) format('woff2');}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/public-sans-var-latin.woff2) format('woff2');}

.ttst{--acc:#8E2A17;--acc-dk:#6B1E10;--ink:#1C2733;--txt:#39434F;--mute:#4A5562;--soft:#6A7380;--sand:#F6F3EE;--chip:#F1ECE3;--line:#E4E0D8;--gold:#E2B04A;
  font-family:'Public Sans',system-ui,sans-serif;color:var(--ink);line-height:1.7;background:#fff}
.ttst *,.ttst *::before,.ttst *::after{box-sizing:border-box}
.ttst img{display:block;max-width:100%}
.ttst a{color:var(--acc)}.ttst a:hover{color:var(--acc-dk)}
.ttst h1,.ttst h2,.ttst h3{font-family:'Fraunces',Georgia,serif;font-weight:600;margin:0;line-height:1.15}
.ttst p{margin:0}
.ttst-wrap{max-width:1200px;margin:0 auto;padding:0 24px}
.ttst-eb{font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--acc);margin-bottom:6px}
.ttst-cover{position:relative;overflow:hidden;background:#CFC8BB}
.ttst-cover>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* hero */
.ttst-hero{position:relative;min-height:600px;display:flex;align-items:flex-end;color:#fff;background:#4b4842}
.ttst-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ttst-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(15,20,28,.15) 30%,rgba(15,20,28,.78))}
.ttst-hero .ttst-wrap{position:relative;z-index:1;width:100%;padding-top:72px;padding-bottom:52px}
.ttst-crumb{font-size:13px;margin-bottom:14px;color:#EDE7DC}.ttst-crumb a{color:#EDE7DC}
.ttst-hero .ttst-eb{color:#F3E3C3}
.ttst-hero h1{font-size:clamp(40px,6vw,72px);line-height:1.02;margin-top:8px}
.ttst-sub{font:italic 500 21px/1.5 'Fraunces',serif;max-width:680px;margin-top:14px!important}

/* facts strip */
.ttst-facts{background:var(--ink);color:#fff}
.ttst-facts ul{list-style:none;margin:0 auto;padding:0 24px;max-width:1200px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.ttst-facts li{padding:18px 16px;border-right:1px solid rgba(255,255,255,.12)}
.ttst-facts li:last-child{border-right:0}
.ttst-facts span{display:block;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.ttst-facts b{font-weight:600;font-size:17px}

/* stop chips */
.ttst-walk{padding:64px 0 8px}
.ttst-walk__t{font:600 36px/1.15 'Fraunces',serif;margin-bottom:18px!important}
.ttst-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.ttst-chips a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid #D8D2C7;background:#fff;color:var(--ink)!important;font-weight:600;font-size:14px;text-decoration:none}
.ttst-chips a:hover{border-color:var(--acc);color:var(--acc)!important}
.ttst-chips a.is-poem{background:var(--ink);border-color:var(--ink);color:#fff!important}

/* live H2s（少数页有，如 blondel 报告 / in-the-footsteps）：分隔条样式，保持 H2 级 */
.ttst-part{display:flex;align-items:center;gap:16px;margin:24px 0 4px}
.ttst-part h2{font-size:32px}
.ttst-part::after{content:"";flex:1;height:2px;background:var(--line)}

/* 对话 H3（Mark / Group member / Group…）：保 H3，讲者标签样式 */
.ttst-say{margin-top:6px}
.ttst-say h3.ttst-who{font:700 13px/1.3 'Public Sans',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--acc)}
.ttst-say p{margin-top:4px!important;padding-left:14px;border-left:3px solid var(--chip)}

/* 提示 H3（The Teaching / What Locals Know / Get This Straight / Worth Knowing / Today…）：保 H3 */
.ttst-note{background:var(--sand);border-radius:12px;padding:18px 20px;margin-top:6px}
.ttst-note h3{font:700 13px/1.3 'Public Sans',sans-serif!important;letter-spacing:.08em;text-transform:uppercase;color:var(--acc);margin-bottom:6px}
.ttst-note p{font-size:16px!important}

/* stops */
.ttst-stops{padding:24px 0 56px;display:flex;flex-direction:column;gap:26px}
.ttst-stop{display:flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:16px;overflow:hidden;scroll-margin-top:24px}
.ttst-stop:nth-child(even){flex-direction:row-reverse}
.ttst-stop:target{border:2px solid var(--acc)}
.ttst-stop .ttst-cover{flex:1 1 420px;min-height:320px}
.ttst-no{position:absolute;top:16px;left:16px;z-index:1;background:var(--ink);color:#fff;border-radius:8px;padding:6px 12px;text-align:center}
.ttst-no small{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.ttst-no b{font:600 26px/1 'Fraunces',serif}
.ttst-stop__txt{flex:1 1 440px;min-width:0;padding:32px 36px;display:flex;flex-direction:column;justify-content:center;gap:12px}
.ttst-where{align-self:flex-start;background:var(--chip);border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600;color:var(--txt)}
.ttst-stop h3{font-size:27px;line-height:1.2}
.ttst-stop__txt p{color:var(--txt);font-size:17px}
.ttst-stop--text{flex-direction:row!important}
.ttst-stop--text .ttst-stop__txt{flex-basis:100%;max-width:820px}
.ttst-stops{counter-reset:stop}
.ttst-stop{counter-increment:stop}
.ttst-stop .ttst-where::before{content:"Stop " counter(stop);font-weight:700;color:var(--acc)}
.ttst-where:empty{padding:4px 14px}

/* 诗（Potala 特有）：全宽深色带；活站 H3 全部保级 —— 诗行 H3 用诗体样式 */
.ttst-poem{background:var(--ink);color:#fff;scroll-margin-top:24px}
.ttst-poem .ttst-wrap{max-width:860px;padding-top:80px;padding-bottom:80px;text-align:center}
.ttst-poem .ttst-eb{color:var(--gold)}
.ttst-poem h3.ttst-eb{font-family:'Public Sans',sans-serif;line-height:1.4}
.ttst-poem .ttst-poem__t{font-size:44px;margin:14px 0 18px;color:#fff}
.ttst-poem blockquote{margin:0}
.ttst-poem h3.ttst-zh{font:600 24px/1.8 'Fraunces',serif;color:#F1ECE3}
.ttst-poem h3.ttst-en{font:italic 600 21px/1.7 'Fraunces',serif;color:#C9D1D9;margin-top:14px}
.ttst-poem .after{margin-top:26px!important;color:#DCE1E6;font-size:17px;text-align:left}
.ttst-poem .after p+p{margin-top:10px!important}

/* storyteller + tours */
.ttst-sec{padding:72px 0}
.ttst-teller{display:flex;flex-wrap:wrap;gap:24px;align-items:center;margin-bottom:28px}
.ttst-teller .ttst-cover{flex:0 0 96px;width:96px;height:96px;border-radius:50%}
.ttst-teller>div:last-child{flex:1 1 400px;min-width:0}
.ttst-teller h3.ttst-teller__s{font:700 13px/1.3 'Public Sans',sans-serif!important;letter-spacing:.1em;text-transform:uppercase;color:var(--acc);margin-top:16px}
.ttst-teller h3.ttst-teller__n{font-size:22px;margin:2px 0 4px}
.ttst-teller h3{font-size:27px}
.ttst-teller p{color:var(--mute)}
.ttst-tours{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.ttst-tour{position:relative;min-height:300px;border-radius:14px;overflow:hidden;display:flex;align-items:flex-end;text-decoration:none;background:#CFC8BB}
.ttst-tour img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ttst-tour div{position:relative;width:100%;background:rgba(20,28,38,.86);padding:18px 20px;color:#fff}
.ttst-tour small{display:block;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#F3E3C3}
.ttst-tour b{font:600 22px/1.2 'Fraunces',serif}

/* more stories slider —— 区块标题沿用活站 H3（"More stories from the same journey"）；
   卡片标题沿用活站 H3（保级），仅换肤 */
.ttst-sand{background:var(--sand)}
.ttst-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:22px}
.ttst-head h3{font-size:30px}
.ttst-arrows{display:flex;gap:10px}
.ttst-arrow{width:48px;height:48px;border-radius:999px;border:1px solid var(--ink);background:#fff;color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer}
.ttst-arrow--next{background:var(--ink);color:#fff}
.ttst-track{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;padding-bottom:4px}
.ttst-track::-webkit-scrollbar{display:none}
.ttst-card{flex:0 0 calc((100% - 36px)/3);scroll-snap-align:start;background:#fff;border-radius:12px;overflow:hidden;text-decoration:none;color:var(--ink)!important;display:flex;flex-direction:column}
.ttst-card .ttst-cover{height:200px}
.ttst-card div.t{padding:16px 18px 20px}
.ttst-card small{display:block;font-size:13px;color:var(--soft);font-weight:600;margin-bottom:4px}
.ttst-card h3{font:600 20px/1.25 'Fraunces',serif}
.ttst-card p{font-size:13px;color:var(--soft);margin-top:6px!important}

/* FAQ（唯一 H2，活站原文） */
.ttst-faq{max-width:880px}
.ttst-faq h2{font-size:30px;margin-bottom:16px}
.ttst-faq details{border-bottom:1px solid var(--line)}
.ttst-faq details:first-of-type{border-top:1px solid var(--line)}
.ttst-faq summary{list-style:none;min-height:58px;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0;font-weight:600;font-size:17px;cursor:pointer}
.ttst-faq summary::-webkit-details-marker{display:none}
.ttst-faq summary::after{content:"+";font-size:24px;color:var(--acc);line-height:1}
.ttst-faq details[open] summary::after{content:"−"}
.ttst-faq details p{padding:0 0 18px;color:var(--mute)}

/* H4（in-the-footsteps 行程小节）保级样式 */
.ttst h4{font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:22px;margin:18px 0 8px}
.ttst ul,.ttst ol{margin:0;padding-left:22px}
.ttst li{margin:4px 0}
/* 评分卡（blondel 页 ++ 对）与 intro / strong 小标题 */
/* v0.3.80：评分记号 "++"（活站 H3 原文就是这两个字符，不改文字）→ 做小做灰，不进视觉主体（Mark 2026-10-13 定） */
.ttst .ttst-rate__v{font:700 13px/1 'Public Sans',system-ui,sans-serif;letter-spacing:.16em;color:#9A958B;margin-bottom:6px}
.ttst-intro{color:var(--txt);font-size:17px;margin:10px 0!important}
.ttst-stop__txt p+p,.ttst-note p+p,.ttst-free p+p{margin-top:10px!important}
/* free 区（活站 H2 part 与其后的散文，逐字逐序插在块之间） */
.ttst-free{width:100%}
.ttst-free>.ttst-part{margin:36px 0 14px}
.ttst-free>p,.ttst-free>ul,.ttst-free>ol,.ttst-free>blockquote,.ttst-free>.ttst-say,.ttst-free>.ttst-note{max-width:820px}
.ttst-free>p{color:var(--txt);font-size:17px;margin:12px 0!important}
.ttst-free>ul,.ttst-free>ol{margin:12px 0}
.ttst-free h4{font-size:22px}

@media (max-width:900px){ .ttst-card{flex-basis:calc((100% - 18px)/2)} }
@media (max-width:700px){
  .ttst-wrap{padding:0 16px}
  .ttst-hero{min-height:500px}
  .ttst-sub{font-size:18px}
  .ttst-facts ul{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 16px}
  .ttst-facts li:nth-child(2){border-right:0}
  .ttst-facts li:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.12)}
  .ttst-walk{padding-top:48px}
  .ttst-walk__t{font-size:28px}
  .ttst-stop .ttst-cover{min-height:240px;flex-basis:100%}
  .ttst-stop__txt{padding:24px 22px 28px}
  .ttst-stop h3{font-size:23px}
  .ttst-poem .ttst-poem__t{font-size:32px}
  .ttst-poem h3.ttst-zh{font-size:20px}
  .ttst-poem h3.ttst-en{font-size:18px}
  .ttst-sec{padding:56px 0}
  .ttst-card{flex-basis:85%}
  .ttst-part h2{font-size:26px}
}

/* ===== v0.5.0 (Claude): story pages ===== */
.ttst-stops{max-width:1040px}
.ttst-stop--text{flex-wrap:nowrap}
.ttst-rail{flex:0 0 120px;display:flex;justify-content:center;padding-top:34px;font:600 44px/1 'Fraunces',Georgia,serif;color:var(--acc);background:var(--sand);border-right:1px solid var(--line)}
.ttst-stop--text .ttst-stop__txt{max-width:none;flex:1 1 auto}
.ttst-stop--text .ttst-stop__txt>*{max-width:760px}
.ttst-line{position:relative;background:var(--sand);border-radius:12px;padding:12px 16px!important;font-style:italic}
.ttst-line .ttst-line__who{font-style:normal;font-weight:700;color:var(--acc);margin-right:4px}
.ttst-teller{gap:36px;align-items:flex-start;background:var(--sand);border-radius:18px;padding:32px}
.ttst-teller .ttst-cover{flex:0 0 140px;width:140px;height:140px}
.ttst-teller p{font-size:16.5px;line-height:1.65}
.ttst-teller p+p{margin-top:10px}
@media (max-width:700px){
  .ttst-stop--text{flex-wrap:wrap}
  .ttst-rail{flex:1 1 100%;justify-content:flex-start;padding:18px 24px 0;font-size:34px;background:none;border-right:0}
  .ttst-teller{padding:22px}
  .ttst-teller .ttst-cover{flex-basis:96px;width:96px;height:96px}
}

/* ===== v0.5.0 (Claude): "Their Tibet" traveller story ===== */
.ttts-narrow{max-width:900px}
.ttts-intro{padding:44px 0 8px}
.ttts-intro p{font-size:19px;line-height:1.7;color:var(--txt)}
.ttts-intro p+p{margin-top:14px}
.ttts-sec{padding:64px 0}
.ttts-sand{background:var(--sand)}
.ttts h2.ttts-h2{font-size:clamp(28px,3.4vw,38px);margin:0 0 18px}
.ttts-lead p{color:var(--mute);font-size:16px;margin-bottom:18px}
/* timeline */
.ttts-line{list-style:none;margin:8px 0 0;padding:0 0 0 30px;position:relative}
.ttts-line::before{content:"";position:absolute;left:9px;top:8px;bottom:8px;width:2px;background:var(--line)}
.ttts-line__i{position:relative;padding:0 0 22px}
.ttts-line__i::before{content:"";position:absolute;left:-27px;top:5px;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--acc)}
.ttts-line__i.is-move::before{background:var(--acc)}
.ttts h3.ttts-line__h{font-size:21px;line-height:1.3}
.ttts h3.ttts-line__sub{font:500 16px/1.5 'Public Sans',sans-serif;color:var(--txt);margin-top:3px}
.ttts-line__b p{font-size:15.5px;color:var(--mute);margin-top:3px}
/* prose */
.ttts-prose{display:grid;grid-template-columns:minmax(0,1fr);gap:48px;align-items:start}
.ttts-prose:not(.has-img) .ttts-prose__b{max-width:820px}
.ttts-prose.has-img{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
.ttts-prose__b p{font-size:17px;line-height:1.7;color:var(--txt)}
.ttts-prose__b p+p{margin-top:14px}
.ttts-prose__b h3{font-size:22px;margin:30px 0 8px;padding-top:22px;border-top:1px solid var(--line)}
.ttts-prose__img{border-radius:18px;overflow:hidden;position:sticky;top:110px;aspect-ratio:4/5;max-height:560px;margin:0}
.ttts-prose__img img{width:100%;height:100%;object-fit:cover}
/* quotes */
.ttts-words{display:grid;gap:14px}
.ttts-q{margin:0;background:#fff;border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:0 14px 14px 0;padding:18px 22px}
.ttts-q p{font:italic 500 20px/1.55 'Fraunces',Georgia,serif;color:var(--ink)}
.ttts-by{font-size:14px;font-weight:600;color:var(--soft);letter-spacing:.02em;margin-top:8px}
/* ratings */
.ttts-rates{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.ttts-rate{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 18px;display:flex;align-items:center;gap:14px}
.ttts h3.ttts-rate__v{font:700 22px/1 'Public Sans',sans-serif;color:#fff;background:#2F6B4F;border-radius:10px;min-width:48px;height:40px;display:flex;align-items:center;justify-content:center;letter-spacing:.04em}
.ttts h3.ttts-rate__k{font:600 15px/1.35 'Public Sans',sans-serif;color:var(--ink)}
/* linked cards */
.ttts-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px}
.ttts-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;text-decoration:none!important;color:inherit!important;transition:box-shadow .15s,transform .15s}
a.ttts-card:hover{box-shadow:0 10px 28px rgba(28,39,51,.12);transform:translateY(-2px)}
.ttts-card__img{width:100%;aspect-ratio:3/2;object-fit:cover}
.ttts-card__b{padding:16px 18px 18px;display:flex;flex-direction:column;gap:6px;flex:1}
.ttts h3.ttts-card__h{font-size:20px}
.ttts h3.ttts-card__sub{font:500 15px/1.45 'Public Sans',sans-serif;color:var(--txt)}
.ttts-card__b p{font-size:15px;color:var(--mute)}
.ttts-card__go{margin-top:auto;padding-top:8px;font-weight:600;color:var(--acc);font-size:15px}
@media (max-width:900px){
  .ttts-prose.has-img{grid-template-columns:minmax(0,1fr)}
  .ttts-prose__img{position:static;aspect-ratio:16/10;order:-1}
  .ttts-intro p{font-size:17px}
}
.ttst-partlabel{margin:18px 0 -6px}
.ttst .ttst-partlabel h3{font:700 13px/1.3 'Public Sans',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--acc);display:flex;align-items:center;gap:14px}
.ttst .ttst-partlabel h3::after{content:"";flex:1;height:1px;background:var(--line)}
