@font-face {
  font-family: "JinKai";
  src: url("/assets/fonts/JinKai-brand.woff2") format("woff2");
  font-display: swap;
}

@font-face {
  font-family: "JetBrains Mono";
  src: url("/assets/fonts/JetBrainsMono.woff2") format("woff2");
  font-display: swap;
}

:root {
  --night: #0b1420;
  --night-soft: #122334;
  --night-line: rgba(197, 218, 226, 0.19);
  --paper: #efede6;
  --paper-high: #f8f6ef;
  --paper-low: #e4e0d5;
  --ink: #17212a;
  --ink-soft: #4c5961;
  --blue: #456d88;
  --blue-light: #9ab4c5;
  --rust: #a34d3f;
  --gold: #c4a36a;
  --line: #c8c4b8;
  /* 与命书页 --display 逐字一致；首选同源 WOFF2，不依赖设备字体。 */
  --serif: "Wenming Serif", "Songti SC", "STSong", serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
  --mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
}

* {
  box-sizing: border-box;
}

[hidden] {
  display: none !important;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  overscroll-behavior-x: none;
}

body {
  margin: 0;
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  overscroll-behavior-x: none;
  touch-action: pan-y;
  color: var(--ink);
  background: var(--paper);
  font-family: var(--sans);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 20;
  pointer-events: none;
  opacity: 0.24;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='190' height='190'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.08'/%3E%3C/svg%3E");
}

/* iOS Safari 在流式更新叠加 fixed + blend-mode 时容易反复重合成整页。 */
body.astro-reading-streaming::before {
  opacity: 0;
  mix-blend-mode: normal;
}

a {
  color: inherit;
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  color: inherit;
}

.sky-noise {
  position: absolute;
  inset: 0 0 auto;
  height: 760px;
  pointer-events: none;
  background:
    radial-gradient(circle at 7% 18%, rgba(207, 222, 229, 0.72) 0 1px, transparent 1.5px),
    radial-gradient(circle at 16% 62%, rgba(207, 222, 229, 0.42) 0 1px, transparent 1.5px),
    radial-gradient(circle at 29% 12%, rgba(207, 222, 229, 0.5) 0 1px, transparent 1.5px),
    radial-gradient(circle at 61% 20%, rgba(207, 222, 229, 0.65) 0 1px, transparent 1.5px),
    radial-gradient(circle at 75% 44%, rgba(207, 222, 229, 0.4) 0 1px, transparent 1.5px),
    radial-gradient(circle at 91% 15%, rgba(207, 222, 229, 0.6) 0 1px, transparent 1.5px),
    linear-gradient(180deg, var(--night) 0%, #101e2d 76%, var(--paper) 100%);
}

.astro-topbar {
  position: relative;
  z-index: 3;
  width: min(1240px, calc(100% - 48px));
  min-height: 92px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  color: #edf1ef;
  border-bottom: 1px solid var(--night-line);
}

.astro-brand {
  justify-self: start;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
}

.astro-brand > span {
  width: 38px;
  height: 38px;
  display: grid;
  place-content: center;
  border: 1px solid rgba(236, 239, 232, 0.72);
  font-family: JinKai, var(--serif);
  font-size: 15px;
  line-height: 0.9;
  text-align: center;
}

.astro-brand b {
  font-family: JinKai, var(--serif);
  font-size: 18px;
  font-weight: 500;
  letter-spacing: 0.17em;
}

.beta-mark {
  justify-self: center;
  display: flex;
  align-items: center;
  gap: 8px;
  color: #b7c7cf;
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.18em;
}

.beta-mark i {
  width: 6px;
  height: 6px;
  background: var(--rust);
  border-radius: 50%;
  box-shadow: 0 0 0 4px rgba(163, 77, 63, 0.18);
}

.session-mark {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 14px;
  color: #aebdc5;
  font-family: var(--sans);
  font-size: 12px;
}

.session-mark a {
  padding-bottom: 3px;
  color: #eef2ef;
  text-decoration: none;
  border-bottom: 1px solid rgba(238, 242, 239, 0.6);
}

main {
  position: relative;
  z-index: 1;
}

.astro-hero {
  position: relative;
  width: min(1180px, calc(100% - 48px));
  min-height: 580px;
  margin: 0 auto;
  padding: 94px 0 120px;
  overflow: hidden;
  overflow: clip;
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(360px, 0.75fr);
  gap: 56px;
  align-items: center;
  color: #eff2ef;
}

.eyebrow,
.form-heading > p,
.result-masthead > div > p,
.reading-invitation > p {
  margin: 0 0 18px;
  color: var(--blue-light);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.hero-copy h1 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(56px, 4.9vw, 72px);
  font-weight: 500;
  line-height: 1.17;
  letter-spacing: -0.045em;
}

.hero-copy h1 > span,
.hero-copy h1 em {
  display: block;
  width: max-content;
  white-space: nowrap;
}

.hero-copy h1 em {
  color: #b8c9d3;
  font-style: normal;
}

.hero-intro {
  max-width: 35em;
  margin: 30px 0 34px;
  color: #bac6cb;
  font-size: 16px;
  line-height: 1.9;
  letter-spacing: 0.045em;
}

.method-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  border-top: 1px solid var(--night-line);
  border-bottom: 1px solid var(--night-line);
}

.method-strip span {
  min-width: 150px;
  padding: 14px 24px 14px 0;
  color: #d6dedf;
  font-family: var(--sans);
  font-size: 12px;
}

.method-strip b {
  margin-right: 8px;
  color: var(--rust);
  font-family: var(--mono);
  font-size: 10px;
}

.hero-orbit {
  position: relative;
  width: min(430px, 39vw);
  aspect-ratio: 1;
  justify-self: end;
  border: 1px solid rgba(181, 204, 214, 0.16);
  border-radius: 50%;
}

.hero-orbit::before,
.hero-orbit::after {
  content: "";
  position: absolute;
  background: rgba(181, 204, 214, 0.13);
}

.hero-orbit::before {
  left: -10%;
  right: -10%;
  top: 50%;
  height: 1px;
}

.hero-orbit::after {
  top: -10%;
  bottom: -10%;
  left: 50%;
  width: 1px;
}

.orbit {
  position: absolute;
  inset: 12%;
  border: 1px solid rgba(181, 204, 214, 0.28);
  border-radius: 50%;
  transform: rotate(-18deg) scaleY(0.46);
}

.orbit-b {
  inset: 23%;
  transform: rotate(58deg) scaleY(0.6);
  border-color: rgba(196, 163, 106, 0.35);
}

.orbit-c {
  inset: 34%;
  transform: none;
  border-style: dashed;
  border-color: rgba(181, 204, 214, 0.2);
}

.orbit i {
  position: absolute;
  top: 50%;
  left: -4px;
  width: 8px;
  height: 8px;
  margin-top: -4px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 18px rgba(196, 163, 106, 0.8);
}

.orbit-b i {
  left: auto;
  right: -3px;
  width: 6px;
  height: 6px;
  background: #b1cbd6;
}

.orbit-axis {
  position: absolute;
  inset: 8%;
  border: 1px dashed rgba(181, 204, 214, 0.12);
  border-radius: 50%;
}

.orbit-sun {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  color: #d6bc87;
  font-size: 58px;
  text-shadow: 0 0 36px rgba(214, 188, 135, 0.3);
}

.hero-orbit small {
  position: absolute;
  right: 11%;
  top: 17%;
  color: rgba(192, 210, 217, 0.6);
  font-family: var(--mono);
  font-size: 9px;
  line-height: 1.6;
  letter-spacing: 0.12em;
}

.birth-observatory {
  position: relative;
  width: min(1180px, calc(100% - 48px));
  margin: -58px auto 100px;
  display: grid;
  grid-template-columns: 310px minmax(0, 1fr);
  background: var(--paper-high);
  border-top: 3px solid var(--rust);
  box-shadow: 0 24px 70px rgba(11, 20, 32, 0.17);
}

.observatory-index {
  padding: 52px 42px;
  color: #dce4e4;
  background: var(--night-soft);
  border-right: 1px solid #26394a;
}

.observatory-index > p {
  margin: 0 0 12px;
  color: var(--gold);
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.18em;
}

.observatory-index h2 {
  margin: 0 0 40px;
  font-size: 27px;
  font-weight: 400;
}

.observatory-index ol {
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--night-line);
}

.observatory-index li {
  list-style: none;
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 10px;
  padding: 16px 0;
  border-bottom: 1px solid var(--night-line);
  font-size: 13px;
}

.observatory-index li i {
  color: #7f9bad;
  font-style: normal;
}

.observatory-index > small {
  display: block;
  margin-top: 42px;
  color: #91a3ac;
  font-family: var(--sans);
  font-size: 11px;
  line-height: 1.8;
}

.astro-form {
  padding: 52px clamp(36px, 6vw, 78px) 56px;
}

.form-heading {
  margin-bottom: 36px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--line);
}

.form-heading > p {
  margin-bottom: 10px;
  color: var(--blue);
}

.form-heading h2 {
  margin: 0 0 10px;
  font-family: var(--serif);
  font-size: clamp(32px, 4vw, 48px);
  font-weight: 500;
  letter-spacing: -0.035em;
}

.form-heading > span {
  color: var(--ink-soft);
  font-size: 13px;
}

.field-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: 22px;
  margin-bottom: 24px;
}

.field-row-time {
  grid-template-columns: 1fr 1fr;
}

.astro-form label > span {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 9px;
  font-size: 14px;
  font-weight: 600;
}

.astro-form label > span i {
  color: #8d918d;
  font-family: var(--sans);
  font-size: 10px;
  font-style: normal;
  font-weight: 400;
}

.astro-form input:not([type="checkbox"]):not([type="radio"]),
.astro-form select,
.astro-form textarea {
  width: 100%;
  min-height: 50px;
  padding: 12px 2px;
  color: var(--ink);
  background: transparent;
  border: 0;
  border-bottom: 1px solid #9da19e;
  border-radius: 0;
  outline: none;
  transition: border-color 150ms ease, box-shadow 150ms ease;
}

.astro-form textarea {
  min-height: 88px;
  line-height: 1.7;
  resize: vertical;
}

.astro-form input:focus,
.astro-form select:focus,
.astro-form textarea:focus {
  border-color: var(--blue);
  box-shadow: 0 1px 0 var(--blue);
}

.astro-form input::placeholder,
.astro-form textarea::placeholder {
  color: #9a9d99;
}

.place-field {
  position: relative;
}

.place-field > small {
  display: block;
  margin-top: 8px;
  color: #7b807d;
  font-family: var(--sans);
  font-size: 10px;
}

.unknown-time {
  display: flex;
  gap: 12px;
  margin: -4px 0 28px;
  padding: 13px 0;
  cursor: pointer;
  border-bottom: 1px solid #d7d3c8;
}

.unknown-time input {
  width: 17px;
  height: 17px;
  margin: 2px 0 0;
  accent-color: var(--blue);
}

.unknown-time > span {
  display: block !important;
  margin: 0 !important;
}

.unknown-time b {
  display: block;
  margin-bottom: 4px;
  font-size: 13px;
}

.unknown-time small {
  display: block;
  color: #777d7b;
  font-family: var(--sans);
  font-size: 10px;
  font-weight: 400;
  line-height: 1.6;
}

.astro-form.is-unknown #birth-time-field {
  opacity: 0.36;
}

.city-sug {
  position: absolute;
  z-index: 12;
  left: 0;
  right: 0;
  top: calc(100% - 2px);
  padding: 8px;
  max-height: 190px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background: var(--paper-high);
  border: 1px solid var(--line);
  box-shadow: 0 16px 30px rgba(23, 33, 42, 0.14);
}

.city-sug-item {
  width: 100%;
  padding: 9px 11px;
  text-align: left;
  background: transparent;
  border: 0;
  cursor: pointer;
}

.city-sug-item:hover {
  color: #fff;
  background: var(--blue);
}

.dst-choice {
  margin: 0 0 26px;
  padding: 18px 20px;
  background: #e8e4d8;
  border-left: 3px solid var(--gold);
}

.dst-choice > b {
  font-size: 14px;
}

.dst-choice > p {
  margin: 6px 0 12px;
  color: var(--ink-soft);
  font-size: 12px;
}

#dst-options {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

#dst-options button {
  padding: 9px 13px;
  background: transparent;
  border: 1px solid #93978f;
  cursor: pointer;
}

#dst-options button:hover,
#dst-options button.is-selected {
  color: #fff;
  background: var(--blue);
  border-color: var(--blue);
}

.form-error {
  margin: 0 0 18px;
  padding: 12px 15px;
  color: #733b33;
  background: #eadbd4;
  border-left: 3px solid var(--rust);
  font-family: var(--sans);
  font-size: 12px;
  line-height: 1.6;
}

.field-error {
  display: block;
  margin-top: 7px;
  color: #733b33;
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.55;
}

.field-error[hidden] { display: none !important; }
.astro-form input[aria-invalid="true"]:not([type="radio"]),
.astro-form select[aria-invalid="true"],
.astro-form textarea[aria-invalid="true"] {
  border-bottom: 2px solid var(--rust);
  box-shadow: none;
}

.time-precision.has-error .precision-options {
  outline: 2px solid var(--rust);
  outline-offset: 3px;
}

.astro-form input:focus-visible,
.astro-form select:focus-visible,
.astro-form textarea:focus-visible,
.astro-form button:focus-visible,
#dst-options button:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 3px;
}

.form-error:focus-visible {
  outline: 2px solid var(--rust);
  outline-offset: 3px;
}

.chart-submit {
  width: 100%;
  min-height: 58px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 24px;
  color: #f4f3ed;
  background: var(--night-soft);
  border: 0;
  cursor: pointer;
  transition: background 160ms ease, transform 160ms ease;
}

.chart-submit:disabled {
  cursor: wait;
  opacity: 0.62;
}

.chart-submit span {
  font-size: 15px;
  letter-spacing: 0.08em;
}

.chart-submit i {
  font-size: 22px;
  font-style: normal;
}

.form-fineprint {
  margin: 12px 0 0;
  color: #858983;
  font-family: var(--sans);
  font-size: 10px;
  text-align: center;
}

.chart-loading {
  width: min(1180px, calc(100% - 48px));
  min-height: 360px;
  margin: 0 auto 100px;
  display: grid;
  place-content: center;
  text-align: center;
}

.loading-orbit {
  position: relative;
  width: 104px;
  height: 104px;
  margin: 0 auto 24px;
  border: 1px solid #aeb6b5;
  border-radius: 50%;
}

.loading-orbit::before {
  content: "";
  position: absolute;
  inset: 18px;
  border: 1px dashed #aeb6b5;
  border-radius: 50%;
}

.loading-orbit i {
  position: absolute;
  left: 50%;
  top: -4px;
  width: 8px;
  height: 8px;
  margin-left: -4px;
  background: var(--rust);
  border-radius: 50%;
  transform-origin: 4px 56px;
  animation: loading-spin 1.7s linear infinite;
}

.loading-orbit b {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  color: var(--gold);
  font-size: 30px;
  font-weight: 400;
}

@keyframes loading-spin {
  to { transform: rotate(360deg); }
}

.chart-loading p {
  margin: 0 0 7px;
  font-size: 19px;
}

.chart-loading small {
  color: var(--ink-soft);
  font-family: var(--sans);
  font-size: 11px;
}


/* ============================================================
   结果区 · 暗室星图
   ============================================================ */

.astro-result {
  width: min(1180px, calc(100% - 48px));
  margin: 0 auto 80px;
  animation: atlas-rise 480ms cubic-bezier(.2, .75, .25, 1) both;
}

@keyframes atlas-rise {
  from { opacity: 0; transform: translateY(22px); }
  to { opacity: 1; transform: none; }
}

/* ---- 通用：全宽伪元素背景 ---- */
.result-masthead,
.chart-spread,
.ledger-section,
.aspect-section,
.domain-section,
.full-reading,
.astro-followup {
  position: relative;
  isolation: isolate;
}

.result-masthead::before,
.chart-spread::before,
.ledger-section::before,
.aspect-section::before,
.domain-section::before,
.full-reading::before,
.astro-followup::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100vw;
  z-index: -1;
}

.result-masthead::before,
.chart-spread::before,
.aspect-section::before,
.full-reading::before,
.astro-followup::before {
  background: var(--night);
}

.ledger-section::before,
.domain-section::before {
  background: var(--paper);
}

/* ---- 01 签名标头 ---- */
.result-masthead {
  padding: 80px 48px 50px;
}

.result-masthead > div > p {
  margin: 0 0 16px;
  color: var(--gold);
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.result-masthead h2 {
  margin: 0 0 14px;
  font-family: var(--serif);
  font-size: clamp(40px, 5vw, 68px);
  font-weight: 500;
  line-height: 1.12;
  letter-spacing: -0.03em;
  color: #f4f7f5;
}

.result-masthead span {
  color: rgba(180, 195, 200, 0.55);
  font-size: 12.5px;
  letter-spacing: 0.02em;
}

.result-masthead button {
  flex: none;
  padding: 8px 0;
  color: rgba(180, 195, 200, 0.55);
  background: transparent;
  border: 0;
  border-bottom: 1px solid rgba(180, 195, 200, 0.25);
  cursor: pointer;
  font-size: 12px;
  letter-spacing: 0.06em;
  transition: color 200ms ease, border-color 200ms ease;
}

.result-masthead button:hover {
  color: var(--gold);
  border-color: var(--gold);
}

.masthead-actions { display: flex; align-items: center; gap: 18px; }

#share-card {
  font-size: 12px;
  color: var(--gold);
  text-decoration: none;
  letter-spacing: 0.06em;
  border-bottom: 1px dashed rgba(196, 163, 106, 0.40);
  padding-bottom: 2px;
  transition: color 200ms ease;
}

#share-card:hover { color: #e0c993; border-bottom-style: solid; }

/* ---- 02 盘轮 + 骨架（两列） ---- */
.chart-spread {
  display: grid;
  grid-template-columns: minmax(400px, 1fr) minmax(0, 1fr);
  padding: 20px 0 100px;
  color: #e8eeec;
}

.wheel-sheet {
  min-width: 0;
  margin: 0;
  padding: 0 48px 40px 0;
  border-right: 1px solid rgba(180, 195, 200, 0.08);
}

.chart-wheel {
  width: 100%;
  max-width: 520px;
  margin: 0 auto;
}

.chart-wheel svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
  border-radius: 50%;
  box-shadow:
    0 32px 90px rgba(0, 0, 0, 0.55),
    0 0 0 1px rgba(196, 163, 106, 0.18),
    0 0 100px rgba(196, 163, 106, 0.05);
}

.wheel-sheet figcaption {
  margin: 28px auto 0;
  color: rgba(180, 195, 200, 0.38);
  font-family: var(--sans);
  font-size: 10px;
  line-height: 1.7;
  text-align: center;
  letter-spacing: 0.08em;
}

/* ---- 轮盘交互：点击行星 / 相位 ---- */
.wheel-planet, .wheel-aspect { cursor: pointer; }
.wheel-planet, .wheel-aspect .wa-line { transition: opacity 200ms ease; }

.wheel-aspect:hover .wa-line { opacity: 0.95; stroke-width: 1.6; }
.wheel-planet:hover circle { stroke: #8a6d34; stroke-width: 1.4; }

.chart-wheel.is-dim .wheel-planet:not(.is-active) { opacity: 0.18; }
.chart-wheel.is-dim .wheel-aspect:not(.is-active) .wa-line { opacity: 0.07; }

.wheel-aspect.is-active .wa-line { opacity: 1; stroke-width: 1.8; }
.wheel-planet.is-active circle { stroke: #8a6d34; stroke-width: 1.6; }

.wheel-detail {
  position: relative;
  max-width: 520px;
  margin: 20px auto 0;
  padding: 18px 22px 16px;
  border: 1px solid rgba(156, 128, 81, 0.35);
  border-radius: 12px;
  background: #f3f0e8;
  color: #17212a;
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.35);
}

.wheel-detail .wd-close {
  position: absolute;
  top: 8px;
  right: 12px;
  border: 0;
  background: none;
  font-size: 18px;
  line-height: 1;
  color: #74838a;
  cursor: pointer;
  padding: 4px;
}
.wheel-detail .wd-close:hover { color: #17212a; }

.wheel-detail .wd-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding-right: 24px;
}
.wheel-detail .wd-head b { font-size: 16px; font-weight: 600; letter-spacing: 0.04em; }
.wheel-detail .wd-head > span { font-size: 11px; color: #74838a; }

.wheel-detail .wd-line {
  margin: 10px 0 0;
  font-size: 12.5px;
  line-height: 1.8;
  color: #34434d;
}
.wheel-detail .wd-line .mono {
  font-family: var(--mono);
  font-size: 11px;
  color: #8b7770;
}

.wheel-detail .wd-aspects { margin-top: 12px; }
.wheel-detail .wd-aspects > span {
  display: block;
  font-size: 10px;
  letter-spacing: 0.14em;
  color: #74838a;
  margin-bottom: 6px;
}
.wheel-detail .wd-aspects > div { display: flex; flex-wrap: wrap; gap: 6px; }
.wheel-detail .wd-aspect {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  border: 1px solid rgba(116, 131, 138, 0.30);
  border-radius: 999px;
  padding: 2px 10px;
  font-size: 11.5px;
}
.wheel-detail .wd-aspect i { font-style: normal; color: #456d88; }
.wheel-detail .wd-aspect b { font-weight: 500; }
.wheel-detail .wd-aspect em {
  font-style: normal;
  font-family: var(--mono);
  font-size: 9.5px;
  color: #9a9d99;
}

.wheel-detail .wd-ask { margin-top: 14px; }

.wheel-detail .state-chip { cursor: help; }

.brief-sheet {
  padding: 0 0 0 48px;
}

/* 昼盘 / 夜盘提示条 */
.sect-strip {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin-bottom: 22px;
  padding: 12px 16px;
  border: 1px solid rgba(156, 128, 81, 0.28);
  border-radius: 10px;
  background: rgba(156, 128, 81, 0.08);
}

.sect-strip .sect-type {
  flex: none;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.2em;
  color: var(--gold);
  border: 1px solid rgba(156, 128, 81, 0.45);
  border-radius: 999px;
  padding: 3px 10px;
}

.sect-strip p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.8;
  color: rgba(180, 195, 200, 0.72);
}

.sect-strip p b {
  color: rgba(244, 247, 245, 0.88);
  font-weight: 500;
}

.sect-strip p i {
  font-style: normal;
  color: rgba(180, 195, 200, 0.45);
  font-size: 11px;
  margin: 0 2px;
}

/* section-label 在暗底上 */
.chart-spread .section-label,
.aspect-section .section-label {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin-bottom: 28px;
}

.chart-spread .section-label span,
.aspect-section .section-label span {
  color: var(--gold);
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.16em;
}

.chart-spread .section-label b,
.aspect-section .section-label b {
  font-size: 18px;
  font-weight: 500;
  letter-spacing: 0.1em;
  color: rgba(244, 247, 245, 0.85);
}

.chart-spread .section-label i,
.aspect-section .section-label i {
  margin-left: auto;
  color: rgba(180, 195, 200, 0.35);
  font-family: var(--sans);
  font-size: 10px;
  font-style: normal;
}

.chart-highlights {
  border-top: 1px solid rgba(180, 195, 200, 0.08);
}

.highlight-item {
  display: grid;
  grid-template-columns: minmax(110px, 0.28fr) 1fr;
  gap: 26px;
  padding: 22px 0;
  border-bottom: 1px solid rgba(180, 195, 200, 0.08);
}

.highlight-item h3 {
  margin: 0;
  font-size: 14px;
  font-weight: 500;
  color: rgba(244, 247, 245, 0.80);
  letter-spacing: 0.04em;
}

.highlight-item p {
  margin: 0 0 6px;
  color: rgba(180, 195, 200, 0.60);
  font-size: 14px;
  line-height: 1.85;
}

.highlight-item small {
  color: rgba(180, 195, 200, 0.35);
  font-family: var(--sans);
  font-size: 9.5px;
  letter-spacing: 0.04em;
}

.element-balance {
  margin-top: 32px;
  display: grid;
  gap: 12px;
}

.balance-row {
  display: grid;
  grid-template-columns: 28px 1fr 22px;
  gap: 12px;
  align-items: center;
  color: rgba(180, 195, 200, 0.45);
  font-family: var(--sans);
  font-size: 10px;
}

.balance-row i {
  height: 2px;
  background: rgba(180, 195, 200, 0.08);
  border-radius: 1px;
}

.balance-row i b {
  display: block;
  height: 100%;
  background: rgba(154, 180, 197, 0.55);
  border-radius: 1px;
}

/* ---- 03 行星落点（纸色底） ---- */
.ledger-section {
  padding: 100px 48px;
  color: var(--ink);
}

.ledger-section .section-label {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin-bottom: 28px;
}

.ledger-section .section-label span { color: var(--rust); }
.ledger-section .section-label b { font-size: 18px; font-weight: 500; letter-spacing: 0.1em; color: var(--ink); }
.ledger-section .section-label i { margin-left: auto; color: #828782; font-family: var(--sans); font-size: 10px; font-style: normal; }

.planet-ledger {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.ledger-note {
  font-size: 12px;
  color: var(--ink-soft);
  font-family: var(--sans);
  margin: 0 0 24px;
}

.ledger-outer { margin-top: 20px; }

.planet-row {
  display: grid;
  grid-template-columns: 40px 1.2fr 1.3fr 1.4fr auto;
  align-items: baseline;
  gap: 16px;
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
  transition: padding-left 200ms ease;
}

.planet-row:hover { padding-left: 8px; }

.planet-row > i {
  font-size: 20px;
  color: var(--blue);
  font-style: normal;
  font-family: var(--serif);
  text-align: center;
}

.planet-row:nth-child(-n+3) { padding-top: 18px; padding-bottom: 18px; }
.planet-row:nth-child(-n+3) > i { font-size: 24px; color: #8a6d34; }
.planet-row:nth-child(-n+3) .pr-who h3 { font-size: 17px; letter-spacing: 0.06em; }

.pr-who h3 { margin: 0; font-size: 15px; font-weight: 500; color: var(--ink); letter-spacing: 0.04em; }
.pr-who span, .pr-where span, .pr-house span {
  display: block;
  font-size: 11px;
  color: var(--ink-soft);
  font-family: var(--sans);
  margin-top: 2px;
}
.pr-where b, .pr-house b { font-size: 13.5px; font-weight: 500; color: var(--ink); }
.pr-meta { display: flex; align-items: center; gap: 8px; justify-self: end; }
.pr-meta .mono { font-family: var(--mono); font-size: 11px; color: #9a9d99; }

.retro-chip {
  font-style: normal;
  font-size: 10px;
  color: var(--rust);
  border: 1px solid rgba(163, 77, 63, 0.30);
  border-radius: 999px;
  padding: 0 7px;
  line-height: 1.7;
}

/* 行星状态徽章：庙旺陷落 / 喜宫 / 与太阳关系 */
.state-chip {
  font-style: normal;
  font-size: 10px;
  font-family: var(--sans);
  border-radius: 999px;
  padding: 0 7px;
  line-height: 1.7;
  white-space: nowrap;
  cursor: help;
}

.state-chip.sc-good {
  color: #4a7a5c;
  border: 1px solid rgba(74, 122, 92, 0.35);
  background: rgba(74, 122, 92, 0.06);
}

.state-chip.sc-low {
  color: var(--rust);
  border: 1px solid rgba(163, 77, 63, 0.35);
  background: rgba(163, 77, 63, 0.06);
}

.state-chip.sc-mid {
  color: #8a6d34;
  border: 1px solid rgba(138, 109, 52, 0.35);
  background: rgba(138, 109, 52, 0.06);
}

.pr-meta { flex-wrap: wrap; justify-content: flex-end; row-gap: 4px; }

.planet-row .retrograde { color: var(--rust); }

/* ---- 04 主要相位（暗色底） ---- */
.aspect-section {
  padding: 100px 48px;
  color: #e8eeec;
}

.aspect-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 20px;
}

.aspect-card {
  padding: 20px 0 16px;
  border-bottom: 1px solid rgba(180, 195, 200, 0.08);
  transition: padding-left 200ms ease, border-color 200ms ease;
}

.aspect-card:hover { padding-left: 8px; border-bottom-color: rgba(196, 163, 106, 0.20); }

.ac-pair {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.ac-pair > span { font-size: 14px; color: rgba(244, 247, 245, 0.85); letter-spacing: 0.04em; }
.ac-pair > span em {
  display: block;
  font-style: normal;
  font-size: 10px;
  color: rgba(180, 195, 200, 0.40);
  font-family: var(--sans);
  margin-top: 2px;
}
.ac-pair > span:last-of-type { text-align: right; }

.ac-link {
  flex: 1;
  text-align: center;
  font-style: normal;
  font-size: 13px;
  position: relative;
  color: rgba(154, 180, 197, 0.55);
}
.ac-link::before, .ac-link::after {
  content: "";
  position: absolute;
  top: 50%;
  width: calc(50% - 20px);
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(154, 180, 197, 0.30));
}
.ac-link::before { left: 0; }
.ac-link::after { right: 0; transform: scaleX(-1); }

.t-tension .ac-link { color: rgba(163, 77, 63, 0.50); }
.t-tension .ac-link::before, .t-tension .ac-link::after {
  background: linear-gradient(90deg, transparent, rgba(163, 77, 63, 0.30));
}
.t-focus .ac-link { color: rgba(196, 163, 106, 0.50); }
.t-focus .ac-link::before, .t-focus .ac-link::after {
  background: linear-gradient(90deg, transparent, rgba(196, 163, 106, 0.30));
}

.aspect-card p {
  margin: 0 0 10px;
  font-size: 12.5px;
  color: rgba(180, 195, 200, 0.50);
  font-family: var(--sans);
  line-height: 1.7;
}

.ac-meter { display: flex; align-items: center; gap: 8px; }
.ac-meter > span { font-size: 10px; color: rgba(180, 195, 200, 0.30); font-family: var(--sans); white-space: nowrap; }
.ac-meter i { flex: 1; height: 2px; border-radius: 1px; background: rgba(180, 195, 200, 0.08); overflow: hidden; display: block; }
.ac-meter b { display: block; height: 100%; border-radius: 1px; background: rgba(154, 180, 197, 0.45); }
.t-tension .ac-meter b { background: rgba(163, 77, 63, 0.45); }
.t-focus .ac-meter b { background: rgba(196, 163, 106, 0.45); }
.ac-meter .mono { font-family: var(--mono); }

.aspect-more { margin-top: 14px; }
.aspect-more summary {
  cursor: pointer;
  font-size: 12px;
  color: rgba(180, 195, 200, 0.40);
  font-family: var(--sans);
  padding: 6px 0;
  list-style-position: inside;
}
.aspect-more[open] summary { margin-bottom: 12px; }

/* ---- 05 领域地图（纸色底） ---- */
.domain-section {
  padding: 100px 48px;
  color: var(--ink);
}

.domain-section .section-label {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin-bottom: 28px;
}

.domain-section .section-label span { color: var(--rust); }
.domain-section .section-label b { font-size: 18px; font-weight: 500; letter-spacing: 0.1em; color: var(--ink); }
.domain-section .section-label i { margin-left: auto; color: #828782; font-family: var(--sans); font-size: 10px; font-style: normal; }

.domain-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  margin-bottom: 40px;
  border-bottom: 1px solid var(--line);
}

.domain-tab {
  flex: 1 1 0;
  min-width: 120px;
  border: none;
  background: transparent;
  padding: 14px 8px 12px;
  text-align: center;
  cursor: pointer;
  transition: background 0.2s;
  position: relative;
}

.domain-tab::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 20%;
  right: 20%;
  height: 1px;
  background: transparent;
  transition: background 0.2s;
}

.domain-tab:last-child { border-right: none; }

.domain-tab b {
  display: block;
  font-family: var(--serif);
  font-size: 14px;
  letter-spacing: 0.12em;
  color: var(--ink-soft);
  font-weight: 500;
  white-space: nowrap;
}

.domain-tab span {
  display: block;
  margin-top: 4px;
  font-size: 10px;
  letter-spacing: 0.04em;
  color: #a8b0ab;
  font-family: var(--sans);
  white-space: nowrap;
}

.domain-tab:hover b { color: var(--ink); }
.domain-tab:hover::after { background: var(--line); }

.domain-tab.active b { color: #8a6d34; }
.domain-tab.active span { color: rgba(138, 109, 52, 0.50); }
.domain-tab.active::after { background: #8a6d34; }

.domain-card {
  padding: 0 0 8px;
}

.domain-flow {
  display: flex;
  align-items: center;
  gap: clamp(16px, 3vw, 34px);
  flex-wrap: wrap;
  padding-bottom: 24px;
  margin-bottom: 24px;
  border-bottom: 1px solid var(--line);
}

.flow-node span {
  display: block;
  font-size: 10px;
  letter-spacing: 0.2em;
  color: #8a6d34;
  font-family: var(--sans);
  margin-bottom: 6px;
}

.flow-node b {
  font-family: var(--serif);
  font-size: clamp(18px, 2vw, 22px);
  color: var(--ink);
  font-weight: 500;
  letter-spacing: 0.04em;
}

.flow-node small {
  display: block;
  margin-top: 5px;
  font-size: 11.5px;
  color: var(--ink-soft);
  font-family: var(--sans);
}

.flow-arrow {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  color: var(--blue);
  font-size: 18px;
}

.flow-arrow i {
  font-style: normal;
  font-size: 10.5px;
  letter-spacing: 0.08em;
  color: var(--blue);
  font-family: var(--sans);
  white-space: nowrap;
}

.domain-read {
  margin: 0 0 20px;
  font-size: 14px;
  line-height: 1.95;
  color: #3d4a52;
  max-width: 64ch;
}

/* 领域地图 · LLM 定制细看（星盘书展开后回填） */
.domain-custom {
  margin: -8px 0 22px;
  padding: 14px 18px;
  border-left: 3px solid rgba(138, 109, 52, 0.45);
  border-radius: 0 10px 10px 0;
  background: rgba(156, 128, 81, 0.07);
  font-size: 13.5px;
  line-height: 1.95;
  color: #34434d;
  max-width: 64ch;
}

.domain-custom > span {
  display: block;
  margin-bottom: 4px;
  font-size: 10px;
  letter-spacing: 0.18em;
  color: #8a6d34;
}

.domain-tenants {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 24px;
}

.domain-tenants > span {
  font-size: 10px;
  letter-spacing: 0.16em;
  color: #8a6d34;
  font-family: var(--sans);
}

.tenant {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  padding: 3px 10px;
  background: var(--paper-high);
  border-radius: 4px;
}

.tenant b { font-size: 13px; font-weight: 500; color: var(--ink); }

.tenant em {
  font-style: normal;
  font-size: 10.5px;
  color: var(--ink-soft);
  font-family: var(--sans);
}

.tenant i {
  font-style: normal;
  font-size: 9px;
  color: var(--rust);
  vertical-align: super;
  margin-left: 1px;
}

.tenant-empty {
  background: transparent;
  padding: 0;
  color: var(--ink-soft);
  font-size: 12.5px;
}

.domain-ask {
  border: 1px solid var(--blue);
  background: transparent;
  color: var(--blue);
  border-radius: 6px;
  padding: 7px 18px;
  font-size: 12.5px;
  letter-spacing: 0.05em;
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
}

.domain-ask:hover { background: var(--blue); color: var(--paper-high); }

/* ---- 06 完整解读 ---- */
.full-reading {
  color: #e8eeec;
}

.reading-invitation {
  padding: 80px 0 60px;
  max-width: 680px;
}

.reading-invitation > p {
  margin: 0 0 16px;
  color: var(--gold);
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.reading-invitation h2 {
  margin: 0 0 18px;
  font-family: var(--serif);
  font-size: clamp(30px, 3.5vw, 44px);
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: -0.02em;
  color: #f4f7f5;
}

.reading-invitation > span {
  display: block;
  max-width: 44em;
  color: rgba(180, 195, 200, 0.55);
  font-size: 14px;
  line-height: 1.85;
  margin-bottom: 28px;
}

.reading-invitation ul {
  margin: 0 0 32px;
  padding: 0;
}

.reading-invitation li {
  list-style: none;
  padding: 8px 0;
  color: rgba(180, 195, 200, 0.45);
  font-family: var(--sans);
  font-size: 11px;
}

.reading-invitation li::before {
  content: "—";
  margin-right: 10px;
  color: rgba(196, 163, 106, 0.40);
}

#reading-start {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 14px 28px;
  color: var(--night);
  background: rgba(233, 229, 216, 0.90);
  border: 0;
  cursor: pointer;
  border-radius: 8px;
  font-size: 14px;
  letter-spacing: 0.08em;
  transition: background 200ms ease, transform 160ms ease;
}

#reading-start:hover { background: #fffdf5; }
#reading-start:active { transform: translateY(1px); }

#reading-start:disabled { cursor: wait; opacity: 0.6; }

#reading-start b {
  color: var(--rust);
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 500;
}

#reading-balance {
  display: block;
  margin-top: 14px;
  color: rgba(132, 153, 164, 0.45);
  font-family: var(--sans);
  font-size: 10px;
}

.reading-gate {
  margin: 0 0 40px;
  padding: 24px 28px;
  background: rgba(7, 13, 21, 0.60);
  border-left: 2px solid rgba(163, 77, 63, 0.45);
  border-radius: 0 10px 10px 0;
}

.reading-gate h3 {
  margin: 0 0 8px;
  font-size: 16px;
  color: rgba(244, 247, 245, 0.80);
  font-weight: 500;
}

.reading-gate p {
  margin: 0 0 16px;
  color: rgba(180, 195, 200, 0.45);
  font-size: 12px;
  line-height: 1.7;
}

.reading-gate div {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.reading-gate a,
.reading-gate button {
  padding: 9px 16px;
  color: rgba(228, 234, 232, 0.65);
  background: transparent;
  border: 1px solid rgba(180, 195, 200, 0.15);
  text-decoration: none;
  cursor: pointer;
  border-radius: 6px;
  font-size: 12px;
  transition: border-color 200ms ease, color 200ms ease;
}

.reading-gate a:hover,
.reading-gate button:hover {
  border-color: rgba(196, 163, 106, 0.35);
  color: rgba(196, 163, 106, 0.80);
}

.reading-progress {
  min-height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 13px;
  color: rgba(180, 195, 200, 0.40);
  border-top: 1px solid rgba(180, 195, 200, 0.08);
}

.reading-progress i {
  width: 6px;
  height: 6px;
  background: rgba(196, 163, 106, 0.50);
  border-radius: 50%;
  animation: pulse 1.2s ease-in-out infinite alternate;
}

@keyframes pulse {
  to { transform: scale(1.7); opacity: 0.35; }
}

/* 解读正文：纸色 */
.reading-body {
  padding: 64px clamp(28px, 6vw, 80px) 72px;
  color: var(--ink);
  background: var(--paper-high);
}

.reading-body.is-streaming {
  min-height: 320px;
}

.reading-stream-sections:empty {
  display: none;
}

.reading-stream-status {
  min-height: 190px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  color: var(--ink-soft);
  text-align: left;
}

.reading-stream-sections:not(:empty) + .reading-stream-status {
  min-height: 116px;
  margin-top: -22px;
  justify-content: flex-start;
  border-top: 1px solid rgba(200, 196, 184, 0.62);
}

.reading-stream-status > i {
  width: 8px;
  height: 8px;
  flex: 0 0 8px;
  border-radius: 50%;
  background: rgba(69, 109, 136, 0.58);
  box-shadow: 0 0 0 6px rgba(69, 109, 136, 0.08);
  animation: stream-caret 900ms ease-in-out infinite alternate;
}

.reading-stream-status span,
.reading-stream-status small {
  display: block;
}

.reading-stream-status span {
  color: var(--ink);
  font-family: var(--serif);
  font-size: 18px;
  letter-spacing: 0.04em;
}

.reading-stream-status small {
  margin-top: 5px;
  color: rgba(76, 89, 97, 0.64);
  font-family: var(--sans);
  font-size: 13px;
  line-height: 1.6;
}

@keyframes stream-caret {
  to { opacity: 0.2; }
}

.reading-body > p:first-child {
  margin-top: 0;
  font-size: 17px;
  line-height: 2;
  color: rgba(23, 33, 42, 0.85);
}

.reading-body h3 {
  margin: 56px 0 20px;
  padding: 0 0 10px;
  color: var(--ink);
  font-size: 22px;
  font-weight: 500;
  border-bottom: 1px solid var(--line);
  font-family: var(--serif);
  letter-spacing: 0.04em;
}

.reading-body h4 {
  margin: 32px 0 12px;
  font-size: 16px;
  font-weight: 500;
  color: rgba(23, 33, 42, 0.80);
}

.reading-body p,
.reading-body li {
  font-size: 15px;
  line-height: 2;
  color: rgba(23, 33, 42, 0.72);
}

.reading-body strong {
  color: #1a3a52;
  font-weight: 600;
}

.reading-body ul,
.reading-body ol {
  padding-left: 1.5em;
}

.reading-saved {
  padding: 16px clamp(28px, 6vw, 80px);
  color: rgba(180, 195, 200, 0.45);
  background: rgba(14, 27, 40, 0.90);
  font-family: var(--sans);
  font-size: 11px;
  text-align: right;
}

.reading-saved a {
  margin-left: 8px;
  color: rgba(196, 163, 106, 0.60);
  text-decoration: none;
  border-bottom: 1px dashed rgba(196, 163, 106, 0.25);
}

.reading-saved a:hover { color: var(--gold); border-bottom-style: solid; }

/* ---- 卡片式解读正文 ---- */
.rcard-group { margin: 0 0 56px; }

.rcard-group h3 {
  font-family: var(--serif);
  font-size: 18px;
  letter-spacing: 0.12em;
  color: var(--ink);
  margin: 0 0 24px;
  padding: 0;
  border: 0;
  display: flex;
  align-items: baseline;
  gap: 12px;
  font-weight: 500;
}

.rcard-group h3::before { content: "✶"; font-size: 11px; color: #8a6d34; }

.rcard-group h3 i {
  font-style: normal;
  font-size: 11.5px;
  font-family: var(--sans);
  letter-spacing: 0.04em;
  color: #9aa39f;
  font-weight: 400;
}

.card-dep {
  display: block;
  margin-top: 8px;
  font-size: 11.5px;
  letter-spacing: 0.02em;
  color: #a8b0ab;
  font-family: var(--sans);
}

/* 底色：塔罗牌发光 */
.base-wrap { display: flex; gap: 38px; align-items: flex-start; }

.archetype-card {
  flex: 0 0 150px;
  margin: 6px 0 0;
  border: 1px solid rgba(196, 163, 106, 0.45);
  border-radius: 10px;
  overflow: hidden;
  background: radial-gradient(circle at 50% 18%, rgba(154, 180, 197, 0.12), transparent 60%), var(--night);
  display: flex;
  flex-direction: column;
  box-shadow:
    0 12px 30px rgba(11, 20, 32, 0.18),
    0 0 0 1px rgba(196, 163, 106, 0.15),
    0 0 50px rgba(196, 163, 106, 0.06);
  transform: rotate(-1.2deg);
  transition: transform 300ms ease;
}

.archetype-card:hover { transform: rotate(-0.3deg) translateY(-3px); }

.archetype-card img { width: 100%; flex: 1; object-fit: cover; display: block; }

.archetype-card figcaption {
  text-align: center;
  padding: 8px 0;
  font-family: var(--serif);
  font-size: 11px;
  letter-spacing: 0.2em;
  color: rgba(196, 163, 106, 0.70);
  border-top: 1px solid rgba(196, 163, 106, 0.25);
}

.base-rows { flex: 1; min-width: 0; }

.base-row {
  display: flex;
  gap: 18px;
  padding: 16px 0;
  align-items: baseline;
}

.base-row + .base-row { border-top: 1px solid var(--line); }

.base-name {
  flex: 0 0 3em;
  font-family: var(--serif);
  font-size: 12.5px;
  letter-spacing: 0.28em;
  color: #8a6d34;
}

.base-text { min-width: 0; }

.base-text i {
  font-style: normal;
  display: block;
  font-family: var(--serif);
  color: var(--ink);
  font-size: 18px;
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}

.base-text p {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.95;
  color: #4c5961;
}

/* 开关 */
.switch-featured {
  border-top: 2px solid rgba(196, 163, 106, 0.35);
  padding: 22px 0 18px;
  margin-bottom: 24px;
  position: relative;
}

.featured-mark {
  display: block;
  font-size: 10.5px;
  letter-spacing: 0.18em;
  color: #8a6d34;
  margin-bottom: 10px;
  font-family: var(--sans);
}

.switch-featured b {
  display: block;
  font-family: var(--serif);
  font-size: 20px;
  letter-spacing: 0.06em;
  color: var(--ink);
  margin-bottom: 10px;
  font-weight: 500;
}

.switch-featured p {
  margin: 0;
  font-size: 14px;
  line-height: 2;
  color: #3d4a52;
  max-width: 60ch;
}

.switch-rest { columns: 2; column-gap: 44px; }

.switch-item {
  break-inside: avoid;
  padding: 4px 0 16px 14px;
  border-left: 1px solid rgba(196, 163, 106, 0.25);
  margin-bottom: 16px;
}

.switch-item b {
  display: block;
  font-family: var(--serif);
  font-size: 15.5px;
  letter-spacing: 0.06em;
  color: var(--ink);
  margin-bottom: 6px;
  font-weight: 500;
}

.switch-item p {
  margin: 0;
  font-size: 13px;
  line-height: 1.9;
  color: #4c5961;
}

.switch-more {
  color: var(--blue);
  border-bottom: 1px solid rgba(69, 109, 136, 0.25);
  cursor: pointer;
  font-size: 12.5px;
  padding-bottom: 1px;
  transition: color 200ms ease, border-color 200ms ease;
}

.switch-more:hover {
  color: #8a6d34;
  border-bottom-color: rgba(138, 109, 52, 0.40);
}

.switch-featured .conf,
.switch-item .conf { background: transparent; padding: 0 2px; }

/* 推算 */
.forecast-note {
  margin: -6px 0 20px;
  font-size: 12px;
  color: var(--ink-soft);
}

.tl-list { position: relative; }

.tl-item { display: flex; gap: 18px; }

.tl-rail {
  flex: 0 0 14px;
  position: relative;
  display: flex;
  justify-content: center;
}

.tl-rail::before {
  content: "";
  position: absolute;
  top: 4px;
  bottom: -4px;
  width: 1px;
  background: var(--line);
}

.tl-item:last-child .tl-rail::before { bottom: auto; height: 24px; }

.tl-rail i {
  position: relative;
  z-index: 1;
  width: 8px;
  height: 8px;
  margin-top: 6px;
  border-radius: 50%;
  background: var(--paper-high);
  border: 2px solid var(--blue);
}

.tl-future .tl-rail i { border-color: #8a6d34; background: rgba(196, 163, 106, 0.20); }

.tl-body { padding-bottom: 26px; min-width: 0; }

.tl-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 5px; }

.tl-head b {
  font-family: var(--mono);
  font-size: 13.5px;
  letter-spacing: 0.04em;
  color: var(--blue);
  font-weight: 600;
}

.tl-future .tl-head b { color: #8a6d34; }

.phase-chip {
  font-style: normal;
  font-size: 10.5px;
  padding: 0 7px;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--ink-soft);
}

.tl-body p {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.9;
  color: #3d4a52;
  max-width: 66ch;
}

/* 调整 */
.adjust-list { display: flex; flex-direction: column; }

.adjust-item {
  display: flex;
  gap: 18px;
  padding: 16px 0;
}

.adjust-item + .adjust-item { border-top: 1px solid var(--line); }

.adjust-no {
  flex: 0 0 30px;
  height: 30px;
  border: 1px solid rgba(196, 163, 106, 0.50);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--serif);
  font-size: 13px;
  color: #8a6d34;
  margin-top: 2px;
}

.adjust-item b {
  display: block;
  font-family: var(--serif);
  font-size: 16px;
  color: var(--ink);
  margin-bottom: 5px;
  font-weight: 500;
  letter-spacing: 0.03em;
}

.adjust-item p {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.9;
  color: #4c5961;
  max-width: 64ch;
}

/* 观察 */
.watch-card {
  border-left: 2px solid rgba(138, 109, 52, 0.30);
  padding: 14px 0 14px 18px;
  margin-left: 4px;
}

.watch-card p {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--ink);
}

.watch-actions {
  margin-top: 12px;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

#astro-watch-save {
  border: 1px solid rgba(138, 109, 52, 0.45);
  background: transparent;
  color: #8a6d34;
  border-radius: 6px;
  padding: 6px 14px;
  font-size: 12.5px;
  letter-spacing: 0.05em;
  cursor: pointer;
  transition: background 200ms ease, color 200ms ease;
}

#astro-watch-save:hover { background: rgba(138, 109, 52, 0.10); color: #6b4f20; }

#astro-watch-status { font-size: 12px; color: var(--ink-soft); }

#astro-watch-status a { color: var(--blue); }

/* ---- 把握度徽标 ---- */
.conf {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 1px 8px;
  margin-left: 2px;
  border-radius: 999px;
  font-family: var(--sans);
  font-size: 11.5px;
  white-space: nowrap;
  vertical-align: 0.06em;
  line-height: 1.7;
}

.conf::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.70;
}

/* 纸面配色 */
.conf-high { background: rgba(69, 109, 136, 0.08); color: var(--blue); }
.conf-mid { background: rgba(196, 163, 106, 0.14); color: #8a6d34; }
.conf-low { background: var(--paper-low); color: var(--ink-soft); }

/* ---- 续问（暗底） ---- */
.astro-followup {
  padding: 40px 0 52px;
  color: #e8eeec;
}

.followup-head span {
  font-family: var(--serif);
  font-size: 17px;
  color: rgba(244, 247, 245, 0.80);
  letter-spacing: 0.06em;
}

.followup-head p {
  margin: 8px 0 20px;
  font-size: 12.5px;
  color: rgba(180, 195, 200, 0.38);
}

.astro-thread:empty { display: none; }

.astro-thread { margin-bottom: 18px; }

.thread-q,
.thread-a {
  display: flex;
  gap: 12px;
  margin: 16px 0;
}

.thread-q > span,
.thread-a > span {
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--serif);
  font-size: 12px;
}

.thread-q > span {
  background: rgba(180, 195, 200, 0.06);
  color: rgba(180, 195, 200, 0.55);
}

.thread-a > span {
  background: rgba(154, 180, 197, 0.10);
  color: rgba(154, 180, 197, 0.60);
}

.thread-q p {
  margin: 3px 0 0;
  font-size: 14px;
  line-height: 1.8;
  color: rgba(228, 234, 232, 0.80);
}

.thread-a > div {
  min-width: 0;
  font-size: 14px;
  line-height: 2;
  color: rgba(228, 234, 232, 0.72);
}

.thread-answer {
  flex: 1;
  min-width: 0;
}

.thread-stream-copy {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.thread-a.is-pending .thread-stream-copy::after {
  content: "";
  display: inline-block;
  width: 0.38em;
  height: 0.82em;
  margin-left: 0.2em;
  border-radius: 1px;
  vertical-align: -0.08em;
  background: rgba(154, 180, 197, 0.55);
  animation: stream-caret 900ms ease-in-out infinite alternate;
}

.thread-a.is-error {
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(163, 77, 63, 0.22);
}

.thread-recovery {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 14px;
  margin-top: 10px;
  color: rgba(216, 184, 177, 0.72);
  font-size: 13px;
  line-height: 1.6;
}

.thread-retry {
  padding: 5px 11px;
  border: 1px solid rgba(196, 163, 106, 0.34);
  border-radius: 6px;
  background: transparent;
  color: rgba(218, 192, 146, 0.82);
  font-size: 13px;
  cursor: pointer;
}

.thread-retry:hover {
  border-color: rgba(196, 163, 106, 0.62);
  color: var(--gold);
}

.thread-a > div p { margin: 0 0 12px; }

.thread-a > div strong { color: rgba(244, 247, 245, 0.90); }

/* 续问内把握度换浅色 */
.thread-a .conf-high { background: rgba(154, 180, 197, 0.12); color: rgba(154, 180, 197, 0.80); }
.thread-a .conf-mid { background: rgba(196, 163, 106, 0.14); color: rgba(196, 163, 106, 0.70); }
.thread-a .conf-low { background: rgba(180, 195, 200, 0.06); color: rgba(180, 195, 200, 0.45); }

.followup-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}

.preset-chip {
  border: 1px solid rgba(180, 195, 200, 0.10);
  background: rgba(180, 195, 200, 0.03);
  color: rgba(180, 195, 200, 0.50);
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 12px;
  cursor: pointer;
  transition: border-color 0.2s, color 0.2s;
}

.preset-chip:hover { border-color: rgba(154, 180, 197, 0.30); color: rgba(154, 180, 197, 0.70); }

#astro-followup-form {
  display: flex;
  gap: 10px;
  align-items: stretch;
}

#astro-followup-input {
  flex: 1;
  min-width: 0;
  resize: none;
  border: 1px solid rgba(180, 195, 200, 0.10);
  border-radius: 8px;
  background: rgba(180, 195, 200, 0.04);
  padding: 10px 14px;
  font-family: var(--sans);
  font-size: 14px;
  color: rgba(228, 234, 232, 0.80);
}

#astro-followup-input::placeholder { color: rgba(180, 195, 200, 0.25); }

#astro-followup-input:focus { outline: none; border-color: rgba(154, 180, 197, 0.30); }

#astro-followup-form button {
  border: 1px solid rgba(196, 163, 106, 0.30);
  border-radius: 8px;
  background: transparent;
  color: rgba(196, 163, 106, 0.60);
  padding: 0 20px;
  font-family: var(--serif);
  font-size: 13.5px;
  letter-spacing: 0.1em;
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
}

#astro-followup-form button:hover {
  background: rgba(196, 163, 106, 0.12);
  color: var(--gold);
}

#astro-followup-form button:disabled,
.preset-chip:disabled {
  cursor: wait;
  opacity: 0.52;
}

.followup-note {
  margin: 14px 0 0;
  font-size: 12.5px;
  color: rgba(180, 195, 200, 0.40);
}

/* ---- 免责行 ---- */
.chart-disclaimer {
  margin: 32px 0 0;
  color: rgba(125, 130, 126, 0.35);
  font-family: var(--sans);
  font-size: 10px;
  line-height: 1.7;
  text-align: center;
}

/* ============================================================
   响应式
   ============================================================ */

@media (max-width: 900px) {
  .astro-topbar {
    grid-template-columns: 1fr auto;
  }

  .beta-mark {
    display: none;
  }

  .astro-hero {
    grid-template-columns: 1fr;
    min-height: 660px;
    padding-top: 70px;
  }

  .hero-copy {
    position: relative;
    z-index: 1;
  }

  .hero-orbit {
    position: absolute;
    z-index: 0;
    right: -70px;
    top: 210px;
    width: 360px;
    opacity: 0.34;
  }

  .birth-observatory {
    grid-template-columns: 1fr;
  }

  .observatory-index {
    padding: 30px 36px;
    border-right: 0;
  }

  .observatory-index h2 {
    margin-bottom: 22px;
  }

  .observatory-index ol {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
  }

  .observatory-index li {
    border-right: 1px solid var(--night-line);
    border-bottom: 0;
  }

  .observatory-index li:last-child {
    border-right: 0;
  }

  .observatory-index > small {
    margin-top: 22px;
  }

  .chart-spread {
    grid-template-columns: 1fr;
  }

  .wheel-sheet {
    padding-right: 0;
    border-right: 0;
    border-bottom: 1px solid rgba(180, 195, 200, 0.08);
  }

  .brief-sheet {
    padding-left: 0;
    padding-top: 40px;
  }

  .aspect-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .switch-rest {
    columns: 1;
  }
}

@media (max-width: 640px) {
  .astro-topbar,
  .astro-hero,
  .birth-observatory,
  .chart-loading,
  .astro-result {
    width: min(100% - 28px, 1180px);
  }

  .astro-topbar {
    min-height: 72px;
  }

  .astro-brand b {
    display: none;
  }

  .session-mark span {
    display: none;
  }

  .astro-hero {
    min-height: 600px;
    padding: 58px 0 104px;
  }

  .hero-copy h1 {
    font-size: clamp(31px, 9.4vw, 42px);
  }

  .hero-intro {
    font-size: 14px;
  }

  .method-strip span {
    min-width: 0;
    flex: 1;
    padding-right: 10px;
    font-size: 10px;
  }

  .method-strip b {
    display: block;
    margin-bottom: 3px;
  }

  .hero-orbit {
    width: 300px;
    right: -110px;
    top: 250px;
  }

  .birth-observatory {
    margin-top: -46px;
    margin-bottom: 70px;
  }

  .observatory-index {
    padding: 26px 24px;
  }

  .observatory-index ol {
    display: none;
  }

  .observatory-index > small {
    margin-top: 14px;
  }

  .astro-form {
    padding: 34px 22px 38px;
  }

  .field-row-time {
    grid-template-columns: 1fr;
  }

  .result-masthead {
    padding: 48px 20px 36px;
  }

  .result-masthead button {
    margin-top: 16px;
  }

  .masthead-actions { flex-wrap: wrap; gap: 12px; }

  .chart-spread {
    padding: 20px 0 60px;
  }

  .wheel-sheet {
    padding-bottom: 30px;
  }

  .brief-sheet {
    padding-top: 30px;
  }

  .highlight-item {
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 16px 0;
  }

  .ledger-section,
  .aspect-section,
  .domain-section {
    padding: 56px 20px;
  }

  .aspect-grid {
    grid-template-columns: 1fr;
  }

  .planet-row {
    grid-template-columns: 32px 1fr 1fr;
    row-gap: 6px;
    padding: 12px 0;
  }

  .pr-house { grid-column: 2 / -1; }
  .pr-meta { grid-column: 3; grid-row: 1; }

  .reading-invitation {
    padding: 48px 0 40px;
  }

  #reading-start {
    margin-top: 24px;
  }

  .reading-gate {
    margin: 0 0 28px;
    padding: 20px;
  }

  .reading-body {
    padding: 40px 20px 48px;
  }

  .reading-body h3 {
    font-size: 19px;
  }

  .reading-body p,
  .reading-body li {
    font-size: 14px;
  }

  .reading-saved {
    padding: 12px 20px;
  }

  .domain-tab { min-width: 33%; }
  .domain-flow { flex-direction: column; align-items: flex-start; }
  .flow-arrow { flex-direction: row; }

  .base-wrap { flex-direction: column; }
  .archetype-card { flex-basis: auto; max-width: 170px; transform: none; }
  .switch-rest { columns: 1; }

  .astro-footer {
    display: block;
    padding: 28px 20px;
    text-align: center;
  }

  .astro-footer div {
    justify-content: center;
    margin-top: 18px;
  }

  .astro-followup {
    padding: 28px 0 40px;
  }

  #astro-followup-form { flex-direction: column; }
  #astro-followup-form button { padding: 11px 0; }
}

@media (prefers-reduced-motion: no-preference) {
  .orbit-a { animation: orbit-drift 18s linear infinite; }
  .orbit-b { animation: orbit-drift-b 24s linear infinite reverse; }
}

@keyframes orbit-drift {
  to { transform: rotate(342deg) scaleY(0.46); }
}

@keyframes orbit-drift-b {
  to { transform: rotate(418deg) scaleY(0.6); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* 「当下的调整」：正文限宽、依据挪右栏，填满宽容器 */
.adjust-item {
  display: grid;
  grid-template-columns: 30px minmax(0, 62ch) minmax(180px, 1fr);
  gap: 18px 22px;
  align-items: start;
}

.adjust-side {
  justify-self: end;
  text-align: right;
  max-width: 30ch;
  padding-top: 4px;
  border-right: 2px solid rgba(196, 163, 106, 0.35);
  padding-right: 12px;
}

.adjust-side .card-dep { margin-top: 0; }

/* 「留一个观察」：限宽防溢出，按钮不再贴边 */
.watch-card { max-width: 74ch; padding-right: 20px; }
.watch-card p { max-width: 68ch; }

@media (max-width: 760px) {
  .adjust-item { grid-template-columns: 30px 1fr; }
  .adjust-side {
    grid-column: 2;
    justify-self: start;
    text-align: left;
    border-right: none;
    border-left: 2px solid rgba(196, 163, 106, 0.35);
    padding: 0 0 0 12px;
    max-width: none;
  }
}

/* 解读正文限宽居中：大屏上作为一栏「文章」，不再满幅摊开 */
.reading-body .rcard-group {
  max-width: 940px;
  margin-left: auto;
  margin-right: auto;
}

/* 免责行收拢 */
#chart-disclaimer {
  max-width: 720px;
  margin: 34px auto;
  text-align: center;
  font-size: 12px;
  line-height: 1.9;
}

/* footer 桌面端基础样式（Kimi 改版时遗失，补回夜色横带） */
.astro-footer {
  background: var(--night);
  color: rgba(223, 230, 228, 0.6);
  border-top: 1px solid rgba(197, 218, 226, 0.14);
}

.astro-footer,
.astro-footer > * { box-sizing: border-box; }

.astro-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
  padding: 30px max(24px, calc((100% - 1240px) / 2));
}

.astro-footer p {
  margin: 0;
  font-family: var(--sans);
  font-size: 12px;
  letter-spacing: 0.06em;
}

.astro-footer div { display: flex; gap: 22px; }

.astro-footer a {
  color: #dfe6e4;
  font-size: 12.5px;
  text-decoration: none;
  border-bottom: 1px solid rgba(223, 230, 228, 0.4);
  padding-bottom: 2px;
}

.astro-footer a:hover { color: var(--gold); border-bottom-color: var(--gold); }

/* 免责行并入夜色流（此前是夹在两段暗区之间的纸色白带） */
#chart-disclaimer {
  max-width: none;
  margin: 0;
  padding: 30px 24px;
  background: var(--night);
  color: rgba(223, 230, 228, 0.45);
  text-align: center;
  font-size: 12px;
  line-height: 1.9;
}

/* 盘面档案折叠区（行星落点 + 主要相位） */
.archive-fold { border-top: 1px solid var(--line); }

.archive-fold > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: baseline;
  gap: 14px;
  padding: 26px 0;
}

.archive-fold > summary::-webkit-details-marker { display: none; }

.archive-fold > summary b {
  font-family: var(--serif);
  font-size: 16px;
  letter-spacing: 0.12em;
  color: var(--ink);
  font-weight: 500;
  white-space: nowrap;
}

.archive-fold > summary span {
  font-size: 12.5px;
  color: var(--ink-soft);
  font-family: var(--sans);
}

.archive-fold > summary i {
  font-style: normal;
  margin-left: auto;
  font-size: 12px;
  color: #8a6d34;
  white-space: nowrap;
}

.archive-fold[open] > summary i { visibility: hidden; }

/* 正文完全展开：撤销各处限宽与右栏布局（2026-08-01 用户拍板） */
.reading-body .rcard-group { max-width: none; }
.switch-featured p, .switch-item p, .adjust-item p, .base-text p,
.domain-read, .tl-body p, .watch-card, .watch-card p { max-width: none; }
.adjust-item { grid-template-columns: 30px 1fr; }
.adjust-side {
  grid-column: 2;
  justify-self: start;
  text-align: left;
  border-right: none;
  border-left: 2px solid rgba(196, 163, 106, 0.35);
  padding: 0 0 0 12px;
  max-width: none;
}
#chart-disclaimer { background: transparent; color: var(--ink-soft); }

/* 免责行并入 footer 上沿：全宽夜色、薄带，不再产生纸色断带 */
#chart-disclaimer {
  background: var(--night);
  color: rgba(223, 230, 228, 0.42);
  margin: 0;
  padding: 26px 24px 6px;
  text-align: center;
  max-width: none;
  border-bottom: none;
}
.astro-result { padding-bottom: 0; margin-bottom: 0; }
.astro-footer { border-top: none; }

/* ================================================================
   260801x · 星夜动效增强层（追加覆盖，不改原有规则）
   ================================================================ */

/* ---- 1. 星空层：更密的星点 + 双层闪烁 + 极慢视差漂移 ---- */
.sky-noise {
  overflow: hidden;
}
.sky-noise::before,
.sky-noise::after {
  content: "";
  position: absolute;
  inset: -60px;
  pointer-events: none;
  background-repeat: repeat;
}
/* 密星层：缓慢漂移，制造纵深 */
.sky-noise::before {
  background-image:
    radial-gradient(circle at 12% 22%, rgba(214, 228, 236, 0.85) 0 1px, transparent 1.6px),
    radial-gradient(circle at 38% 74%, rgba(214, 228, 236, 0.5) 0 1px, transparent 1.5px),
    radial-gradient(circle at 55% 9%,  rgba(214, 228, 236, 0.65) 0 1px, transparent 1.5px),
    radial-gradient(circle at 71% 58%, rgba(214, 228, 236, 0.45) 0 1px, transparent 1.5px),
    radial-gradient(circle at 84% 30%, rgba(214, 228, 236, 0.7) 0 1px, transparent 1.6px),
    radial-gradient(circle at 6%  81%, rgba(214, 228, 236, 0.4) 0 1px, transparent 1.5px),
    radial-gradient(circle at 26% 47%, rgba(214, 228, 236, 0.55) 0 1px, transparent 1.5px),
    radial-gradient(circle at 47% 88%, rgba(214, 228, 236, 0.5) 0 1px, transparent 1.5px),
    radial-gradient(circle at 64% 39%, rgba(214, 228, 236, 0.6) 0 1px, transparent 1.5px),
    radial-gradient(circle at 92% 70%, rgba(214, 228, 236, 0.5) 0 1px, transparent 1.5px),
    radial-gradient(circle at 19% 5%,  rgba(214, 228, 236, 0.6) 0 1px, transparent 1.5px),
    radial-gradient(circle at 78% 93%, rgba(214, 228, 236, 0.45) 0 1px, transparent 1.5px),
    radial-gradient(circle at 33% 31%, rgba(214, 228, 236, 0.35) 0 1px, transparent 1.4px),
    radial-gradient(circle at 58% 66%, rgba(214, 228, 236, 0.4) 0 1px, transparent 1.4px),
    radial-gradient(circle at 88% 12%, rgba(214, 228, 236, 0.55) 0 1px, transparent 1.5px);
  background-size: 480px 480px;
}
/* 亮星层：错相闪烁 */
.sky-noise::after {
  background-image:
    radial-gradient(circle at 20% 30%, rgba(236, 244, 248, 0.95) 0 1.4px, transparent 2.2px),
    radial-gradient(circle at 63% 15%, rgba(224, 201, 147, 0.9) 0 1.3px, transparent 2px),
    radial-gradient(circle at 45% 62%, rgba(236, 244, 248, 0.85) 0 1.2px, transparent 2px),
    radial-gradient(circle at 82% 46%, rgba(177, 203, 214, 0.9) 0 1.3px, transparent 2px),
    radial-gradient(circle at 8%  58%, rgba(236, 244, 248, 0.8) 0 1.2px, transparent 2px),
    radial-gradient(circle at 72% 82%, rgba(224, 201, 147, 0.75) 0 1.2px, transparent 2px);
  background-size: 640px 640px;
}

/* ---- 2. Hero 轨道：默认开启差速旋转，太阳呼吸光晕 ---- */
@media (prefers-reduced-motion: no-preference) {
  .sky-noise::before { animation: star-drift 150s linear infinite; }
  .sky-noise::after  { animation: star-twinkle 5.5s ease-in-out infinite alternate; }
  .orbit-c { animation: orbit-spin-c 41s linear infinite; }
  .orbit-sun { animation: sun-breathe 4.6s ease-in-out infinite; }
  .hero-orbit { animation: orbit-ambient 9s ease-in-out infinite; }
}

@keyframes star-drift {
  from { transform: translate3d(0, 0, 0); }
  to   { transform: translate3d(-480px, 240px, 0); }
}
@keyframes star-twinkle {
  from { opacity: 0.35; }
  to   { opacity: 1; }
}
@keyframes orbit-spin-c {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
@keyframes sun-breathe {
  0%, 100% { text-shadow: 0 0 30px rgba(214, 188, 135, 0.28), 0 0 90px rgba(214, 188, 135, 0.10); transform: translate(-50%, -50%) scale(1); }
  50%      { text-shadow: 0 0 46px rgba(224, 201, 147, 0.55), 0 0 130px rgba(224, 201, 147, 0.22); transform: translate(-50%, -50%) scale(1.045); }
}
@keyframes orbit-ambient {
  0%, 100% { box-shadow: 0 0 0 rgba(196, 163, 106, 0); }
  50%      { box-shadow: 0 0 90px rgba(196, 163, 106, 0.07); }
}

/* ---- 3. Hero 文字入场：两行标题揭幕 + 周边渐次浮现 ---- */
@media (prefers-reduced-motion: no-preference) {
  .hero-copy h1 > span,
  .hero-copy h1 em {
    animation: hero-reveal 900ms cubic-bezier(0.19, 0.75, 0.22, 1) both;
  }
  .hero-copy h1 em { animation-delay: 140ms; }
  .hero-copy .eyebrow   { animation: hero-fade 700ms ease 80ms both; }
  .hero-intro           { animation: hero-fade 800ms ease 320ms both; }
  .method-strip         { animation: hero-fade 800ms ease 480ms both; }
  .astro-topbar         { animation: hero-fade 700ms ease both; }
  .hero-orbit           { animation: hero-fade 1100ms ease 260ms both, orbit-ambient 9s ease-in-out 1.4s infinite; }
  .birth-observatory    { animation: observatory-rise 900ms cubic-bezier(0.19, 0.75, 0.22, 1) 500ms both; }
}

@keyframes hero-reveal {
  from { clip-path: inset(0 0 100% 0); transform: translateY(26px); opacity: 0; }
  to   { clip-path: inset(0 0 -8% 0);  transform: none; opacity: 1; }
}
@keyframes hero-fade {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}
@keyframes observatory-rise {
  from { opacity: 0; transform: translateY(42px); }
  to   { opacity: 1; transform: none; }
}

/* ---- 4. 按钮光标：固定手型，不随移动状态变化 ---- */
.chart-submit,
.chart-submit span,
.chart-submit i,
#reading-start,
#new-chart,
#share-card {
  cursor: pointer;
}

/* ---- 5. 排盘揭晓：盘轮回旋入场 + 常驻金色环境光 ---- */
.chart-wheel svg {
  transform-origin: 50% 50%;
  box-shadow:
    0 32px 90px rgba(0, 0, 0, 0.55),
    0 0 0 1px rgba(196, 163, 106, 0.22),
    0 0 120px rgba(196, 163, 106, 0.08);
}
@media (prefers-reduced-motion: no-preference) {
  .chart-wheel svg {
    animation: wheel-reveal 950ms cubic-bezier(0.16, 0.8, 0.24, 1) both;
  }
  .wheel-sheet figcaption { animation: hero-fade 700ms ease 700ms both; }
}
@keyframes wheel-reveal {
  from { opacity: 0; transform: scale(0.9) rotate(-7deg); }
  60%  { opacity: 1; }
  to   { opacity: 1; transform: none; }
}

/* ---- 6. 数据条生长动画：元素平衡 / 相位贴合度 ---- */
@media (prefers-reduced-motion: no-preference) {
  .balance-row i b,
  .ac-meter i b {
    transform-origin: left center;
    animation: bar-grow 850ms cubic-bezier(0.2, 0.7, 0.2, 1) both;
  }
  .balance-row:nth-child(2) i b { animation-delay: 90ms; }
  .balance-row:nth-child(3) i b { animation-delay: 180ms; }
  .balance-row:nth-child(4) i b { animation-delay: 270ms; }
  .balance-row:nth-child(5) i b { animation-delay: 360ms; }
}
@keyframes bar-grow {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

/* ---- 7. 滚动叙事：各区块进入视口时升起（支持滚动时间线的浏览器） ---- */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .highlight-item,
    .planet-row,
    .aspect-card,
    .domain-card,
    .ledger-section .section-label,
    .aspect-section .section-label,
    .domain-section .section-label,
    .reading-invitation {
      animation: section-rise linear both;
      animation-timeline: view();
      animation-range: entry 0% entry 42%;
    }
  }
}
@keyframes section-rise {
  from { opacity: 0; transform: translateY(26px); }
  to   { opacity: 1; transform: none; }
}

/* ---- 8. 结果区其余元素的入场节奏 ---- */
@media (prefers-reduced-motion: no-preference) {
  .result-masthead > div  { animation: hero-fade 700ms ease 120ms both; }
  .chart-spread .section-label { animation: hero-fade 600ms ease 350ms both; }
  .highlight-item { animation: hero-fade 650ms ease both; }
  .highlight-item:nth-of-type(1) { animation-delay: 480ms; }
  .highlight-item:nth-of-type(2) { animation-delay: 580ms; }
  .highlight-item:nth-of-type(3) { animation-delay: 680ms; }
  .highlight-item:nth-of-type(4) { animation-delay: 780ms; }
  .highlight-item:nth-of-type(5) { animation-delay: 880ms; }
  .element-balance { animation: hero-fade 700ms ease 900ms both; }
}

/* ---- 9. 加载态：三行星环绕，与 Hero 呼应 ---- */
.loading-orbit {
  position: relative;
}
.loading-orbit::before,
.loading-orbit::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
}
.loading-orbit::before {
  inset: -14px;
  border: 1px dashed rgba(196, 163, 106, 0.35);
}
.loading-orbit::after {
  inset: -26px;
  border: 1px solid rgba(154, 180, 197, 0.18);
}
@media (prefers-reduced-motion: no-preference) {
  .loading-orbit::before { animation: orbit-spin-c 7s linear infinite; }
  .loading-orbit::after  { animation: orbit-spin-c 13s linear infinite reverse; }
}

/* ================================================================
   星盘结果页 V2 · 阅读层级、系统正文字体与字号
   ================================================================ */

/* 宋体只承担标题；正文、数据、按钮和交互统一使用系统默认字体。 */
.result-masthead h2,
.quick-read h2,
.section-label b,
.dynamic-card h3,
.chart-takeaways h3,
.reading-invitation h2,
.reading-body h3,
.reading-body h4,
.rcard-group h3,
.pr-who h3,
.reading-gate h3,
.followup-head span,
.base-text i,
.switch-featured b,
.switch-item b,
.adjust-item b {
  font-family: var(--serif);
}

.result-masthead span,
.result-masthead button,
.atlas-nav,
.quick-read p,
.quick-read span,
.chart-takeaways,
.wheel-hint,
.sect-strip,
.highlight-item,
.dynamic-card p,
.dynamic-card button,
.dynamic-evidence,
.domain-section,
.domain-tab,
.domain-more,
.archive-section,
.snapshot-planets button,
.archive-fold,
.planet-row,
.aspect-card,
.reading-invitation > span,
.reading-invitation li,
.reading-assurance,
#reading-start,
.reading-body,
.base-name,
.base-text p,
.switch-featured p,
.switch-item p,
.adjust-no,
.adjust-item p,
.watch-card,
.astro-followup,
.thread-q > span,
.thread-a > span,
#astro-followup-form button {
  font-family: var(--sans);
}

.atlas-nav,
.quick-read,
.dynamics-section,
.archive-section {
  position: relative;
  isolation: isolate;
}

.atlas-nav::before,
.quick-read::before,
.dynamics-section::before,
.archive-section::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 50%;
  width: 100vw;
  transform: translateX(-50%);
  z-index: -1;
}

.atlas-nav::before,
.quick-read::before { background: var(--night); }
.dynamics-section::before,
.archive-section::before { background: var(--paper); }

.atlas-nav {
  position: sticky;
  top: 0;
  z-index: 12;
  display: flex;
  align-items: center;
  gap: 30px;
  min-height: 52px;
  padding: 0 48px;
  border: 0;
  background: transparent;
  backdrop-filter: none;
}

.atlas-nav::before {
  background: var(--night);
  box-shadow:
    inset 0 1px rgba(180, 195, 200, 0.12),
    inset 0 -1px rgba(180, 195, 200, 0.12);
}

.atlas-nav a {
  color: rgba(222, 231, 231, 0.68);
  font-size: 13px;
  line-height: 52px;
  text-decoration: none;
  white-space: nowrap;
  transition: color 180ms ease;
}

.atlas-nav a:hover,
.atlas-nav a:focus-visible { color: #f4f7f5; }

.atlas-nav a:focus-visible,
.dynamic-card button:focus-visible,
.snapshot-planets button:focus-visible,
.domain-more:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
}

.quick-read {
  padding: 64px 48px 78px;
  color: #edf2f0;
}

.quick-read .section-label,
.dynamics-section .section-label,
.archive-section > .section-label {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin-bottom: 30px;
}

.quick-read .section-label span,
.dynamics-section .section-label span,
.archive-section > .section-label span {
  color: var(--gold);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.16em;
}

.quick-read .section-label b,
.dynamics-section .section-label b,
.archive-section > .section-label b {
  color: inherit;
  font-size: 20px;
  font-weight: 500;
  letter-spacing: 0.08em;
}

.quick-read .section-label i,
.dynamics-section .section-label i,
.archive-section > .section-label i {
  margin-left: auto;
  color: rgba(206, 218, 220, 0.62);
  font-size: 12px;
  font-style: normal;
}

.quick-read-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(280px, 0.75fr);
  gap: clamp(48px, 7vw, 92px);
  align-items: start;
}

.chart-thesis > span,
.chart-takeaways article > span {
  display: block;
  margin-bottom: 12px;
  color: var(--gold);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
}

.chart-thesis h2 {
  margin: 0;
  max-width: 24em;
  color: #f4f7f5;
  font-size: clamp(27px, 3vw, 39px);
  font-weight: 500;
  line-height: 1.55;
  letter-spacing: -0.01em;
  text-wrap: pretty;
}

.evidence-chips,
.dynamic-evidence {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 26px;
}

.evidence-chips span,
.dynamic-evidence span {
  padding: 6px 10px;
  border: 1px solid rgba(180, 195, 200, 0.18);
  border-radius: 4px;
  color: rgba(224, 232, 232, 0.74);
  font-family: var(--mono);
  font-size: 11px;
  line-height: 1.35;
}

.chart-takeaways {
  border-top: 1px solid rgba(180, 195, 200, 0.16);
}

.chart-takeaways article {
  padding: 20px 0 22px;
  border-bottom: 1px solid rgba(180, 195, 200, 0.16);
}

.chart-takeaways article > span { margin-bottom: 8px; font-size: 11px; }

.chart-takeaways h3 {
  margin: 0 0 9px;
  color: rgba(244, 247, 245, 0.94);
  font-size: 18px;
  font-weight: 500;
  line-height: 1.5;
}

.chart-takeaways p {
  margin: 0;
  color: rgba(214, 224, 225, 0.72);
  font-size: 15px;
  line-height: 1.85;
}

.result-masthead { padding: 66px 48px 42px; }
.result-masthead h2 { font-size: clamp(38px, 4.4vw, 62px); }
.result-masthead span { font-size: 14px; line-height: 1.7; color: rgba(209, 221, 223, 0.66); }

.chart-spread {
  grid-template-columns: minmax(390px, 0.92fr) minmax(0, 1.08fr);
  padding: 72px 0 78px;
}

.chart-wheel { max-width: 480px; }
.wheel-sheet { padding: 0 48px 0 0; }
.brief-sheet { padding-left: 48px; }

.wheel-hint {
  margin: 24px 0 0;
  color: rgba(207, 219, 221, 0.66);
  font-size: 13px;
  line-height: 1.6;
  text-align: center;
}

.wheel-hint span { color: var(--gold); font-weight: 600; }
.wheel-sheet figcaption { margin-top: 12px; font-size: 11px; color: rgba(196, 209, 212, 0.54); }

.chart-spread .section-label b,
.aspect-section .section-label b { font-size: 20px; }
.chart-spread .section-label i,
.aspect-section .section-label i { font-size: 12px; color: rgba(207, 219, 221, 0.60); }
.sect-strip p { font-size: 14px; color: rgba(214, 224, 225, 0.76); }
.highlight-item { grid-template-columns: minmax(120px, 0.32fr) 1fr; padding: 19px 0; }
.highlight-item h3 { font-size: 16px; }
.highlight-item p { font-size: 15px; line-height: 1.8; color: rgba(214, 224, 225, 0.76); }
.highlight-item small { font-size: 11px; color: rgba(207, 219, 221, 0.54); }
.balance-row { font-size: 12px; color: rgba(207, 219, 221, 0.64); }

.dynamics-section {
  padding: 76px 48px 84px;
  color: var(--ink);
}

.dynamics-section .section-label span,
.archive-section > .section-label span { color: var(--rust); }
.dynamics-section .section-label i,
.archive-section > .section-label i { color: #667179; }

.dynamics-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.85fr);
  gap: 18px 44px;
}

.dynamic-card {
  padding: 28px 0 30px;
  border-top: 1px solid var(--line);
}

.dynamic-card:first-child {
  grid-column: 1 / -1;
  padding: 34px 38px 36px;
  border-top: 2px solid rgba(138, 109, 52, 0.55);
  background: var(--paper-high);
}

.dynamic-card header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 18px;
}

.dynamic-card header span {
  color: var(--rust);
  font-family: var(--mono);
  font-size: 11px;
}

.dynamic-card header i {
  color: #69737a;
  font-size: 13px;
  font-style: normal;
  font-weight: 600;
  letter-spacing: 0.08em;
}

.dynamic-card h3 {
  margin: 0 0 14px;
  color: var(--ink);
  font-size: clamp(22px, 2.4vw, 31px);
  font-weight: 500;
  line-height: 1.35;
}

.dynamic-card:not(:first-child) h3 { font-size: 22px; }

.dynamic-card p {
  margin: 0;
  color: #39464e;
  font-size: 16px;
  line-height: 1.9;
}

.dynamic-evidence { margin-top: 20px; }
.dynamic-evidence span { border-color: var(--line); color: #667179; }

.dynamic-card button,
.snapshot-planets button {
  cursor: pointer;
  transition: color 180ms ease, border-color 180ms ease, transform 180ms ease;
}

.dynamic-card button {
  margin-top: 22px;
  padding: 0 0 3px;
  border: 0;
  border-bottom: 1px solid rgba(69, 109, 136, 0.35);
  background: transparent;
  color: var(--blue);
  font-size: 14px;
}

.dynamic-card button:hover { color: #8a6d34; border-bottom-color: #8a6d34; }

.domain-section { padding: 76px 48px 84px; }
.domain-priority { margin: -10px 0 28px; color: #5e696f; font-size: 15px; line-height: 1.8; }
.domain-tabs { margin-bottom: 34px; }
.domain-tab { flex: 1 1 30%; min-width: 180px; }
.domain-tab b { font-family: var(--serif); font-size: 16px; }
.domain-tab span { font-size: 12px; }
.domain-more {
  flex: 1 0 100%;
  padding: 13px 8px;
  border: 0;
  border-top: 1px dashed var(--line);
  background: transparent;
  color: var(--blue);
  cursor: pointer;
  font-size: 13px;
}
.domain-more:hover { color: #8a6d34; }
.domain-read { font-size: 16px; line-height: 1.9; }
.flow-node b { font-family: var(--sans); font-size: clamp(19px, 2vw, 23px); font-weight: 600; }
.flow-node small, .flow-arrow i { font-size: 12px; }
.domain-tenants, .tenant-empty { font-size: 14px; }
.domain-ask { padding: 9px 18px; font-size: 14px; }

.archive-section {
  padding: 76px 48px 84px;
  color: var(--ink);
  border-top: 1px solid var(--line);
}

.archive-snapshot {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(270px, 0.65fr);
  gap: clamp(42px, 7vw, 90px);
  padding: 8px 0 34px;
}

.snapshot-group > span {
  display: block;
  margin-bottom: 14px;
  color: #657078;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
}

.snapshot-planets {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  border-top: 1px solid var(--line);
}

.snapshot-planets button {
  min-width: 0;
  padding: 18px 12px 18px 0;
  border: 0;
  border-bottom: 1px solid var(--line);
  background: transparent;
  text-align: left;
}

.snapshot-planets button:hover { color: var(--blue); transform: translateY(-2px); }
.snapshot-planets i { display: block; color: #8a6d34; font-size: 22px; font-style: normal; }
.snapshot-planets b { display: block; margin: 7px 0 4px; font-size: 15px; font-weight: 600; }
.snapshot-planets em { display: block; color: #68737a; font-size: 12px; font-style: normal; line-height: 1.55; }

.snapshot-aspects > div { border-top: 1px solid var(--line); }
.snapshot-aspects p {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin: 0;
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
  font-size: 14px;
}
.snapshot-aspects b { font-weight: 600; }
.snapshot-aspects em { color: #6b757b; font-size: 12px; font-style: normal; white-space: nowrap; }

.archive-fold { border-top-color: var(--line); }
.archive-fold > summary { padding: 20px 0; }
.archive-fold > summary b { font-family: var(--sans); font-size: 15px; font-weight: 600; }
.archive-fold > summary span { font-size: 14px; }
.archive-body { border-top: 1px solid var(--line); }
.archive-body .ledger-section,
.archive-body .aspect-section { padding: 58px 0; color: var(--ink); }
.archive-body .ledger-section::before,
.archive-body .aspect-section::before { display: none; }
.archive-body .aspect-section { border-top: 1px solid var(--line); }
.archive-body .section-label b,
.archive-body .ac-pair > span { color: var(--ink); }
.archive-body .section-label i,
.archive-body .ledger-note,
.archive-body .aspect-card p,
.archive-body .ac-pair > span em,
.archive-body .ac-meter > span,
.archive-body .aspect-more summary { color: #657078; }
.archive-body .aspect-card { border-bottom-color: var(--line); }
.archive-body .ac-link { color: var(--blue); }
.archive-body .ac-link::before,
.archive-body .ac-link::after { background: linear-gradient(90deg, transparent, rgba(69, 109, 136, 0.28)); }
.archive-body .ac-meter i { background: var(--paper-low); }
.ledger-note { font-size: 14px; line-height: 1.75; }
.planet-row { font-size: 14px; }
.pr-who h3 { font-size: 17px; }
.pr-who span, .pr-where span, .pr-house span { font-size: 12px; }
.pr-where b, .pr-house b { font-size: 15px; }
.aspect-card p { font-size: 14px; line-height: 1.8; }

.reading-invitation {
  max-width: 820px;
  padding: 74px 0 68px;
}
.reading-invitation > span { max-width: 50em; font-size: 16px; line-height: 1.9; color: rgba(215, 225, 226, 0.72); }
.reading-invitation li { padding: 3px 0; color: rgba(215, 225, 226, 0.68); font-size: 14px; line-height: 1.6; }
.reading-invitation ul { margin-bottom: 20px; }
.reading-assurance { margin: 0 0 28px; color: rgba(192, 207, 210, 0.56); font-size: 13px; line-height: 1.7; }
#reading-start { font-size: 15px; }
#reading-balance { font-size: 12px; color: rgba(184, 201, 205, 0.58); }
.reading-gate p { font-size: 15px; line-height: 1.8; }
.reading-gate a, .reading-gate button { font-size: 14px; }

.reading-body { font-family: var(--sans); }
.reading-body > p:first-child { font-size: 18px; line-height: 1.95; }
.reading-body h3 { font-size: 25px; }
.reading-body h4 { font-size: 19px; }
.reading-body p,
.reading-body li { font-size: 17px; line-height: 1.9; }
.rcard-group h3 { font-size: 22px; }
.base-text i { font-size: 18px; font-weight: 600; }
.base-text p,
.switch-featured p,
.switch-item p,
.tl-body p,
.adjust-item p,
.watch-card p { font-size: 16px; line-height: 1.9; }
.switch-featured b { font-size: 20px; }
.switch-item b, .adjust-item b { font-size: 17px; }
.card-dep, .forecast-note { font-size: 13px; line-height: 1.7; }

.astro-followup { padding: 48px 0 58px; }
.followup-head span { font-size: 22px; }
.followup-head p { font-size: 15px; line-height: 1.75; color: rgba(206, 219, 222, 0.62); }
.thread-q p,
.thread-a > div { font-size: 16px; line-height: 1.9; }
.thread-q > span,
.thread-a > span { width: 30px; height: 30px; font-size: 13px; }
.preset-chip { padding: 9px 13px; color: rgba(213, 224, 225, 0.68); font-size: 14px; line-height: 1.45; }
#astro-followup-input { min-height: 76px; padding: 14px 16px; font-size: 16px; line-height: 1.65; color: rgba(235, 240, 239, 0.86); }
#astro-followup-input::placeholder { color: rgba(206, 219, 222, 0.46); }
#astro-followup-form button { min-width: 120px; font-size: 15px; }
.followup-note { font-size: 14px; line-height: 1.7; }

@media (max-width: 900px) {
  .atlas-nav { gap: 22px; overflow-x: auto; padding-inline: 24px; scrollbar-width: none; }
  .atlas-nav::-webkit-scrollbar { display: none; }
  .quick-read-grid { grid-template-columns: 1fr; gap: 42px; }
  .chart-spread { grid-template-columns: 1fr; }
  .wheel-sheet { padding-right: 0; }
  .brief-sheet { padding: 42px 0 0; }
  .dynamics-grid { grid-template-columns: 1fr; }
  .dynamic-card:first-child { grid-column: auto; }
  .archive-snapshot { grid-template-columns: 1fr; gap: 38px; }
}

@media (max-width: 640px) {
  .result-masthead { padding: 38px 20px 30px; }
  .result-masthead h2 { font-size: clamp(32px, 10.5vw, 43px); line-height: 1.3; }
  .result-masthead span { font-size: 13px; }
  .atlas-nav { margin-inline: -14px; padding-inline: 18px; min-height: 48px; }
  .atlas-nav a { font-size: 13px; line-height: 48px; }
  .quick-read,
  .dynamics-section,
  .archive-section { padding: 48px 20px 58px; }
  .quick-read .section-label,
  .dynamics-section .section-label,
  .archive-section > .section-label { align-items: flex-start; flex-wrap: wrap; margin-bottom: 24px; }
  .quick-read .section-label i,
  .dynamics-section .section-label i,
  .archive-section > .section-label i { width: 100%; margin-left: 25px; }
  .chart-thesis h2 {
    width: 100%;
    max-width: none;
    font-size: 26px;
    line-height: 1.58;
    text-align: justify;
    text-align-last: left;
    text-justify: inter-ideograph;
    text-wrap: wrap;
  }
  .chart-takeaways p { font-size: 16px; }
  .evidence-chips span, .dynamic-evidence span { font-size: 11px; }
  .chart-spread { padding: 36px 0 54px; }
  .chart-wheel { width: min(88vw, 390px); }
  .wheel-hint { font-size: 14px; }
  .brief-sheet { padding-top: 34px; }
  .highlight-item p { font-size: 16px; }
  .dynamic-card,
  .dynamic-card:first-child { padding: 26px 0 28px; background: transparent; }
  .dynamic-card:first-child { border-top-width: 1px; }
  .dynamic-card h3,
  .dynamic-card:not(:first-child) h3 { font-size: 23px; }
  .dynamic-card p { font-size: 16px; }
  .domain-section { padding: 52px 20px 60px; }
  .domain-tab { flex-basis: 100%; min-width: 100%; text-align: left; padding-inline: 0; }
  .domain-tab::after { left: 0; right: auto; width: 72px; }
  .domain-read { font-size: 16px; }
  .snapshot-planets { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .snapshot-planets button:nth-child(odd) { padding-right: 16px; }
  .snapshot-planets button:nth-child(even) { padding-left: 16px; }
  .archive-fold > summary { align-items: flex-start; flex-wrap: wrap; }
  .archive-fold > summary span { order: 3; width: 100%; font-size: 13px; }
  .archive-body .ledger-section,
  .archive-body .aspect-section { padding: 44px 0; }
  .reading-invitation { padding: 52px 0 48px; }
  .reading-invitation > span { font-size: 16px; }
  .reading-invitation li { font-size: 15px; }
  .reading-body { padding: 42px 22px 50px; }
  .reading-body h3 { font-size: 23px; }
  .reading-body h4 { font-size: 19px; }
  .reading-body p,
  .reading-body li { font-size: 16px; line-height: 1.9; }
  .base-text p,
  .switch-featured p,
  .switch-item p,
  .tl-body p,
  .adjust-item p,
  .watch-card p { font-size: 16px; }
  .followup-head span { font-size: 21px; }
  .followup-head p,
  .thread-q p,
  .thread-a > div { font-size: 16px; }
  .preset-chip { width: 100%; text-align: left; font-size: 15px; }
  #astro-followup-input { font-size: 16px; }
  #astro-followup-form button { min-height: 48px; font-size: 16px; }
}

/* ================================================================
   完整星盘书 V2 · 从识别到行动的编辑式阅读路径
   ================================================================ */

.reading-core,
.reading-cycles,
.reading-stage {
  max-width: 880px !important;
  margin-bottom: 88px;
}
.reading-body .reading-cycles:last-child,
.reading-body .reading-stage:last-child { margin-bottom: 0; }

.reading-kicker {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 26px;
  font-family: var(--sans);
}

.reading-kicker::after {
  content: "";
  height: 1px;
  flex: 1;
  background: linear-gradient(90deg, rgba(69, 109, 136, 0.30), transparent);
}

.reading-kicker span {
  color: #a34d3f;
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.12em;
}

.reading-kicker b {
  color: #637079;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.18em;
}

.reading-core > h3 {
  display: block;
  margin: 0;
  padding: 0;
  border: 0;
  color: var(--ink);
  font-family: var(--serif);
  font-weight: 500;
  letter-spacing: 0.015em;
}

.reading-core > h3::before { content: none; }

.reading-core > h3 {
  max-width: 21em;
  font-size: clamp(29px, 3.4vw, 42px);
  line-height: 1.48;
}

.reading-core-copy {
  max-width: 68ch;
  margin: 32px 0 0 min(8vw, 72px);
}

.reading-core-copy p {
  margin: 0 0 16px;
  color: #43515a;
  font-size: 17px;
  line-height: 2;
}

.reality-check {
  max-width: 69ch;
  margin: 32px 0 0 min(8vw, 72px);
  padding: 22px 26px 24px;
  border-left: 3px solid rgba(163, 77, 63, 0.72);
  background: rgba(163, 77, 63, 0.045);
}

.reality-check > span,
.cycle-entry small {
  display: block;
  color: #7d6554;
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.10em;
}

.reality-check p {
  margin: 9px 0 0;
  color: #263741;
  font-size: 17px;
  line-height: 1.9;
}

.reading-evidence {
  max-width: 69ch;
  margin: 18px 0 0 min(8vw, 72px);
  border-top: 1px solid rgba(76, 89, 97, 0.14);
  font-family: var(--sans);
}

.reading-evidence summary {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 13px 0;
  color: #7b8589;
  font-size: 13px;
  cursor: pointer;
  list-style: none;
}

.reading-evidence summary::-webkit-details-marker { display: none; }
.reading-evidence summary::after {
  content: "+";
  order: 3;
  margin-left: auto;
  color: #9aa39f;
  font-family: var(--mono);
  font-size: 16px;
}
.reading-evidence[open] summary::after { content: "−"; }
.reading-evidence summary .conf { order: 2; }
.reading-evidence > p {
  margin: 0 0 16px;
  padding-left: 16px;
  border-left: 1px solid rgba(69, 109, 136, 0.24);
  color: #7b8589;
  font-family: var(--sans);
  font-size: 13px;
  line-height: 1.8;
}

.reading-section-lead {
  max-width: 52ch;
  margin: -4px 0 28px;
  color: #68747b;
  font-size: 16px;
  line-height: 1.85;
}

.cycle-entry {
  position: relative;
  padding: 32px 0 38px 72px;
  border-top: 1px solid rgba(76, 89, 97, 0.22);
}

.cycle-entry:last-child { border-bottom: 1px solid rgba(76, 89, 97, 0.22); }

.cycle-entry > header {
  display: flex;
  align-items: baseline;
  gap: 16px;
  margin-bottom: 24px;
}

.cycle-entry > header > span {
  position: absolute;
  left: 0;
  top: 31px;
  color: rgba(69, 109, 136, 0.56);
  font-family: var(--mono);
  font-size: 13px;
  letter-spacing: 0.1em;
}

.cycle-entry h4 {
  margin: 0;
  color: var(--ink);
  font-family: var(--serif);
  font-size: 26px;
  font-weight: 500;
  letter-spacing: 0.04em;
}

.cycle-path {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 28px minmax(0, 1fr);
  gap: 18px;
  align-items: center;
}

.cycle-path > div { min-height: 106px; }
.cycle-path > i {
  color: rgba(69, 109, 136, 0.48);
  font-family: var(--mono);
  font-size: 22px;
  font-style: normal;
  text-align: center;
}

.cycle-path p,
.cycle-balance p,
.cycle-reframe p,
.cycle-protect {
  margin: 8px 0 0;
  color: #42515a;
  font-size: 16px;
  line-height: 1.85;
}

.cycle-protect {
  margin: 18px 0 0;
  padding: 14px 18px;
  background: rgba(69, 109, 136, 0.055);
}
.cycle-protect span {
  margin-right: 10px;
  color: #456d88;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
}

.cycle-balance {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin-top: 24px;
  border-block: 1px solid rgba(76, 89, 97, 0.16);
}
.cycle-balance > div { padding: 20px 24px 22px 0; }
.cycle-balance > div + div {
  padding-left: 24px;
  border-left: 1px solid rgba(76, 89, 97, 0.16);
}
.cycle-balance > div:first-child small { color: #456d88; }
.cycle-balance > div:last-child small { color: #976052; }

.cycle-reframe {
  margin-top: 22px;
  padding-left: 18px;
  border-left: 3px solid rgba(196, 163, 106, 0.62);
}
.cycle-reframe small { color: #8a6d34; }
.cycle-reframe p { color: #263741; font-weight: 600; }
.cycle-entry .reading-evidence { margin-left: 0; }

.reading-stage > h3 {
  display: block;
  max-width: 22em;
  margin: 0;
  padding: 0;
  border: 0;
  color: var(--ink);
  font-family: var(--serif);
  font-size: clamp(27px, 3vw, 38px);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.02em;
}
.reading-stage > h3::before { content: none; }

.stage-time {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin: 22px 0 30px;
  color: #68747b;
  font-family: var(--sans);
  font-size: 14px;
  line-height: 1.7;
}
.stage-time > span,
.stage-window small,
.stage-reality small,
.stage-action small {
  display: block;
  color: #7d6554;
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.10em;
}
.stage-time > span { flex: 0 0 auto; }

.stage-window {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-block: 1px solid rgba(76, 89, 97, 0.20);
}
.stage-window article { padding: 25px 28px 27px 0; }
.stage-window article + article {
  padding-left: 28px;
  border-left: 1px solid rgba(76, 89, 97, 0.16);
}
.stage-window p,
.stage-reality p,
.stage-action p {
  margin: 9px 0 0;
  color: #42515a;
  font-size: 16px;
  line-height: 1.9;
}

.stage-reality {
  margin-top: 26px;
  padding: 20px 22px 22px;
  background: rgba(69, 109, 136, 0.055);
}
.stage-reality small { color: #456d88; }

.stage-action {
  margin-top: 24px;
  padding: 2px 0 2px 20px;
  border-left: 3px solid rgba(196, 163, 106, 0.72);
}
.stage-action small { color: #8a6d34; }
.stage-action p { color: #263741; font-weight: 600; }
.reading-stage .reading-evidence { margin-left: 0; }

.followup-presets .preset-chip {
  display: grid;
  grid-template-columns: 3.2em minmax(0, 1fr);
  flex: 1 1 calc(50% - 8px);
  align-items: start;
  gap: 10px;
  padding: 13px 15px;
  text-align: left;
}
.followup-presets .preset-chip > span {
  color: rgba(196, 163, 106, 0.70);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
}
.followup-presets .preset-chip > b {
  color: inherit;
  font-size: inherit;
  font-weight: 500;
  line-height: 1.55;
}
@media (max-width: 640px) {
  .reading-core,
  .reading-cycles,
  .reading-stage { margin-bottom: 66px; }
  .reading-kicker { margin-bottom: 20px; }
  .reading-core > h3 { font-size: 29px; line-height: 1.5; }
  .reading-core-copy,
  .reality-check,
  .reading-evidence { margin-left: 0; }
  .reading-core-copy { margin-top: 24px; }
  .reading-core-copy p,
  .reality-check p { font-size: 16px; }
  .reality-check { padding: 18px 18px 20px; }
  .cycle-entry { padding: 26px 0 32px 42px; }
  .cycle-entry > header > span { top: 26px; }
  .cycle-entry h4 { font-size: 23px; }
  .cycle-path { grid-template-columns: 1fr; gap: 12px; }
  .cycle-path > div { min-height: 0; }
  .cycle-path > i { transform: rotate(90deg); text-align: left; font-size: 18px; }
  .cycle-balance { grid-template-columns: 1fr; }
  .cycle-balance > div { padding: 18px 0; }
  .cycle-balance > div + div { padding-left: 0; border-left: 0; border-top: 1px solid rgba(76, 89, 97, 0.16); }
  .reading-stage > h3 { font-size: 27px; }
  .stage-time { display: block; margin-top: 18px; }
  .stage-time > span { margin-bottom: 5px; }
  .stage-window { grid-template-columns: 1fr; }
  .stage-window article { padding: 20px 0 22px; }
  .stage-window article + article { padding-left: 0; border-left: 0; border-top: 1px solid rgba(76, 89, 97, 0.16); }
  .stage-reality { padding: 18px; }
  .followup-presets .preset-chip { flex-basis: 100%; }
}

/* 续问延续纸面阅读：浅底深字，不在正文后突然切回暗室。 */
.astro-followup {
  padding: 54px clamp(28px, 6vw, 80px) 66px;
  color: var(--ink);
  border-top: 1px solid rgba(76, 89, 97, 0.18);
}
/* 纸面只铺到内容容器宽度（与上方命书阅读区一致），不再 100vw 全宽平铺；两侧露出整体夜色。 */
.astro-followup::before { background: var(--paper-high); width: 100%; }
/* 续问内容行宽 = 命书正文行宽：同容器、同侧边距、不再另设 880 窄栏。 */
.astro-followup > * { max-width: none; margin-left: 0; margin-right: 0; }

.astro-followup .followup-head span { color: var(--ink); }
.astro-followup .followup-head p { color: #6d787e; }
.astro-followup .thread-q > span {
  background: rgba(69, 109, 136, 0.08);
  color: #456d88;
}
.astro-followup .thread-a > span {
  background: rgba(196, 163, 106, 0.15);
  color: #8a6d34;
}
.astro-followup .thread-q p { color: #263741; }
.astro-followup .thread-a > div { color: #44535b; }
.astro-followup .thread-a > div strong { color: #17344a; }
.astro-followup .thread-a .conf-high { background: rgba(69, 109, 136, 0.08); color: var(--blue); }
.astro-followup .thread-a .conf-mid { background: rgba(196, 163, 106, 0.14); color: #8a6d34; }
.astro-followup .thread-a .conf-low { background: var(--paper-low); color: var(--ink-soft); }
.astro-followup .thread-a.is-error { border-bottom-color: rgba(163, 77, 63, 0.24); }
.astro-followup .thread-recovery { color: #986457; }
.astro-followup .thread-retry {
  border-color: rgba(163, 77, 63, 0.28);
  color: #8d5548;
}
.astro-followup .thread-retry:hover { border-color: rgba(163, 77, 63, 0.52); color: #713d32; }

.astro-followup .preset-chip {
  border-color: rgba(69, 109, 136, 0.16);
  background: rgba(69, 109, 136, 0.035);
  color: #53636c;
}
.astro-followup .preset-chip:hover {
  border-color: rgba(69, 109, 136, 0.38);
  background: rgba(69, 109, 136, 0.065);
  color: #274b63;
}
.astro-followup .followup-presets .preset-chip > span { color: #8a6d34; }

.astro-followup #astro-followup-input {
  border-color: rgba(69, 109, 136, 0.20);
  background: rgba(255, 255, 255, 0.48);
  color: #263741;
}
.astro-followup #astro-followup-input::placeholder { color: #929b9e; }
.astro-followup #astro-followup-input:focus {
  border-color: rgba(69, 109, 136, 0.52);
  box-shadow: 0 0 0 3px rgba(69, 109, 136, 0.06);
}
.astro-followup #astro-followup-form button {
  border-color: rgba(138, 109, 52, 0.38);
  color: #765a28;
}
.astro-followup #astro-followup-form button:hover {
  background: rgba(196, 163, 106, 0.12);
  color: #5f461c;
}
.astro-followup .followup-note { color: #738087; }

.astro-followup .tw-caret {
  background: #a34d3f;
  box-shadow: 0 0 0 1px rgba(163, 77, 63, 0.08);
}
.astro-followup [data-tw="ink"] .tw-caret {
  background: linear-gradient(180deg, rgba(163, 77, 63, 0.16), #a34d3f);
}

@media (max-width: 640px) {
  .astro-followup { padding: 42px 20px 52px; }
}

/* 正式公开页说明：原始 HTML 可抓取，承接“在线星盘查询 / 本命盘 / 星盘分析”。 */
.astro-seo {
  position: relative;
  padding: 108px 24px 116px;
  background: var(--paper-high);
  color: var(--ink);
  border-top: 1px solid rgba(76, 89, 97, 0.16);
}

.astro-seo-inner {
  width: min(1120px, 100%);
  margin: 0 auto;
}

.astro-seo-head {
  display: grid;
  grid-template-columns: minmax(150px, 0.34fr) minmax(0, 1fr);
  gap: 42px;
  align-items: start;
  padding-top: 24px;
  border-top: 1px solid rgba(76, 89, 97, 0.28);
}

.astro-seo-head > p,
.astro-faq > header > p {
  margin: 7px 0 0;
  color: #8a6d34;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.17em;
  text-transform: uppercase;
}

.astro-seo-head h2,
.astro-faq h2 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(32px, 4vw, 52px);
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: -0.025em;
}

.astro-seo-head > div > p {
  max-width: 46em;
  margin: 24px 0 0;
  color: #53616a;
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.95;
}

.astro-seo-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 78px;
  border-top: 1px solid rgba(76, 89, 97, 0.2);
  border-left: 1px solid rgba(76, 89, 97, 0.2);
}

.astro-seo-grid article {
  min-height: 300px;
  padding: 34px 38px 38px;
  border-right: 1px solid rgba(76, 89, 97, 0.2);
  border-bottom: 1px solid rgba(76, 89, 97, 0.2);
}

.astro-seo-grid article > span {
  color: #8a6d34;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.14em;
}

.astro-seo-grid h3 {
  max-width: 15em;
  margin: 40px 0 16px;
  font-family: var(--serif);
  font-size: 25px;
  font-weight: 500;
  line-height: 1.5;
}

.astro-seo-grid p {
  margin: 0;
  color: #5e696f;
  font-family: var(--sans);
  font-size: 14.5px;
  line-height: 1.9;
}

.astro-faq {
  display: grid;
  grid-template-columns: minmax(180px, 0.34fr) minmax(0, 1fr);
  gap: 42px;
  margin-top: 100px;
  padding-top: 24px;
  border-top: 1px solid rgba(76, 89, 97, 0.28);
}

.astro-faq > header > p { margin-bottom: 20px; }
.astro-faq h2 { font-size: clamp(28px, 3.2vw, 42px); }
.astro-faq > div { border-top: 1px solid rgba(76, 89, 97, 0.2); }

.astro-faq details {
  border-bottom: 1px solid rgba(76, 89, 97, 0.2);
}

.astro-faq summary {
  position: relative;
  padding: 24px 44px 24px 0;
  cursor: pointer;
  list-style: none;
  font-family: var(--sans);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.65;
}

.astro-faq summary::-webkit-details-marker { display: none; }
.astro-faq summary::after {
  position: absolute;
  top: 24px;
  right: 4px;
  color: #8a6d34;
  content: "+";
  font-family: var(--mono);
  font-size: 19px;
  font-weight: 400;
}
.astro-faq details[open] summary::after { content: "−"; }

.astro-faq details p {
  max-width: 48em;
  margin: -4px 44px 0 0;
  padding: 0 0 26px;
  color: #5e696f;
  font-family: var(--sans);
  font-size: 14.5px;
  line-height: 1.9;
}

@media (max-width: 720px) {
  .astro-seo { padding: 72px 20px 82px; }
  .astro-seo-head,
  .astro-faq { grid-template-columns: 1fr; gap: 22px; }
  .astro-seo-head h2 { font-size: 33px; line-height: 1.42; }
  .astro-seo-head > div > p { margin-top: 18px; font-size: 15px; }
  .astro-seo-grid { grid-template-columns: 1fr; margin-top: 54px; border-left: 0; }
  .astro-seo-grid article { min-height: 0; padding: 28px 0 32px; border-right: 0; }
  .astro-seo-grid h3 { margin-top: 27px; font-size: 23px; }
  .astro-faq { margin-top: 72px; }
  .astro-faq h2 { font-size: 29px; }
  .astro-faq summary { padding: 21px 38px 21px 0; font-size: 16px; }
  .astro-faq summary::after { top: 21px; }
  .astro-faq details p { margin-right: 24px; font-size: 14.5px; }
}

/* 匿名完整书的短期暂存与同页登录：不离开阅读现场。 */
.reading-draft {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-top: 18px;
  padding: 18px 20px;
  border: 1px solid rgba(196, 163, 106, 0.36);
  background: rgba(196, 163, 106, 0.08);
  color: rgba(239, 242, 239, 0.9);
}
.reading-draft div { display: grid; gap: 5px; }
.reading-draft b { font-family: var(--serif); font-size: 17px; font-weight: 500; }
.reading-draft span { color: rgba(206, 219, 222, 0.68); font-size: 13px; line-height: 1.65; }
.reading-draft button,
.astro-auth-form > button {
  flex: 0 0 auto;
  border: 1px solid rgba(196, 163, 106, 0.56);
  background: transparent;
  color: var(--gold);
  padding: 11px 14px;
  font-size: 13px;
  cursor: pointer;
}
.reading-draft button i,
.astro-auth-form > button i { margin-left: 8px; font-style: normal; }

body.astro-auth-open { overflow: hidden; }
.astro-auth-modal { position: fixed; inset: 0; z-index: 120; display: grid; place-items: center; padding: 20px; }
.astro-auth-backdrop { position: absolute; inset: 0; background: rgba(5, 12, 19, 0.78); backdrop-filter: blur(8px); }
.astro-auth-sheet {
  position: relative;
  width: min(100%, 430px);
  padding: 38px 34px 30px;
  border: 1px solid rgba(197, 218, 226, 0.22);
  background: #0d1a27;
  box-shadow: 0 28px 100px rgba(0, 0, 0, 0.42);
  color: #edf0ed;
}
.astro-auth-close { position: absolute; top: 13px; right: 15px; border: 0; background: transparent; color: rgba(223,230,228,.66); font-size: 28px; line-height: 1; cursor: pointer; }
.astro-auth-sheet > p:first-of-type { margin: 0 0 13px; color: rgba(196,163,106,.8); font: 9px/1.4 var(--mono); letter-spacing: .17em; }
.astro-auth-sheet h2 { margin: 0; font: 500 27px/1.38 var(--serif); letter-spacing: .01em; }
.astro-auth-sheet > span { display: block; margin-top: 12px; color: rgba(206,219,222,.68); font-size: 14px; line-height: 1.7; }
.astro-auth-tabs { display: flex; gap: 19px; margin: 29px 0 19px; border-bottom: 1px solid rgba(197,218,226,.17); }
.astro-auth-tabs button { padding: 0 0 10px; border: 0; border-bottom: 1px solid transparent; margin-bottom: -1px; background: transparent; color: rgba(206,219,222,.58); cursor: pointer; }
.astro-auth-tabs button.is-on { border-bottom-color: var(--gold); color: var(--gold); }
.astro-auth-form { display: grid; gap: 15px; }
.astro-auth-form label { display: grid; gap: 7px; color: rgba(223,230,228,.78); font-size: 13px; }
.astro-auth-form input { width: 100%; min-height: 43px; border: 1px solid rgba(197,218,226,.24); border-radius: 0; background: rgba(255,255,255,.04); color: #edf0ed; padding: 9px 11px; }
.astro-auth-form > button { margin-top: 6px; width: 100%; background: rgba(196,163,106,.1); }
.astro-auth-code { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.astro-auth-code button { border: 1px solid rgba(197,218,226,.24); background: transparent; color: rgba(223,230,228,.74); padding: 0 11px; cursor: pointer; white-space: nowrap; }
.astro-auth-message { margin: 15px 0 0; color: #d9bc80; font-size: 13px; line-height: 1.65; }
.astro-auth-message.is-error { color: #e69b90; }
.astro-auth-sheet > small { display: block; margin-top: 20px; color: rgba(183,199,207,.55); font-size: 11px; line-height: 1.65; }
.astro-auth-sheet > small a { color: rgba(196,163,106,.82); }

@media (max-width: 720px) {
  .reading-draft { align-items: flex-start; flex-direction: column; gap: 14px; padding: 17px; }
  .reading-draft button { width: 100%; }
  .astro-auth-modal { align-items: end; padding: 0; }
  .astro-auth-sheet { width: 100%; padding: 34px 24px calc(28px + env(safe-area-inset-bottom)); border-width: 1px 0 0; }
  .astro-auth-sheet h2 { font-size: 25px; }
}

/* 页尾只留一条安静的查阅入口；展开后仍沿用星图夜色，不再另起一张落地页。 */
.astro-seo {
  padding: 0 24px;
  background: var(--night);
  color: #dfe6e4;
  border-top-color: rgba(197, 218, 226, 0.13);
}

.astro-seo-disclosure > summary {
  min-height: 116px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 28px;
  align-items: center;
  cursor: pointer;
  list-style: none;
}
.astro-seo-disclosure > summary::-webkit-details-marker { display: none; }
.astro-seo-disclosure[open] > summary { border-bottom: 1px solid rgba(197, 218, 226, 0.13); }

.astro-seo-disclosure > summary > span { min-width: 0; }
.astro-seo-disclosure > summary > span > i {
  display: block;
  margin-bottom: 8px;
  color: rgba(196, 163, 106, 0.78);
  font-family: var(--mono);
  font-size: 9.5px;
  font-style: normal;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.astro-seo-disclosure > summary > span > b {
  display: block;
  color: rgba(239, 242, 239, 0.9);
  font-family: var(--serif);
  font-size: 24px;
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.015em;
}

.astro-seo-disclosure > summary > em {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  color: rgba(183, 199, 207, 0.72);
  font-family: var(--sans);
  font-size: 11.5px;
  font-style: normal;
  letter-spacing: 0.08em;
}
.astro-seo-disclosure > summary > em > b { font-weight: 400; }
.astro-seo-disclosure > summary > em > i {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(196, 163, 106, 0.38);
  border-radius: 50%;
  color: var(--gold);
  font-family: var(--sans);
  font-size: 15px;
  font-style: normal;
  transition: transform 180ms ease;
}
.astro-seo-disclosure[open] > summary > em > i { transform: rotate(45deg); }

.astro-seo-content { padding: 54px 0 82px; }
.astro-seo-intro {
  max-width: 48em;
  margin: 0;
  color: rgba(206, 219, 222, 0.7);
  font-family: var(--sans);
  font-size: 15.5px;
  line-height: 1.95;
}

.astro-seo .astro-seo-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 48px;
  border-top-color: rgba(197, 218, 226, 0.13);
  border-left-color: rgba(197, 218, 226, 0.13);
}
.astro-seo .astro-seo-grid article {
  min-height: 244px;
  padding: 28px 30px 32px;
  border-right-color: rgba(197, 218, 226, 0.13);
  border-bottom-color: rgba(197, 218, 226, 0.13);
}
.astro-seo .astro-seo-grid article > span { color: rgba(196, 163, 106, 0.74); }
.astro-seo .astro-seo-grid h3 {
  margin: 27px 0 13px;
  color: rgba(239, 242, 239, 0.9);
  font-size: 21px;
  line-height: 1.5;
}
.astro-seo .astro-seo-grid p {
  color: rgba(183, 199, 207, 0.68);
  font-size: 13.5px;
  line-height: 1.85;
}

.astro-seo .astro-faq {
  grid-template-columns: minmax(180px, 0.34fr) minmax(0, 1fr);
  margin-top: 66px;
  padding-top: 22px;
  border-top-color: rgba(197, 218, 226, 0.13);
}
.astro-seo .astro-faq > header > p { color: rgba(196, 163, 106, 0.74); }
.astro-seo .astro-faq h2 {
  color: rgba(239, 242, 239, 0.9);
  font-size: 27px;
}
.astro-seo .astro-faq > div { border-top-color: rgba(197, 218, 226, 0.13); }
.astro-seo .astro-faq details { border-bottom-color: rgba(197, 218, 226, 0.13); }
.astro-seo .astro-faq summary {
  padding-top: 20px;
  padding-bottom: 20px;
  color: rgba(223, 230, 228, 0.84);
  font-size: 15px;
  font-weight: 500;
}
.astro-seo .astro-faq summary::after { top: 20px; color: rgba(196, 163, 106, 0.78); }
.astro-seo .astro-faq details p {
  color: rgba(183, 199, 207, 0.68);
  font-size: 13.5px;
}

@media (max-width: 720px) {
  .astro-seo { padding: 0 20px; }
  .astro-seo-disclosure > summary { min-height: 102px; gap: 16px; }
  .astro-seo-disclosure > summary > span > i { margin-bottom: 6px; font-size: 8.5px; }
  .astro-seo-disclosure > summary > span > b { font-size: 20px; line-height: 1.45; }
  .astro-seo-disclosure > summary > em > b { display: none; }
  .astro-seo-disclosure > summary > em > i { width: 27px; height: 27px; }
  .astro-seo-content { padding: 34px 0 58px; }
  .astro-seo-intro { font-size: 14px; line-height: 1.9; }
  .astro-seo .astro-seo-grid {
    grid-template-columns: 1fr;
    margin-top: 34px;
    border-left: 0;
  }
  .astro-seo .astro-seo-grid article {
    min-height: 0;
    padding: 24px 0 27px;
    border-right: 0;
  }
  .astro-seo .astro-seo-grid h3 { margin-top: 20px; font-size: 19px; }
  .astro-seo .astro-seo-grid p { font-size: 13.5px; }
  .astro-seo .astro-faq { grid-template-columns: 1fr; gap: 18px; margin-top: 48px; }
  .astro-seo .astro-faq > header { display: flex; align-items: baseline; gap: 16px; }
  .astro-seo .astro-faq > header > p { margin: 0; }
  .astro-seo .astro-faq h2 { font-size: 22px; }
  .astro-seo .astro-faq summary { padding: 18px 36px 18px 0; font-size: 14.5px; }
  .astro-seo .astro-faq summary::after { top: 18px; }
  .astro-seo .astro-faq details p { margin-right: 18px; font-size: 13.5px; }
}

/* 结果末尾：交叉入口——去星盘合盘（编辑体纸面带，非 AI 卡） */
.astro-crosslink {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 20px 40px;
  padding: 46px 48px;
  border-top: 2px solid rgba(138, 109, 52, 0.5);
  background: var(--paper-high);
}
.astro-crosslink > div { max-width: 40em; }
.astro-crosslink p {
  margin: 0 0 10px;
  color: var(--rust);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.astro-crosslink h2 {
  margin: 0 0 10px;
  font-family: var(--serif);
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight: 500;
  color: var(--ink);
}
.astro-crosslink span { color: var(--ink-soft); font-size: 14.5px; line-height: 1.8; }
.astro-crosslink > a {
  flex: none;
  padding: 13px 30px;
  color: #f4f3ed;
  background: var(--night-soft);
  border-radius: 8px;
  text-decoration: none;
  font-size: 15px;
  letter-spacing: 0.06em;
  transition: transform 160ms ease, background 200ms ease;
}
.astro-crosslink > a:hover { background: var(--night); transform: translateX(2px); }
@media (max-width: 640px) { .astro-crosslink { padding: 34px 20px; } }

/* ================================================================
   星盘 / 合盘 P1：可信输入、当前章节与基础可读性
   ================================================================ */
.time-precision {
  min-width: 0;
  margin: 0 0 24px;
  padding: 0;
  border: 0;
}

.time-precision > legend {
  margin-bottom: 10px;
  padding: 0;
  color: var(--ink);
  font-size: 14px;
  font-weight: 600;
}

.time-precision > small,
#birth-time-field > small {
  display: block;
  margin-top: 9px;
  color: #59646a;
  font-family: var(--sans);
  font-size: 12px;
  line-height: 1.6;
}

.precision-options {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.precision-options label {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  min-width: 0;
  min-height: 66px;
  padding: 11px 12px;
  border: 1px solid #b8b9b4;
  background: rgba(255, 255, 255, 0.26);
  cursor: pointer;
  transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease;
}

.precision-options label:has(input:checked) {
  border-color: var(--blue);
  background: rgba(69, 109, 136, 0.08);
  box-shadow: inset 0 0 0 1px var(--blue);
}

.precision-options label:focus-within {
  outline: 2px solid var(--blue);
  outline-offset: 2px;
}

.precision-options input {
  flex: none;
  width: 17px;
  height: 17px;
  margin: 2px 0 0;
  accent-color: var(--blue);
}

.precision-options label > span {
  display: grid !important;
  justify-content: initial !important;
  gap: 3px;
  min-width: 0;
  margin: 0 !important;
  font-size: 14px !important;
}

.precision-options b { font-weight: 600; }
.precision-options small {
  color: #59646a;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.45;
}

.astro-form #birth-time-field:has(input:disabled),
.syn-person .birth-time-field:has(input:disabled) { opacity: 0.46; }

.astro-form input:disabled { cursor: not-allowed; }
.form-heading > span { font-size: 14px; line-height: 1.7; }
.eyebrow,
.beta-mark,
.observatory-index small { font-size: 12px; }
.astro-form label > span i,
.place-field > small,
.form-fineprint { font-size: 12px; }
.place-field > small,
.form-fineprint,
.astro-form input::placeholder,
.astro-form textarea::placeholder { color: #59646a; }

.astro-form .time-precision > .field-error,
.astro-form .place-field > .field-error,
.astro-form #birth-time-field > .field-error,
.astro-form .birth-time-field > .field-error {
  color: #733b33;
  font-weight: 600;
}

.result-time-note {
  position: relative;
  isolation: isolate;
  margin: 0;
  padding: 12px 48px;
  color: #c6d2d4;
  font-size: 14px;
  line-height: 1.65;
}
.result-time-note::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 50%;
  z-index: -1;
  width: 100vw;
  transform: translateX(-50%);
  background: #152331;
  border-top: 1px solid rgba(198, 210, 212, 0.16);
}

.atlas-nav a { position: relative; color: #aabcc1; }
.atlas-nav a.is-current,
.atlas-nav a[aria-current="location"] { color: #f2d79c; }
.atlas-nav a.is-current::after,
.atlas-nav a[aria-current="location"]::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 2px;
  background: var(--gold);
}

.result-masthead span,
.quick-read .section-label i,
.reading-invitation > span,
.reading-invitation li,
.reading-invitation small,
.reading-assurance,
#reading-balance,
.evidence-chips span,
.chart-takeaways article > span { color: #b9c8cc; }

.evidence-chips span,
.dynamic-evidence span,
.section-label i,
.wheel-sheet figcaption,
.highlight-item small,
.snapshot-planets em,
.snapshot-aspects em,
.reading-assurance,
.reading-invitation small,
.astro-result small { font-size: 12px; }

.astro-result .result-masthead > div > p,
.astro-result .reading-invitation > p,
.astro-result .reading-invitation .reading-assurance,
.astro-result #reading-start b,
.astro-result .chart-takeaways article > span,
.astro-result .conf,
.astro-result .dynamic-card header span,
.astro-result .domain-panel span,
.astro-result .domain-panel em,
.astro-result .sect-strip span,
.astro-result .sect-strip i,
.astro-result .pr-meta > *,
.astro-result .ac-pair em,
.astro-result .ac-meter span,
.astro-result .astro-crosslink p { font-size: 12px; }

.quick-read .section-label i,
.dynamics-section .section-label i,
.archive-section > .section-label i,
.domain-section .section-label i,
.chart-spread .section-label i,
.ledger-section .section-label i,
.aspect-section .section-label i { font-size: 12px; }

.dynamics-section .section-label i,
.archive-section > .section-label i,
.domain-section .section-label i,
.chart-spread .section-label i,
.wheel-sheet figcaption,
.highlight-item small,
.dynamic-evidence span,
.snapshot-planets em,
.snapshot-aspects em { color: #59646a; }

#astro-followup-input::placeholder { color: #aabcc1; }

@media (max-width: 720px) {
  .precision-options { grid-template-columns: 1fr; }
  .precision-options label { min-height: 0; }
  .result-time-note { padding-inline: 20px; }
}
