/* ============================================================
   通玄 TONGXUAN · 推运旗舰页 tuiyun.css
   （序章骨架承 wanshu 气质、结果区自成 ty- 体系；
    观星夜空金为基调，袖中天覆写集中文件末尾）
   ============================================================ */
[hidden] { display: none !important; }

/* 无障碍隐形标签（本页不引 dianji.css，自持） */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* ---------- 体系族色（页内变量；xiu 末尾覆写） ---------- */
:root {
  --ty-cn: #a3452f;        /* 中式 · 朱砂族（宣纸上加深） */
  --ty-zi: #6c4a7d;        /* 紫微 · 藕紫 */
  --ty-qz: #846210;        /* 七政 · 鎏土 */
  --ty-vedic: #4d7560;     /* 印度 · 苔青 */
  --ty-hour: #5f6b78;      /* 三式参照 · 铁灰 */
  --ty-west: #7a5c20;      /* 西占 · 鎏金深 */
  /* 当前段金亮对（xiu 末尾一并覆写为紫渐变） */
  --ty-lit: linear-gradient(135deg, var(--gold-300), var(--gold-500));
  --ty-lit-ink: #241a08;
  /* 今线色（时间轴 / 限带今点 / 千运轮共用） */
  --ty-nowline: #a3452f;
}

/* ============================================================
   一、序章主视觉
   ============================================================ */
.ty-hero {
  position: relative;
  min-height: 100vh;
  padding: calc(var(--nav-h) + 48px) 0 72px;
  display: flex; align-items: center;
  overflow: hidden;
  background:
    radial-gradient(ellipse 100% 90% at 50% -10%, rgba(212, 175, 106, 0.1), transparent 55%),
    linear-gradient(180deg, var(--ink-900), var(--ink-950) 70%);
}
.ty-stars { position: absolute; inset: 0; width: 100%; height: 100%; }
.ty-hero-inner { position: relative; z-index: 2; text-align: center; }
.ty-hero::after {
  content: "";
  position: absolute; left: 0; right: 0; bottom: 0;
  height: 150px;
  z-index: 1;
  background: linear-gradient(180deg, transparent, var(--ink-950));
  pointer-events: none;
}

/* 运轨盘（.rite-disc 骨架承 base.css；三圈轨道各携一枚行点异速运行） */
.rite-tuiyun { width: min(1000px, 165vw); bottom: -44%; color: rgba(212, 175, 106, 0.3); }
.rite-tuiyun .ty-orb1, .rite-tuiyun .ty-orb2, .rite-tuiyun .ty-orb3 {
  transform-origin: 360px 360px;
  transform-box: view-box;
  animation: rdSpin 90s linear infinite;
}
.rite-tuiyun .ty-orb2 { animation-duration: 52s; animation-direction: reverse; }
.rite-tuiyun .ty-orb3 { animation-duration: 30s; }
.rite-tuiyun .ty-dot {
  fill: var(--gold-300);
  stroke: rgba(212, 175, 106, 0.5);
  stroke-width: 4;
  filter: drop-shadow(0 0 6px rgba(212, 175, 106, 0.8));
}
.rite-tuiyun .ty-core { font-weight: 700; }
.rite-tuiyun .ty-glow {
  position: absolute; left: 50%; top: 50%;
  width: 32%; aspect-ratio: 1;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: radial-gradient(circle, currentColor, transparent 62%);
  opacity: 0.1;
  animation: tyGlow 5.2s var(--ease-soft) infinite;
}
@keyframes tyGlow {
  0%, 100% { opacity: 0.07; transform: translate(-50%, -50%) scale(0.96); }
  50% { opacity: 0.13; transform: translate(-50%, -50%) scale(1); }
}

.ty-eyebrow {
  font-family: var(--font-serif);
  font-size: 14px; letter-spacing: 0.32em; text-indent: 0.32em;
  color: var(--gold-500);
}
.ty-eyebrow em {
  font-style: normal;
  margin-left: 10px;
  padding: 3px 12px;
  font-size: 12px; letter-spacing: 0.14em;
  color: #f8ecd8;
  background: linear-gradient(155deg, var(--cinnabar), var(--cinnabar-deep));
  border-radius: 999px;
}
.ty-title {
  margin-top: 16px;
  font-size: clamp(52px, 9.5vw, 104px);
  font-weight: 900;
  letter-spacing: 0.12em; text-indent: 0.12em;
  line-height: 1.2;
  background: linear-gradient(168deg, #f4e3b8 8%, var(--gold-400) 38%, var(--gold-500) 62%, #a8813f 95%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
  filter: drop-shadow(0 6px 30px rgba(212, 175, 106, 0.25));
}
.ty-en {
  margin-top: 10px;
  font-size: 13px; letter-spacing: 0.5em; text-indent: 0.5em;
  color: var(--text-low);
}
.ty-sub {
  margin-top: 22px;
  font-size: 15.5px; line-height: 2.1;
  letter-spacing: 0.05em;
  color: var(--text-mid);
}
.ty-actions {
  margin-top: 32px;
  display: flex; justify-content: center; gap: 16px; flex-wrap: wrap;
}

/* ============================================================
   二、何谓推运 / 诸法一览
   ============================================================ */
.ty-why-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}
.ty-why-card {
  padding: 34px 26px;
  text-align: center;
  border: 1px solid rgba(150, 114, 58, 0.35);
  border-radius: var(--radius-lg);
  background: linear-gradient(180deg, var(--paper-50), var(--paper-100));
  box-shadow: 0 10px 26px rgba(44, 42, 36, 0.08);
  transition: transform 0.35s var(--ease-out), box-shadow 0.35s;
}
.ty-why-card:hover { transform: translateY(-6px); box-shadow: 0 18px 38px rgba(44, 42, 36, 0.14); }
.ty-why-seal {
  display: inline-flex; align-items: center; justify-content: center;
  width: 56px; height: 56px;
  font-family: var(--font-serif);
  font-size: 26px; font-weight: 700;
  color: #f8ecd8;
  background: linear-gradient(155deg, var(--cinnabar), var(--cinnabar-deep));
  border-radius: 15px;
  box-shadow: inset 0 0 0 1.5px rgba(248, 236, 216, 0.4);
}
.ty-why-card h3 {
  margin-top: 18px;
  font-size: 20px; letter-spacing: 0.12em;
  color: var(--paper-ink);
}
.ty-why-card p {
  margin-top: 12px;
  font-size: 14px; line-height: 2;
  color: var(--paper-ink-soft);
  text-align: left;
}

.ty-arts-sec {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(ellipse 90% 120% at 50% 120%, rgba(212, 175, 106, 0.08), transparent 55%),
    linear-gradient(180deg, var(--ink-950), var(--ink-900));
}
.ty-arts-stars { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0.6; }
.ty-arts-sec .container { position: relative; }
.ty-arts {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 14px;
  max-width: 880px;
  margin-inline: auto;
}
.ty-art {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  padding: 20px 8px 16px;
  border: 1px solid rgba(212, 175, 106, 0.18);
  border-radius: var(--radius-md);
  background: rgba(13, 20, 38, 0.5);
  cursor: pointer;
  transition: transform 0.3s var(--ease-out), border-color 0.3s, background 0.3s;
}
.ty-art:hover { transform: translateY(-4px); border-color: rgba(212, 175, 106, 0.5); }
.ty-art b {
  display: flex; align-items: center; justify-content: center;
  width: 46px; height: 46px;
  font-family: var(--font-serif);
  font-size: 20px; font-weight: 700;
  border-radius: 12px;
  color: var(--gold-300);
  border: 1px solid rgba(212, 175, 106, 0.55);
  background: linear-gradient(160deg, rgba(212, 175, 106, 0.16), rgba(212, 175, 106, 0.05));
  box-shadow: 0 6px 16px rgba(5, 8, 18, 0.4);
}
.ty-art i {
  font-style: normal;
  font-size: 12.5px; letter-spacing: 0.08em;
  color: var(--text-mid);
}
.ty-arts-note {
  margin-top: 34px;
  text-align: center;
  font-family: var(--font-serif);
  font-size: 13.5px; letter-spacing: 0.16em;
  color: var(--text-low);
}

/* ============================================================
   三、排运表单
   ============================================================ */
.ty-cast {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(ellipse 80% 100% at 50% 110%, rgba(212, 175, 106, 0.12), transparent 60%),
    linear-gradient(180deg, var(--ink-900), var(--ink-950));
}
.ty-cast-stars { position: absolute; inset: 0; width: 100%; height: 100%; }
.ty-cast-inner { position: relative; max-width: 860px; }

.ty-form {
  border: 1px solid rgba(184, 145, 75, 0.4);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(ellipse 130% 100% at 50% -30%, rgba(212, 175, 106, 0.1), transparent 55%),
    rgba(13, 20, 38, 0.55);
  backdrop-filter: blur(4px);
  padding: 30px 32px 34px;
}
.ty-frow { display: flex; align-items: center; gap: 18px; margin-top: 16px; }
.ty-frow:first-child { margin-top: 0; }
.ty-flabel {
  flex: 0 0 92px;
  font-family: var(--font-serif);
  font-size: 14px; font-weight: 700;
  letter-spacing: 0.14em;
  color: var(--gold-400);
}
.ty-fctrls { flex: 1; display: flex; flex-wrap: wrap; gap: 10px; align-items: center; position: relative; }
.ty-fnote { font-size: 12px; letter-spacing: 0.04em; color: var(--text-low); }
.ty-input {
  padding: 11px 14px;
  border: 1px solid rgba(212, 175, 106, 0.3);
  border-radius: var(--radius-md);
  background: rgba(13, 20, 38, 0.6);
  color: var(--text-hi);
  font-family: inherit; font-size: 14px; letter-spacing: 0.03em;
  color-scheme: dark;
  transition: border-color 0.3s, box-shadow 0.3s;
}
.ty-input::placeholder { color: var(--text-low); }
.ty-input:focus {
  outline: none;
  border-color: var(--gold-500);
  box-shadow: 0 0 0 3px rgba(212, 175, 106, 0.16);
}
.ty-input-wide { flex: 1; min-width: 240px; }
.ty-dash {
  padding: 10px 16px;
  border: 1px dashed rgba(212, 175, 106, 0.5);
  border-radius: var(--radius-md);
  background: transparent;
  color: var(--gold-400);
  font-size: 13px; letter-spacing: 0.1em;
  transition: all 0.3s;
}
.ty-dash:hover { border-style: solid; color: var(--gold-300); }
.ty-pill {
  padding: 10px 18px;
  border: 1px solid rgba(212, 175, 106, 0.3);
  border-radius: 999px;
  background: rgba(212, 175, 106, 0.05);
  color: var(--text-mid);
  font-size: 13.5px; letter-spacing: 0.06em;
  transition: all 0.3s var(--ease-out);
}
.ty-pill:hover { transform: translateY(-1px); border-color: rgba(212, 175, 106, 0.6); }
.ty-pill.active {
  border-color: var(--gold-500);
  background: linear-gradient(135deg, var(--gold-300), var(--gold-500) 70%);
  color: #241a08; font-weight: 600;
}
.ty-stepper { display: inline-flex; align-items: center; gap: 6px; }
.ty-step {
  width: 40px; height: 40px;
  border: 1px solid rgba(212, 175, 106, 0.35);
  border-radius: var(--radius-md);
  background: rgba(212, 175, 106, 0.06);
  color: var(--gold-300);
  font-size: 18px; font-weight: 700;
  transition: all 0.25s;
}
.ty-step:hover { border-color: var(--gold-500); background: rgba(212, 175, 106, 0.14); }
.ty-year { width: 96px; text-align: center; font-size: 16px; }
.ty-year::-webkit-outer-spin-button, .ty-year::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ty-year { -moz-appearance: textfield; appearance: textfield; }

.ty-castfoot {
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid rgba(212, 175, 106, 0.18);
  text-align: center;
}
.ty-go { min-width: 300px; }
.ty-cast-note {
  margin-top: 14px;
  font-size: 12.5px; letter-spacing: 0.07em;
  color: var(--text-low);
}

/* ============================================================
   四、吸顶章导
   ============================================================ */
.ty-nav {
  position: sticky; top: var(--nav-h); z-index: 40;
  background: rgba(247, 243, 233, 0.92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(150, 114, 58, 0.25);
}
.ty-nav-inner {
  max-width: 1020px;
  margin-inline: auto;
  padding: 0 20px;
  display: flex; gap: 4px;
  overflow-x: auto;
  scrollbar-width: none;
}
.ty-nav-inner::-webkit-scrollbar { display: none; }
.ty-nav-inner a {
  flex-shrink: 0;
  padding: 13px 16px;
  font-family: var(--font-serif);
  font-size: 13.5px; font-weight: 600; letter-spacing: 0.1em;
  color: var(--paper-ink-soft);
  border-bottom: 2px solid transparent;
  transition: color 0.25s, border-color 0.25s;
}
.ty-nav-inner a:hover { color: var(--paper-ink); }
.ty-nav-inner a.active { color: #a3452f; border-bottom-color: #a3452f; }
.ty-nav-deep { color: var(--gold-700) !important; }

/* ============================================================
   五、此刻 —— 十五法签条 roster + 换限大事牌/时刻线 + 公共 tip
   ============================================================ */
.ty-roster {
  margin-top: 26px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 22px;
}
.ty-ros-group {
  grid-column: 1 / -1;
  margin-top: 10px;
  font-style: normal;
  font-family: var(--font-serif);
  font-size: 12px; letter-spacing: 0.3em;
  color: var(--paper-ink-soft);
}
.ty-ros-group:first-child { margin-top: 0; }
.ty-ros {
  position: relative;
  display: flex; align-items: center; gap: 10px;
  padding: 9px 12px 11px;
  border-radius: 10px;
  text-align: left;
  cursor: pointer;
  transition: background 0.2s, transform 0.2s var(--ease-out);
  overflow: hidden;
}
.ty-ros:hover { background: color-mix(in srgb, var(--ty-accent, #7a5c20) 7%, transparent); transform: translateX(3px); }
.ty-ros-seal {
  flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px;
  font-family: var(--font-serif);
  font-size: 12.5px; font-weight: 700;
  color: #f6f1e5;
  background: var(--ty-accent, #a3452f);
  border-radius: 7px;
}
.ty-ros-name {
  flex-shrink: 0;
  font-family: var(--font-serif);
  font-size: 13.5px; font-weight: 700; letter-spacing: 0.04em;
  color: var(--paper-ink);
}
.ty-ros-now {
  min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  margin-left: auto;
  font-size: 12.5px;
  color: var(--ty-accent, #7a5c20);
  font-weight: 600;
}
.ty-ros-now.is-dim { color: var(--paper-ink-soft); font-weight: 400; }
.ty-ros-bar {
  position: absolute; left: 46px; bottom: 4px;
  height: 2px;
  border-radius: 2px;
  background: color-mix(in srgb, var(--ty-accent, #a3452f) 55%, transparent);
}
.ty-ros.is-fail { opacity: 0.6; }
.ty-ros.is-fail .ty-ros-seal { background: rgba(44, 42, 36, 0.35); }

.ty-switch-wrap { margin-top: 48px; }
.ty-block-title {
  font-family: var(--font-serif);
  font-size: 19px; font-weight: 700; letter-spacing: 0.18em;
  color: var(--paper-ink);
  text-align: center;
}
.ty-block-note {
  margin-top: 8px;
  text-align: center;
  font-size: 12.5px; letter-spacing: 0.04em;
  color: var(--paper-ink-soft);
}
.ty-switch { margin-top: 20px; max-width: 900px; margin-inline: auto; }
.ty-switch-empty {
  padding: 22px;
  text-align: center;
  font-size: 13px;
  color: var(--paper-ink-soft);
}
/* 三大事牌 */
.ty-next-hero {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.ty-nh {
  position: relative;
  padding: 18px 18px 16px;
  border: 1px solid color-mix(in srgb, var(--ty-accent, #7a5c20) 30%, transparent);
  border-top: 3px solid var(--ty-accent, #a3452f);
  border-radius: var(--radius-md);
  background:
    linear-gradient(165deg, color-mix(in srgb, var(--ty-accent, #a3452f) 7%, transparent), transparent 55%),
    rgba(250, 247, 239, 0.85);
  text-align: left;
  cursor: pointer;
  transition: transform 0.28s var(--ease-out), box-shadow 0.28s;
}
.ty-nh:hover { transform: translateY(-4px); box-shadow: 0 14px 30px rgba(44, 42, 36, 0.14); }
.ty-nh-date {
  display: block;
  font-family: var(--font-serif);
  font-size: 30px; font-weight: 700; letter-spacing: 0.04em;
  color: var(--paper-ink);
  font-variant-numeric: tabular-nums;
  line-height: 1.15;
}
.ty-nh-date em {
  font-style: normal;
  display: block;
  font-size: 12px; font-weight: 400; letter-spacing: 0.2em;
  color: var(--paper-ink-soft);
}
.ty-nh-count {
  position: absolute; top: 16px; right: 16px;
  font-size: 11.5px; letter-spacing: 0.04em;
  color: var(--paper-ink-soft);
  font-variant-numeric: tabular-nums;
}
.ty-nh-sys {
  display: inline-block;
  margin-top: 12px;
  padding: 3px 12px;
  border-radius: 999px;
  font-size: 12px; letter-spacing: 0.04em;
  color: var(--ty-accent, #7a5c20);
  background: color-mix(in srgb, var(--ty-accent, #7a5c20) 9%, transparent);
  border: 1px solid color-mix(in srgb, var(--ty-accent, #7a5c20) 32%, transparent);
}
.ty-nh-flow {
  display: block;
  margin-top: 9px;
  font-size: 13px; line-height: 1.7;
  color: var(--paper-ink);
  overflow-wrap: anywhere;
}
.ty-nh-cluster {
  display: inline-block;
  margin-top: 8px;
  font-style: normal;
  font-size: 11.5px; letter-spacing: 0.06em;
  color: #8a5a16;
  padding: 2px 9px;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(240, 220, 174, 0.55), rgba(212, 175, 106, 0.4));
  border: 1px solid rgba(184, 145, 75, 0.5);
}
/* 公共浮签 tip（罗盘/时间轴/限带共用；挂 body） */
.ty-tip {
  position: fixed;
  z-index: 240;
  max-width: 260px;
  padding: 9px 12px;
  border-radius: 9px;
  font-size: 12.5px; line-height: 1.75; letter-spacing: 0.02em;
  color: var(--text-hi);
  background: linear-gradient(160deg, var(--ink-800), var(--ink-900));
  border: 1px solid rgba(212, 175, 106, 0.4);
  box-shadow: 0 12px 30px rgba(5, 8, 18, 0.4);
  pointer-events: none;
}
.ty-tip b { color: var(--gold-300); }
.ty-tip .ty-tip-go { display: block; margin-top: 3px; font-style: normal; font-size: 11px; color: var(--gold-400); opacity: 0.85; }

/* ============================================================
   六、法卷面板通用件
   ============================================================ */
.ty-vol .section-head { margin-bottom: 30px; }
.ty-stack { display: flex; flex-direction: column; gap: 26px; }
.ty-panel {
  border: 1px solid rgba(44, 42, 36, 0.16);
  border-top: 3px solid var(--ty-accent, #a3452f);
  border-radius: var(--radius-lg);
  background: linear-gradient(180deg, var(--paper-50), var(--paper-100));
  box-shadow: 0 10px 26px rgba(44, 42, 36, 0.07);
  overflow: hidden;
}
.ty-panel-head {
  display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
  padding: 16px 22px 14px;
  border-bottom: 1px solid rgba(44, 42, 36, 0.1);
}
.ty-panel-seal {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px;
  font-family: var(--font-serif);
  font-size: 17px; font-weight: 700;
  color: #f6f1e5;
  background: var(--ty-accent, #a3452f);
  border-radius: 9px;
}
.ty-panel-tt { display: flex; flex-direction: column; gap: 1px; }
.ty-panel-title {
  font-family: var(--font-serif);
  font-size: 18px; font-weight: 700; letter-spacing: 0.1em;
  color: var(--paper-ink);
}
.ty-panel-sys {
  font-style: normal;
  font-size: 10.5px; letter-spacing: 0.22em;
  color: var(--paper-ink-soft);
}
/* 当前段大字 —— 法卷头部主角 */
.ty-panel-now {
  margin-left: 8px;
  padding-left: 14px;
  border-left: 2px solid color-mix(in srgb, var(--ty-accent, #a3452f) 45%, transparent);
  display: flex; flex-direction: column; gap: 1px;
  min-width: 0;
}
.ty-panel-now-main {
  font-family: var(--font-serif);
  font-size: 16.5px; font-weight: 700; letter-spacing: 0.05em;
  color: var(--ty-accent, #a3452f);
  overflow-wrap: anywhere;
}
.ty-panel-now-sub {
  font-style: normal;
  font-size: 11.5px; letter-spacing: 0.03em;
  color: var(--paper-ink-soft);
  font-variant-numeric: tabular-nums;
}
.ty-panel-body { padding: 18px 22px 22px; }
.ty-panel-foot {
  margin: 0;
  padding: 10px 22px 14px;
  border-top: 1px dashed rgba(44, 42, 36, 0.14);
  font-size: 12px; line-height: 1.8; letter-spacing: 0.02em;
  color: var(--paper-ink-soft);
}
.ty-golink {
  margin-left: auto;
  font-size: 12.5px; letter-spacing: 0.06em;
  color: var(--gold-700);
  white-space: nowrap;
}
.ty-golink:hover { text-decoration: underline; }

/* ---------- 比例限带 ty-band（权重=段天数；七政工艺推广全法） ---------- */
.ty-band {
  display: flex; gap: 3px;
  margin-top: 4px;
}
.ty-band-seg {
  position: relative;
  flex-basis: 40px;
  min-width: 0;
  padding: 9px 4px 8px;
  text-align: center;
  border: 1px solid color-mix(in srgb, var(--ty-accent, #a3452f) 40%, transparent);
  border-radius: 9px;
  background: color-mix(in srgb, var(--ty-accent, #a3452f) 8%, rgba(250, 247, 239, 0.8));
  cursor: pointer;
  overflow: hidden;
  transition: background 0.22s, box-shadow 0.22s, transform 0.22s;
}
.ty-band-seg:hover { transform: translateY(-2px); box-shadow: 0 6px 14px rgba(44, 42, 36, 0.12); }
.ty-band-seg b {
  display: block;
  font-family: var(--font-serif);
  font-size: 15px; font-weight: 700; letter-spacing: 0.03em;
  color: var(--paper-ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ty-band-seg i {
  display: block; font-style: normal;
  margin-top: 2px;
  font-size: 10.5px; letter-spacing: 0.01em;
  color: var(--paper-ink-soft);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* 当前段金亮（--ty-lit 双主题切换） */
.ty-band-seg.is-now {
  border-color: transparent;
  background: var(--ty-lit);
  box-shadow: 0 6px 16px rgba(212, 175, 106, 0.35);
}
.ty-band-seg.is-now b, .ty-band-seg.is-now i { color: var(--ty-lit-ink); }
.ty-band-seg.is-active:not(.is-now) {
  box-shadow: inset 0 0 0 1.5px var(--ty-accent, #a3452f);
  background: color-mix(in srgb, var(--ty-accent, #a3452f) 14%, rgba(250, 247, 239, 0.9));
}
.ty-band-seg.is-tiny b, .ty-band-seg.is-tiny i { visibility: hidden; }
.ty-band-seg.is-lb { border-left: 3px double var(--ty-accent, #a3452f); }
.ty-band-today {
  position: absolute; top: 0; bottom: 0;
  width: 2px;
  background: var(--ty-nowline);
  pointer-events: none;
}
.ty-band-today em {
  position: absolute; top: 1px; left: 3px;
  font-style: normal;
  font-size: 9px; letter-spacing: 0;
  color: var(--ty-nowline);
}

/* ---------- 年珠带 ty-beads（流年/流月/年小限） ---------- */
.ty-beads {
  margin-top: 12px;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
  gap: 7px;
}
.ty-beads-tight { grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); }
.ty-bead {
  padding: 9px 6px 8px;
  text-align: center;
  border: 1px solid rgba(44, 42, 36, 0.14);
  border-radius: 10px;
  background: rgba(250, 247, 239, 0.7);
  transition: border-color 0.2s, transform 0.2s;
}
button.ty-bead { cursor: pointer; }
button.ty-bead:hover { border-color: var(--ty-accent, #a3452f); transform: translateY(-2px); }
.ty-bead b {
  display: block;
  font-family: var(--font-serif);
  font-size: 13.5px; font-weight: 700; letter-spacing: 0.02em;
  color: var(--paper-ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ty-bead > i {
  display: block; font-style: normal;
  margin-top: 2px;
  font-size: 10.5px;
  color: var(--paper-ink-soft);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  font-variant-numeric: tabular-nums;
}
.ty-bead-tag {
  margin-top: 4px;
  display: inline-block;
  max-width: 100%;
  padding: 1px 7px;
  border-radius: 999px;
  font-size: 10px; letter-spacing: 0.02em;
  color: var(--ty-accent, #7a5c20);
  background: color-mix(in srgb, var(--ty-accent, #7a5c20) 9%, transparent);
  border: 1px solid color-mix(in srgb, var(--ty-accent, #7a5c20) 30%, transparent);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ty-bead-tag.is-ji { color: #3d6b52; background: rgba(77, 117, 96, 0.12); border-color: rgba(77, 117, 96, 0.35); }
.ty-bead-tag.is-xiong { color: #a3452f; background: rgba(163, 69, 47, 0.1); border-color: rgba(163, 69, 47, 0.35); }
.ty-bead.is-now {
  border-color: transparent;
  background: var(--ty-lit);
  box-shadow: 0 5px 14px rgba(212, 175, 106, 0.3);
}
.ty-bead.is-now b, .ty-bead.is-now > i { color: var(--ty-lit-ink); }
.ty-bead.is-now .ty-bead-tag { color: var(--ty-lit-ink); background: rgba(36, 26, 8, 0.1); border-color: rgba(36, 26, 8, 0.25); }

/* ---------- 行卡 ty-rowcard（日期段子层：子限/二级/Antar/分配段） ---------- */
.ty-rows {
  margin-top: 10px;
  display: flex; flex-direction: column; gap: 6px;
}
.ty-rowcard {
  display: flex; align-items: baseline; gap: 14px;
  padding: 9px 14px;
  border: 1px solid rgba(44, 42, 36, 0.12);
  border-left: 3px solid color-mix(in srgb, var(--ty-accent, #a3452f) 35%, transparent);
  border-radius: 9px;
  background: rgba(250, 247, 239, 0.65);
  font-size: 13px;
}
.ty-rowcard-label {
  font-family: var(--font-serif);
  font-size: 14px; font-weight: 700; letter-spacing: 0.03em;
  color: var(--paper-ink);
  white-space: nowrap;
}
.ty-rowcard-span {
  color: var(--paper-ink-soft);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.01em;
}
.ty-rowcard-meta {
  margin-left: auto;
  font-style: normal;
  font-size: 11.5px;
  color: var(--paper-ink-soft);
  white-space: nowrap;
}
.ty-rowcard.is-now {
  border-left-color: var(--gold-500);
  background: linear-gradient(90deg, color-mix(in srgb, var(--gold-500) 16%, transparent), rgba(250, 247, 239, 0.75) 60%);
}
.ty-rowcard.is-now .ty-rowcard-label { color: var(--ty-accent, #a3452f); }
.ty-rowcard-nest {
  margin: -2px 0 2px;
  padding: 8px 14px 8px 31px;
  font-size: 12.5px; line-height: 1.9;
  color: var(--paper-ink-soft);
  border-left: 3px solid color-mix(in srgb, var(--gold-500) 45%, transparent);
}
.ty-rowcard-nest b { color: var(--paper-ink); font-family: var(--font-serif); }

/* ---------- 星位阵 ty-orbgrid（弧向/返照/行运点位） ---------- */
.ty-orbgrid-cap {
  margin-top: 12px;
  font-size: 12.5px; letter-spacing: 0.04em;
  color: var(--paper-ink-soft);
}
.ty-orbgrid-cap + .ty-orbgrid { margin-top: 8px; }
.ty-orbgrid {
  margin-top: 12px;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
  gap: 7px;
}
.ty-orb {
  padding: 9px 6px 8px;
  text-align: center;
  border: 1px solid rgba(44, 42, 36, 0.13);
  border-radius: 10px;
  background: rgba(250, 247, 239, 0.7);
}
.ty-orb-name {
  display: block;
  font-family: var(--font-serif);
  font-size: 13.5px; font-weight: 700;
  color: var(--paper-ink);
}
.ty-orb-sign {
  display: block;
  margin-top: 2px;
  font-size: 11.5px; letter-spacing: 0.04em;
  color: var(--ty-accent, #7a5c20);
  font-weight: 600;
}
.ty-orb-deg {
  display: block; font-style: normal;
  margin-top: 1px;
  font-size: 10.5px;
  color: var(--paper-ink-soft);
  font-variant-numeric: tabular-nums;
}

/* 面包屑（现行路径） */
.ty-crumb {
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px;
  margin-bottom: 12px;
  font-size: 13px;
}
.ty-crumb-seg {
  padding: 5px 12px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--ty-accent, #a3452f) 45%, transparent);
  background: color-mix(in srgb, var(--ty-accent, #a3452f) 8%, transparent);
  color: var(--paper-ink);
  font-family: var(--font-serif); font-weight: 600;
}
.ty-crumb-sep { color: var(--paper-ink-soft); }

/* 注释行 / 键值行 */
.ty-kv {
  margin-top: 12px;
  display: flex; flex-wrap: wrap; gap: 8px 22px;
  font-size: 13px;
  color: var(--paper-ink);
}
.ty-kv b { font-family: var(--font-serif); color: var(--paper-ink-soft); font-weight: 600; margin-right: 6px; }
.ty-note {
  margin-top: 12px;
  font-size: 12.5px; line-height: 1.8;
  color: var(--paper-ink-soft);
}

/* 迷你摘要卡（奇门/六壬/西占 lite） */
.ty-minigrid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
}
.ty-minicard {
  padding: 14px 16px;
  border: 1px solid rgba(44, 42, 36, 0.14);
  border-radius: var(--radius-md);
  background: rgba(250, 247, 239, 0.75);
}
.ty-minicard h4 {
  font-family: var(--font-serif);
  font-size: 14.5px; font-weight: 700; letter-spacing: 0.06em;
  color: var(--paper-ink);
}
.ty-minicard p {
  margin-top: 8px;
  font-size: 12.5px; line-height: 1.9;
  color: var(--paper-ink-soft);
  word-break: break-all;
}
.ty-minicard p b { color: var(--ty-accent, #7a5c20); }

/* 三式引动明细（奇门流年引动 / 六壬行年） */
.ty-minicard-eng { border-left: 3px solid var(--ty-accent, #5f6b78); }
.ty-minicard h4 .ty-eng-note {
  font-style: normal; font-weight: 400;
  margin-left: 8px;
  font-size: 11.5px; letter-spacing: 0.03em;
  color: var(--paper-ink-soft);
}
.ty-eng-list {
  list-style: none;
  margin: 10px 0 0; padding: 0;
  display: flex; flex-direction: column; gap: 7px;
}
.ty-eng-list li {
  position: relative;
  padding-left: 14px;
  font-size: 13px; line-height: 1.85;
  color: var(--paper-ink);
}
.ty-eng-list li::before {
  content: "·";
  position: absolute; left: 2px; top: 0;
  color: var(--ty-accent, #5f6b78);
  font-weight: 700;
}
.ty-eng-list b { font-family: var(--font-serif); }
.ty-tag {
  display: inline-block;
  margin: 0 2px 0 4px;
  padding: 0 6px;
  font-style: normal;
  font-size: 10.5px; line-height: 1.7;
  border-radius: 6px;
  vertical-align: 1px;
}
.ty-tag-ji { color: #3d6b52; background: rgba(77, 117, 96, 0.13); border: 1px solid rgba(77, 117, 96, 0.35); }
.ty-tag-xiong { color: #a3452f; background: rgba(163, 69, 47, 0.1); border: 1px solid rgba(163, 69, 47, 0.35); }
.ty-tag-ping { color: #6b6455; background: rgba(107, 100, 85, 0.1); border: 1px solid rgba(107, 100, 85, 0.3); }
.ty-eng-ws {
  font-style: normal;
  margin-left: 8px;
  font-size: 11.5px;
  color: var(--paper-ink-soft);
}
.ty-eng-ref {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px dashed rgba(44, 42, 36, 0.16);
  font-size: 12px; letter-spacing: 0.02em;
  color: var(--paper-ink-soft);
}

/* 骨架 / 失败态 */
.ty-skel {
  border: 1px solid rgba(44, 42, 36, 0.12);
  border-radius: var(--radius-lg);
  background: rgba(250, 247, 239, 0.6);
  padding: 22px;
}
.ty-skel-line {
  height: 14px;
  border-radius: 7px;
  background: linear-gradient(90deg, rgba(44, 42, 36, 0.07), rgba(44, 42, 36, 0.13), rgba(44, 42, 36, 0.07));
  background-size: 220% 100%;
  animation: tySkel 1.4s linear infinite;
}
.ty-skel-line + .ty-skel-line { margin-top: 12px; }
.ty-skel-note {
  margin-top: 14px;
  font-size: 12.5px; letter-spacing: 0.05em;
  color: var(--paper-ink-soft);
  text-align: center;
}
@keyframes tySkel { to { background-position: -220% 0; } }
.ty-fail {
  padding: 20px;
  text-align: center;
  border: 1px dashed rgba(163, 69, 47, 0.4);
  border-radius: var(--radius-md);
  background: rgba(163, 69, 47, 0.04);
  font-size: 13px;
  color: var(--paper-ink-soft);
}
.ty-retry {
  margin-left: 10px;
  padding: 6px 16px;
  border: 1px solid #a3452f;
  border-radius: 999px;
  background: transparent;
  color: #a3452f;
  font-size: 12.5px;
  transition: all 0.25s;
}
.ty-retry:hover { background: rgba(163, 69, 47, 0.08); }

/* ---------- 三式引动 · 结构化格排（eng-item 升级） ---------- */
.ty-eng-list .ty-eng-item {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  padding: 7px 0 7px 0;
  border-bottom: 1px dashed rgba(44, 42, 36, 0.1);
}
.ty-eng-list .ty-eng-item::before { content: none; }
.ty-eng-list .ty-eng-item:last-child { border-bottom: none; }
.ty-eng-head {
  font-family: var(--font-serif);
  font-size: 12px; font-weight: 600; letter-spacing: 0.03em;
  color: var(--paper-ink-soft);
  white-space: nowrap;
}
.ty-eng-gong {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 30px; height: 30px;
  padding: 0 5px;
  font-family: var(--font-serif);
  font-size: 15px; font-weight: 700;
  color: var(--ty-accent, #5f6b78);
  border: 1.5px solid color-mix(in srgb, var(--ty-accent, #5f6b78) 55%, transparent);
  border-radius: 8px;
  background: color-mix(in srgb, var(--ty-accent, #5f6b78) 7%, transparent);
}
.ty-eng-chips { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px 10px; }
.ty-eng-chips > i { font-style: normal; font-size: 12.5px; color: var(--paper-ink); white-space: nowrap; }

/* ---------- 卷首仪式感：大写数字水印 + 卷内目次 ---------- */
.ty-vol-head { position: relative; }
.ty-vol-num {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -58%);
  font-family: var(--font-serif);
  font-size: 200px; font-weight: 700;
  color: color-mix(in srgb, var(--ty-accent, #a3452f) 7%, transparent);
  pointer-events: none;
  user-select: none;
  line-height: 1;
  z-index: 0;
}
.ty-vol-head > *:not(.ty-vol-num) { position: relative; z-index: 1; }
.ty-vol-toc {
  margin-top: 16px;
  display: flex; flex-wrap: wrap; justify-content: center; gap: 8px;
}
.ty-toc-chip {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 6px 14px 6px 7px;
  border: 1px solid color-mix(in srgb, var(--ty-accent, #7a5c20) 30%, transparent);
  border-radius: 999px;
  background: rgba(250, 247, 239, 0.75);
  font-size: 12.5px; letter-spacing: 0.04em;
  color: var(--paper-ink);
  cursor: pointer;
  transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.ty-toc-chip:hover { border-color: var(--ty-accent, #7a5c20); transform: translateY(-2px); box-shadow: 0 6px 14px rgba(44, 42, 36, 0.1); }
.ty-toc-seal {
  display: inline-flex; align-items: center; justify-content: center;
  width: 21px; height: 21px;
  font-family: var(--font-serif);
  font-size: 11px; font-weight: 700;
  color: #f6f1e5;
  background: var(--ty-accent, #a3452f);
  border-radius: 6px;
}
.ty-toc-chip.is-fail { opacity: 0.55; }
.ty-toc-x { font-style: normal; margin-left: 2px; color: var(--paper-ink-soft); }

/* ---------- 法卷入场（动态挂载，不走 IO；stagger 由 --ty-delay 定） ---------- */
.ty-in {
  opacity: 0;
  transform: translateY(14px);
  animation: tyIn 0.6s var(--ease-out) forwards;
  animation-delay: var(--ty-delay, 0ms);
}
@keyframes tyIn { to { opacity: 1; transform: none; } }

/* ============================================================
   六之二、P1：折叠组 / 主限筛选 / 多泳道时间轴
   ============================================================ */
.ty-details { margin-top: 12px; }
.ty-details summary {
  cursor: pointer;
  padding: 9px 12px;
  border: 1px dashed rgba(44, 42, 36, 0.25);
  border-radius: 9px;
  font-size: 13px; letter-spacing: 0.04em;
  color: var(--paper-ink-soft);
  user-select: none;
}
.ty-details summary:hover { color: var(--paper-ink); border-color: rgba(44, 42, 36, 0.4); }
.ty-details[open] summary { border-style: solid; color: var(--paper-ink); }
.ty-pd-filter { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 4px; }
.ty-pd-filter .ty-pill {
  border-color: rgba(44, 42, 36, 0.25);
  background: rgba(250, 247, 239, 0.7);
  color: var(--paper-ink-soft);
}
.ty-pd-filter .ty-pill.active {
  border-color: var(--ty-accent, #7a5c20);
  background: color-mix(in srgb, var(--ty-accent, #7a5c20) 12%, rgba(250, 247, 239, 0.9));
  color: var(--paper-ink);
}
.ty-pd-group summary { font-family: var(--font-serif); font-weight: 600; }

.ty-tl-wrap { margin-top: 44px; }
.ty-tl { margin-top: 18px; }
.ty-tl-zoom { display: flex; justify-content: center; gap: 8px; margin-bottom: 12px; }
.ty-tl-zoom .ty-pill {
  border-color: rgba(44, 42, 36, 0.25);
  background: rgba(250, 247, 239, 0.7);
  color: var(--paper-ink-soft);
}
.ty-tl-zoom .ty-pill.active {
  border-color: #a3452f;
  background: color-mix(in srgb, #a3452f 10%, rgba(250, 247, 239, 0.9));
  color: var(--paper-ink);
}
.ty-tl-scroll {
  overflow-x: auto;
  border: 1px solid rgba(44, 42, 36, 0.16);
  border-radius: var(--radius-md);
  background: rgba(250, 247, 239, 0.8);
  padding: 6px 0 10px;
}
.ty-tl-canvas { position: relative; min-height: 40px; }
.ty-tl-ruler {
  position: relative;
  height: 26px;
  border-bottom: 1px solid rgba(44, 42, 36, 0.14);
}
.ty-tl-tick {
  position: absolute; top: 4px;
  font-style: normal;
  font-size: 11px; letter-spacing: 0.02em;
  color: var(--paper-ink-soft);
  transform: translateX(-50%);
}
.ty-tl-tick::after {
  content: "";
  position: absolute; left: 50%; bottom: -7px;
  width: 1px; height: 6px;
  background: rgba(44, 42, 36, 0.3);
}
.ty-lane {
  position: relative;
  height: 34px;
  margin: 6px 0;
}
.ty-lane-label {
  position: sticky; left: 4px;
  z-index: 3;
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px;
  margin-top: 3px;
  font-family: var(--font-serif);
  font-size: 13px; font-weight: 700;
  color: #f6f1e5;
  background: var(--ty-accent, #a3452f);
  border-radius: 7px;
  box-shadow: 0 0 0 2px rgba(250, 247, 239, 0.85);
}
.ty-seg {
  position: absolute; top: 2px;
  height: 30px;
  display: flex; align-items: center; justify-content: center;
  padding: 0 4px;
  overflow: hidden;
  white-space: nowrap;
  font-family: var(--font-serif);
  font-size: 12px; font-weight: 600;
  color: var(--paper-ink);
  border: 1px solid color-mix(in srgb, var(--ty-accent, #a3452f) 50%, transparent);
  border-radius: 7px;
  background: color-mix(in srgb, var(--ty-accent, #a3452f) 16%, transparent);
  cursor: pointer;
  transition: filter 0.2s;
}
.ty-seg:hover { filter: brightness(0.94); }
.ty-seg.is-now {
  background: var(--ty-accent, #a3452f);
  color: #f6f1e5;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--ty-accent, #a3452f) 30%, transparent);
  z-index: 2;
}
.ty-lane-marks { height: 24px; }
.ty-mark {
  position: absolute; top: 5px;
  width: 9px; height: 9px;
  transform: translateX(-50%) rotate(45deg);
  border: 1px solid var(--ty-west);
  background: color-mix(in srgb, var(--ty-west) 35%, transparent);
  border-radius: 2px;
  cursor: pointer;
}
.ty-mark:hover { background: var(--ty-west); }
/* life 档星应按年聚合密度柱 */
.ty-mark-agg {
  position: absolute; bottom: 2px;
  width: 5px;
  transform: translateX(-50%);
  border-radius: 3px 3px 0 0;
  background: color-mix(in srgb, var(--ty-west) 55%, transparent);
  cursor: pointer;
  transition: background 0.2s;
}
.ty-mark-agg:hover { background: var(--ty-west); }
/* 年小限 · 年点带（一年一柱，奇偶交替；十二年分轮线） */
.ty-lane-years { height: 26px; }
.ty-yseg {
  position: absolute; top: 3px;
  height: 20px;
  overflow: hidden;
  white-space: nowrap;
  font-size: 10.5px;
  color: var(--paper-ink-soft);
  border: none;
  border-radius: 3px;
  background: color-mix(in srgb, var(--ty-west) 18%, transparent);
  cursor: pointer;
}
.ty-yseg.is-odd { background: color-mix(in srgb, var(--ty-west) 9%, transparent); }
.ty-yseg.is-cycle { box-shadow: inset 2px 0 0 color-mix(in srgb, var(--ty-west) 70%, transparent); }
.ty-yseg.is-now { background: var(--ty-lit); color: var(--ty-lit-ink); font-weight: 700; }
.ty-yseg:hover { filter: brightness(0.92); }
/* 道选器 */
.ty-lane-picker { display: inline-flex; gap: 6px; margin-left: 14px; }
.ty-tl-nowline {
  position: absolute; top: 0; bottom: 0;
  width: 2px;
  background: var(--ty-nowline);
  box-shadow: 0 0 8px color-mix(in srgb, var(--ty-nowline) 55%, transparent);
  z-index: 4;
  pointer-events: none;
}
.ty-tl-nowline em {
  position: absolute; top: 2px; left: 4px;
  font-style: normal;
  font-size: 10.5px; font-family: var(--font-serif); font-weight: 700;
  color: var(--ty-nowline);
  white-space: nowrap;
  padding: 1px 6px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--ty-nowline) 10%, rgba(250, 247, 239, 0.85));
  border: 1px solid color-mix(in srgb, var(--ty-nowline) 35%, transparent);
}

/* ---------- 星应/换限时刻线 ty-line ---------- */
.ty-line { margin-top: 12px; }
.ty-line-group + .ty-line-group { margin-top: 14px; }
.ty-line-year {
  margin: 0 0 6px;
  font-family: var(--font-serif);
  font-size: 14px; font-weight: 700; letter-spacing: 0.08em;
  color: var(--paper-ink);
  font-variant-numeric: tabular-nums;
}
.ty-line-year-now {
  font-style: normal;
  margin-left: 8px;
  padding: 1px 9px;
  border-radius: 999px;
  font-size: 10.5px; font-weight: 400; letter-spacing: 0.06em;
  color: var(--ty-lit-ink);
  background: var(--ty-lit);
}
.ty-line-list {
  list-style: none;
  margin: 0; padding: 0 0 0 6px;
  position: relative;
}
.ty-line-list::before {
  content: "";
  position: absolute; left: 9px; top: 4px; bottom: 4px;
  width: 1px;
  background: color-mix(in srgb, var(--ty-accent, #7a5c20) 28%, transparent);
}
.ty-line-item {
  position: relative;
  display: flex; align-items: baseline; gap: 12px;
  padding: 5px 0 5px 22px;
}
.ty-line-item.is-link { cursor: pointer; border-radius: 8px; }
.ty-line-item.is-link:hover { background: color-mix(in srgb, var(--ty-accent, #7a5c20) 6%, transparent); }
.ty-line-dot {
  position: absolute; left: 0; top: 50%;
  transform: translateY(-50%);
  width: 8px; height: 8px;
  border-radius: 50%;
  border: 1.5px solid color-mix(in srgb, var(--ty-accent, #7a5c20) 55%, transparent);
  background: rgba(250, 247, 239, 0.9);
}
.ty-line-item.is-now .ty-line-dot {
  border-color: var(--gold-600);
  background: var(--ty-lit);
  box-shadow: 0 0 6px rgba(212, 175, 106, 0.55);
}
.ty-line-item.is-past { opacity: 0.62; }
.ty-line-item.is-past .ty-line-dot { border-color: rgba(107, 100, 85, 0.5); background: rgba(107, 100, 85, 0.18); }
.ty-line-date {
  flex-shrink: 0;
  width: 46px;
  font-family: var(--font-serif);
  font-size: 12.5px; font-weight: 600;
  color: var(--paper-ink-soft);
  font-variant-numeric: tabular-nums;
}
.ty-line-card { min-width: 0; font-size: 13px; line-height: 1.75; color: var(--paper-ink); }
.ty-line-card b { font-weight: 600; overflow-wrap: anywhere; }
.ty-line-meta {
  font-style: normal;
  margin-left: 10px;
  font-size: 11px;
  color: var(--paper-ink-soft);
  white-space: nowrap;
}

/* ============================================================
   六之三、千运轮（SVG 径向年轮盘 · 结果区镇场）
   ============================================================ */
.ty-wheel-wrap { margin-top: 12px; }
.ty-wheel {
  width: min(780px, 94vw);
  margin: 0 auto;
}
.ty-wheel svg { width: 100%; height: auto; display: block; }
.ty-wdecade-tick { stroke: rgba(44, 42, 36, 0.42); stroke-width: 1.2; }
/* 年代数字：最外净空带 + 纸色晕圈，从密纹中浮出、一目了然 */
.ty-wdecade {
  font-family: var(--font-serif);
  font-size: 14.5px; font-weight: 600;
  fill: var(--paper-ink);
  stroke: var(--paper-50);
  stroke-width: 4px;
  paint-order: stroke;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.03em;
}
.ty-wbirth {
  font-family: var(--font-serif);
  font-size: 13px;
  fill: var(--paper-ink-soft);
}
.ty-wtrack {
  fill: none;
  stroke: color-mix(in srgb, var(--ty-accent, #a3452f) 4.5%, transparent);
  pointer-events: none;
}
.ty-wseg {
  fill: color-mix(in srgb, var(--ty-accent, #a3452f) 16%, transparent);
  stroke: color-mix(in srgb, var(--ty-accent, #a3452f) 50%, transparent);
  stroke-width: 1;
  cursor: pointer;
  transition: fill 0.25s, opacity 0.35s;
}
.ty-wseg:hover { fill: color-mix(in srgb, var(--ty-accent, #a3452f) 32%, transparent); }
.ty-wseg.is-past {
  fill: color-mix(in srgb, var(--ty-accent, #a3452f) 7%, transparent);
  stroke: color-mix(in srgb, var(--ty-accent, #a3452f) 24%, transparent);
}
.ty-wseg.is-now {
  fill: var(--ty-accent, #a3452f);
  stroke: none;
  filter: drop-shadow(0 0 6px color-mix(in srgb, var(--ty-accent, #a3452f) 55%, transparent));
  animation: tyWheelPulse 2.6s ease-in-out infinite;
}
@keyframes tyWheelPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.8; } }
/* 成盘动效：环组自中心旋出、错峰入位 */
.ty-wring {
  animation: tyWheelIn 1s var(--ease-out) both;
  animation-delay: calc(var(--ty-wi, 0) * 0.11s);
  transform-origin: center;
  transform-box: view-box;
}
@keyframes tyWheelIn {
  from { opacity: 0; transform: rotate(-9deg) scale(0.94); }
  to { opacity: 1; transform: none; }
}
/* roster 行 hover 聚焦：非焦环退隐 */
.ty-wheel svg.has-focus .ty-wring { opacity: 0.2; transition: opacity 0.3s; }
.ty-wheel svg.has-focus .ty-wring.is-focus { opacity: 1; }
.ty-wyear-arc { fill: color-mix(in srgb, var(--ty-west) 20%, transparent); }
.ty-wyear-arc.is-odd { fill: color-mix(in srgb, var(--ty-west) 10%, transparent); }
.ty-wyear-arc.is-now { fill: var(--gold-500); }
.ty-wyears, .ty-wevts, .ty-wdecades {
  animation: tyWheelFade 0.9s var(--ease-out) both;
  animation-delay: 0.85s;
}
@keyframes tyWheelFade { from { opacity: 0; } to { opacity: 1; } }
/* 星应密纹：低权重纹理，不与年份争目 */
.ty-wevt { stroke: color-mix(in srgb, var(--ty-west) 26%, transparent); stroke-width: 0.8; }
.ty-whub-ring {
  fill: none;
  stroke: rgba(150, 114, 58, 0.5);
  stroke-width: 1;
  stroke-dasharray: 2 7;
  animation: tyHubFlow 46s linear infinite;   /* 虚线环缓慢流转，静中有动 */
}
@keyframes tyHubFlow { to { stroke-dashoffset: -630; } }
.ty-whub-wm {
  font-family: var(--font-serif);
  font-size: 92px;
  fill: color-mix(in srgb, var(--paper-ink) 7%, transparent);
}
.ty-whub-date {
  font-size: 12.5px; letter-spacing: 0.14em;
  fill: var(--paper-ink-soft);
  font-variant-numeric: tabular-nums;
}
.ty-whub-main {
  font-family: var(--font-serif);
  font-size: 27px; font-weight: 700; letter-spacing: 0.06em;
  fill: var(--paper-ink);
}
.ty-whub-age { font-size: 12px; fill: var(--paper-ink-soft); }
/* 中宫文字依次浮现 */
.ty-whub text { animation: tyHubUp 0.7s var(--ease-out) both; }
.ty-whub .ty-whub-wm { animation-delay: 0.5s; }
.ty-whub .ty-whub-date { animation-delay: 1.05s; }
.ty-whub .ty-whub-main { animation-delay: 1.2s; }
.ty-whub .ty-whub-age { animation-delay: 1.35s; }
@keyframes tyHubUp {
  from { opacity: 0; transform: translateY(7px); }
  to { opacity: 1; transform: none; }
}
/* 今线：自中宫向外「生长」，顶点随后亮起 */
.ty-wnow line {
  stroke: var(--ty-nowline);
  stroke-width: 2;
  filter: drop-shadow(0 0 5px color-mix(in srgb, var(--ty-nowline) 50%, transparent));
  stroke-dasharray: 300 300;
  animation: tyNowGrow 0.9s var(--ease-out) 1.15s both;
}
@keyframes tyNowGrow { from { stroke-dashoffset: 300; } to { stroke-dashoffset: 0; } }
.ty-wnow-dot {
  fill: var(--ty-nowline);
  animation: tyNowDot 0.5s var(--ease-out) 1.95s both, tyWheelPulse 2.2s ease-in-out 2.5s infinite;
}
@keyframes tyNowDot { from { opacity: 0; } to { opacity: 1; } }

/* ============================================================
   七、AI 详批区
   ============================================================ */
.ty-deep {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(ellipse 80% 100% at 50% 110%, rgba(212, 175, 106, 0.12), transparent 60%),
    linear-gradient(180deg, var(--ink-900), var(--ink-950));
}
.ty-deep-stars { position: absolute; inset: 0; width: 100%; height: 100%; }
.ty-deep-inner { position: relative; max-width: 860px; }
.ty-deep-card {
  border: 1px solid rgba(184, 145, 75, 0.4);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(ellipse 130% 100% at 50% -30%, rgba(212, 175, 106, 0.1), transparent 55%),
    rgba(13, 20, 38, 0.55);
  backdrop-filter: blur(4px);
  padding: 28px 32px 32px;
}
.ty-deep-modes { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 10px; }
.ty-deep-mode {
  text-align: center;
  padding: 16px;
  border: 1px solid rgba(212, 175, 106, 0.28);
  border-radius: var(--radius-md);
  background: rgba(212, 175, 106, 0.05);
  transition: border-color 0.3s, background 0.3s, box-shadow 0.3s, transform 0.3s var(--ease-out);
}
.ty-deep-mode:hover { transform: translateY(-2px); border-color: rgba(212, 175, 106, 0.6); }
.ty-deep-mode b {
  display: block;
  font-family: var(--font-serif);
  font-size: 18px; font-weight: 700;
  letter-spacing: 0.3em; text-indent: 0.3em;
  color: var(--text-hi);
}
.ty-deep-mode i {
  display: block; font-style: normal;
  margin-top: 6px;
  font-size: 12px; letter-spacing: 0.04em;
  line-height: 1.7;
  color: var(--text-low);
}
.ty-deep-mode.active {
  border-color: var(--gold-500);
  background: linear-gradient(135deg, var(--gold-300), var(--gold-500) 60%, var(--gold-600));
  box-shadow: 0 10px 26px rgba(212, 175, 106, 0.28);
}
.ty-deep-mode.active b { color: #241a08; }
.ty-deep-mode.active i { color: rgba(36, 26, 8, 0.65); }
.ty-price-line {
  display: block;
  font-family: var(--font-serif);
  font-size: 17px; letter-spacing: 0.14em;
  color: var(--text-hi);
}
.ty-price-line b { font-size: 1.5em; color: var(--gold-300); padding: 0 4px; }
.ty-price-was {
  display: block;
  margin-top: 6px;
  font-size: 12.5px; letter-spacing: 0.08em;
  color: var(--gold-400);
}
.ty-price-was s { color: var(--text-low); margin: 0 2px; }
.ty-price-sub {
  display: block;
  margin-top: 8px;
  font-size: 12.5px; letter-spacing: 0.06em;
  color: var(--text-low);
}
.ty-price-sub a { color: var(--gold-400); border-bottom: 1px solid rgba(212, 175, 106, 0.4); }
.ty-price-sub b { color: var(--gold-300); }
.ty-deep .ty-flabel { color: var(--gold-400); }
.ty-footer { border-top: 1px solid rgba(212, 175, 106, 0.14); }

/* ============================================================
   八、袖中天覆写
   ============================================================ */
[data-theme="xiu"] {
  --ty-cn: #8a4a3a; --ty-zi: #584a85; --ty-qz: #7d6420; --ty-vedic: #44685a; --ty-west: #6b5d3a;
}
[data-theme="xiu"] .ty-hero {
  background:
    radial-gradient(ellipse 100% 90% at 50% -10%, rgba(127, 111, 174, 0.12), transparent 55%),
    linear-gradient(180deg, var(--paper-100), var(--paper-50) 70%);
}
[data-theme="xiu"] .ty-title {
  background: linear-gradient(168deg, #a493cf 8%, #7f6fae 45%, #584a85 95%);
  -webkit-background-clip: text; background-clip: text;
  filter: drop-shadow(0 6px 30px rgba(127, 111, 174, 0.25));
}
[data-theme="xiu"] .ty-hero::after { background: linear-gradient(180deg, transparent, var(--paper-50)); }
[data-theme="xiu"] .ty-eyebrow { color: #7c6bab; }
[data-theme="xiu"] .ty-sub { color: #5d5478; }
[data-theme="xiu"] .ty-en { color: rgba(51, 44, 77, 0.45); }
[data-theme="xiu"] .rite-tuiyun { color: rgba(127, 111, 174, 0.34); }
[data-theme="xiu"] .rite-tuiyun .ty-dot {
  fill: var(--zi-300);
  stroke: rgba(127, 111, 174, 0.5);
  filter: drop-shadow(0 0 6px rgba(127, 111, 174, 0.8));
}
[data-theme="xiu"] .ty-arts-sec {
  background:
    radial-gradient(ellipse 90% 120% at 50% 120%, rgba(127, 111, 174, 0.1), transparent 55%),
    linear-gradient(180deg, var(--ink-950), var(--ink-900));
}
[data-theme="xiu"] .ty-art b {
  color: var(--zi-300);
  border-color: rgba(179, 165, 214, 0.55);
  background: linear-gradient(160deg, rgba(127, 111, 174, 0.2), rgba(127, 111, 174, 0.06));
}
[data-theme="xiu"] .ty-nav-inner a.active { color: #584a85; border-bottom-color: #584a85; }
[data-theme="xiu"] {
  --ty-lit: linear-gradient(135deg, #b3a5d6, #8f7fbd);
  --ty-lit-ink: #241a3a;
  --ty-nowline: #584a85;
}
[data-theme="xiu"] .ty-nh-cluster {
  color: #4a3d70;
  background: linear-gradient(135deg, rgba(179, 165, 214, 0.5), rgba(143, 127, 189, 0.35));
  border-color: rgba(127, 111, 174, 0.5);
}
[data-theme="xiu"] .ty-tip { border-color: rgba(159, 143, 199, 0.45); }
[data-theme="xiu"] .ty-tip b { color: var(--zi-300, #b3a5d6); }
[data-theme="xiu"] .ty-tip .ty-tip-go { color: var(--zi-400, #9c8cc4); }
[data-theme="xiu"] .ty-band-seg.is-now { box-shadow: 0 6px 16px rgba(127, 111, 174, 0.35); }
[data-theme="xiu"] .ty-bead.is-now { box-shadow: 0 5px 14px rgba(127, 111, 174, 0.3); }
[data-theme="xiu"] .ty-rowcard.is-now {
  border-left-color: #8f7fbd;
  background: linear-gradient(90deg, rgba(143, 127, 189, 0.16), rgba(250, 247, 239, 0.75) 60%);
}
[data-theme="xiu"] .ty-line-item.is-now .ty-line-dot { border-color: #7f6fae; box-shadow: 0 0 6px rgba(127, 111, 174, 0.55); }
[data-theme="xiu"] .ty-wyear-arc.is-now { fill: #8f7fbd; }
[data-theme="xiu"] .ty-whub-ring { stroke: rgba(127, 111, 174, 0.5); }
[data-theme="xiu"] .ty-deep-mode.active {
  border-color: var(--zi-400, #9c8cc4);
  background: linear-gradient(135deg, #b3a5d6, #8f7fbd 60%, #7f6fae);
  box-shadow: 0 10px 26px rgba(127, 111, 174, 0.28);
}
[data-theme="xiu"] .ty-deep-mode.active b { color: #241a3a; }
[data-theme="xiu"] .ty-deep-mode.active i { color: rgba(36, 26, 58, 0.65); }

/* ============================================================
   九、响应式与触屏
   ============================================================ */
@media (max-width: 900px) {
  .rite-tuiyun { width: min(760px, 172vw); bottom: -34%; }
  .ty-arts { grid-template-columns: repeat(4, 1fr); }
  .ty-why-grid { grid-template-columns: 1fr; }
  .ty-minigrid { grid-template-columns: 1fr; }
  .ty-vol-num { font-size: 150px; }
}
@media (max-width: 700px) {
  .ty-roster { grid-template-columns: 1fr; gap: 4px; }
  .ty-next-hero { grid-template-columns: 1fr; }
  .ty-nh { padding: 16px 16px 14px; }
}
@media (max-width: 560px) {
  .rite-tuiyun { width: min(600px, 180vw); bottom: -26%; color: rgba(212, 175, 106, 0.24); }
  .ty-arts { grid-template-columns: repeat(3, 1fr); gap: 10px; }
  .ty-hero { padding-top: calc(var(--nav-h) + 28px); }
  .ty-form, .ty-deep-card { padding: 22px 16px 26px; }
  .ty-frow { flex-direction: column; align-items: flex-start; gap: 8px; }
  .ty-flabel { flex: none; }
  .ty-go { min-width: 0; width: 100%; }
  .ty-deep-modes { grid-template-columns: 1fr; gap: 10px; }
  .ty-panel-head { padding: 14px 16px 12px; }
  .ty-panel-body { padding: 14px 16px 18px; }
  .ty-panel-foot { padding: 9px 16px 12px; }
  .ty-panel-now { margin-left: 0; flex-basis: 100%; order: 5; padding-left: 12px; }
  .ty-golink { margin-left: 0; }
  /* 限带窄屏横滚，当前段居中（JS scrollIntoView） */
  .ty-band { overflow-x: auto; padding-bottom: 6px; scrollbar-width: thin; }
  .ty-band-seg { flex-basis: max(64px, calc(var(--ty-grow, 1) * 1px)); flex-shrink: 0; }
  .ty-beads { grid-template-columns: repeat(auto-fill, minmax(78px, 1fr)); }
  .ty-orbgrid { grid-template-columns: repeat(auto-fill, minmax(74px, 1fr)); }
  .ty-rowcard { flex-wrap: wrap; gap: 3px 12px; }
  .ty-rowcard-meta { margin-left: 0; flex-basis: 100%; }
  .ty-vol-num { font-size: 110px; }
  .ty-vol-toc { justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; padding-bottom: 6px; }
  .ty-toc-chip { flex-shrink: 0; }
  .ty-wheel { width: 96vw; }
  .ty-whub-main { font-size: 28px; }
  .ty-whub-date { font-size: 14px; }
  .ty-nh-date { font-size: 26px; }
}
@media (hover: none), (pointer: coarse) {
  .ty-input, .ty-year { font-size: 16px; }         /* iOS 免聚焦放大 */
  .ty-pill, .ty-dash { padding-top: 12px; padding-bottom: 12px; }
  .ty-step { width: 44px; height: 44px; }
  .ty-nav-inner a { padding-top: 15px; padding-bottom: 15px; }
  .ty-band, .ty-vol-toc, .ty-tl-scroll { -webkit-overflow-scrolling: touch; }
  .ty-band-seg { padding-top: 11px; padding-bottom: 10px; }
  .ty-ros { padding-top: 11px; padding-bottom: 13px; }
  .ty-toc-chip { padding-top: 9px; padding-bottom: 9px; }
}
@media (prefers-reduced-motion: reduce) {
  .rite-tuiyun .ty-orb1, .rite-tuiyun .ty-orb2, .rite-tuiyun .ty-orb3, .rite-tuiyun .ty-glow { animation: none !important; }
  .ty-skel-line { animation: none; }
  .ty-wseg.is-now, .ty-wnow-dot { animation: none; opacity: 1; }
  .ty-wring { animation: none; opacity: 1; }
  .ty-wnow line { animation: none; stroke-dasharray: none; }
  .ty-whub text { animation: none; opacity: 1; transform: none; }
  .ty-whub-ring { animation: none; }
  .ty-wyears, .ty-wevts, .ty-wdecades { animation: none; opacity: 1; }
  .ty-in { animation: none; opacity: 1; transform: none; }
}
