/* YesSir — 下单 / 付款 / 报告页样式。复用 styles.css 的设计令牌。
   功能页(order/pay/report)按 zip yessir 公文档案视觉:暖纸+公文红+楷体+复古纸纹。 */

/* 自托管楷体(subset)。Ma Shan Zheng 手写在介绍页 system.css 已注册,这里仅补 app 页用的楷体。 */
@font-face{font-family:'LXGW WenKai TC';font-weight:400;font-display:swap;src:url('fonts/lxgw-subset.woff2') format('woff2');}

/* ===== zip yessir 视觉皮 ===== */
.app-body, .dossier-body {
  --paper:     #f4ebd9;
  --paper-2:   #ece2c8;
  --paper-3:   #e2d8be;
  --paper-deep:#ece2c8;
  --ink:       #1a1612;
  --ink-soft:  #4a3c2e;
  --muted:     #7a6b53;
  --red:       #c8102e;
  --red-deep:  #8b0a1e;
  --red-soft:  rgba(200,16,46,0.08);
  --gold:      #b8892e;
  --line:      rgba(26,22,18,0.18);
  --line-2:    rgba(26,22,18,0.32);
  --line-soft: rgba(26,22,18,0.08);
  --card:      rgba(255, 250, 241, 0.86);
  --kai:       'LXGW WenKai TC', 'Kaiti SC', serif;

  background-color: var(--paper);
  background-image:
    radial-gradient(circle at 50% 50%, rgba(120,80,30,0.06) 0.5px, transparent 0.7px),
    repeating-linear-gradient(0deg, transparent 0 38px, rgba(200,16,46,0.03) 38px 39px);
  background-size: 24px 24px, 100% 100%;
  font-family: "Noto Serif SC", "Songti SC", serif;
}
/* 头部毛玻璃 paper 对齐新色 */
.app-body .site-header, .dossier-body .site-header {
  background: rgba(244, 235, 217, 0.88);
}
/* 楷体引文/角色话术 */
.dz-perso-ing, .dz-perso-sub, .dz-q-quote, .dz-quote, .dz-blk .quote {
  font-family: var(--kai);
}

/* ---- 下单 ---- */
.order-shell { display: grid; grid-template-columns: 1fr 0.95fr; gap: clamp(28px, 4vw, 64px); align-items: start; }
.order-intro h1 { margin: 10px 0 18px; }
.order-intro .summary { color: var(--ink-soft); font-size: 16px; line-height: 1.7; }
.order-points { list-style: none; padding: 0; margin: 22px 0 0; display: grid; gap: 12px; }
.order-points li { position: relative; padding-left: 22px; color: var(--ink-soft); font-size: 14px; line-height: 1.6; }
.order-points li::before { content: "—"; position: absolute; left: 0; color: var(--red); }
.order-points b { color: var(--red-deep); }
.order-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: clamp(20px, 2.4vw, 32px); display: grid; gap: 18px; box-shadow: 0 18px 48px rgba(127,29,29,0.08); }
.field { display: grid; gap: 7px; }
.field > span { font-size: 14px; font-weight: 600; color: var(--ink); }
.field > span em { font-weight: 400; color: var(--muted); font-style: normal; font-size: 12px; }
.field input { width: 100%; padding: 13px 14px; border: 1px solid var(--line); border-radius: 10px; background: rgba(255,255,255,0.7); font: inherit; color: var(--ink); }
.field input:focus { outline: none; border-color: var(--red); box-shadow: 0 0 0 3px rgba(180,35,24,0.12); }
.field small { color: var(--muted); font-size: 12px; line-height: 1.5; }
.form-error { color: var(--red-deep); font-size: 13px; margin: 0; }
.quote-note { font-size: 12px; color: var(--muted); line-height: 1.5; }

/* 档位选择卡 */
.tier-field > span { font-size: 14px; font-weight: 600; color: var(--ink); display: block; margin-bottom: 4px; }
.tier-grid { display: grid; gap: 10px; }
.tier-card { position: relative; display: block; border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px 14px 44px; cursor: pointer; transition: border-color .15s, box-shadow .15s, background .15s; }
.tier-card:hover { border-color: var(--red); }
.tier-card input { position: absolute; left: 16px; top: 18px; accent-color: var(--red); }
.tier-card.sel { border-color: var(--red); background: rgba(180,35,24,0.04); box-shadow: 0 0 0 3px rgba(180,35,24,0.1); }
.tier-card .tc-top { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.tier-card .tc-label { font-weight: 700; color: var(--ink); }
.tier-card .tc-price { color: var(--red-deep); font-weight: 800; font-size: 20px; white-space: nowrap; }
.tier-card .tc-blurb { color: var(--muted); font-size: 13px; line-height: 1.5; margin: 4px 0 0; }
.tier-card .tc-best { position: absolute; top: -9px; right: 14px; background: var(--red); color: #fff7eb; font-size: 11px; padding: 2px 8px; border-radius: 4px; }

/* ---- 付款 ---- */
.pay-shell { max-width: 560px; }
.pay-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: clamp(24px, 3vw, 40px); box-shadow: 0 18px 48px rgba(127,29,29,0.08); }
.pay-card h1 { margin: 8px 0 22px; }
.pay-meta { display: grid; gap: 10px; margin: 0 0 24px; }
.pay-meta > div { display: flex; justify-content: space-between; align-items: baseline; border-bottom: 1px dotted var(--line); padding-bottom: 10px; }
.pay-meta dt { color: var(--muted); font-size: 13px; margin: 0; }
.pay-meta dd { margin: 0; font-weight: 600; text-align: right; max-width: 70%; }
.pay-meta .price dd { color: var(--red-deep); font-size: 24px; }
.qr-wrap { text-align: center; margin: 0 0 22px; }
.qr-wrap img { width: 220px; height: 220px; object-fit: contain; border: 1px solid var(--line); border-radius: 12px; background: #fff; padding: 8px; }
.qr-hint { font-size: 13px; color: var(--ink-soft); line-height: 1.7; margin: 14px 0 0; }
.qr-hint strong { color: var(--red-deep); }
.pay-status { display: flex; align-items: center; gap: 10px; justify-content: center; padding: 12px; background: rgba(180,35,24,0.05); border-radius: 10px; font-size: 14px; color: var(--ink-soft); }
.pay-status .dot { width: 9px; height: 9px; border-radius: 50%; background: var(--vermillion); animation: pulse 1.4s infinite; }
@keyframes pulse { 0%,100% { opacity: 0.3; } 50% { opacity: 1; } }
#go-report { margin-top: 16px; width: 100%; }
.pay-foot { font-size: 12px; color: var(--muted); line-height: 1.7; margin: 20px 0 0; text-align: center; }

/* ============================================================
   报告 — 素白公文 / 智库内参
   ============================================================ */
:root { --dz-ink: #1d1c1a; --dz-soft: #4a4641; --dz-faint: #8a8276; --dz-line: #e3ddd2; --dz-red: #9e2a1f; }
.dossier-body { background: #fff; color: var(--dz-ink); }
.dossier { width: min(100% - 40px, 800px); margin: 0 auto; padding: 0 0 90px;
  font-family: "Noto Serif SC", "Songti SC", "STSong", "SimSun", serif; }
.dossier-loading, .dz-msg { text-align: center; padding: 90px 20px; color: var(--dz-faint); }
.dz-msg h1 { font-size: clamp(24px, 5vw, 34px); margin-bottom: 14px; color: var(--dz-ink); }
.dz-msg .dz-gate { display: grid; gap: 12px; max-width: 340px; margin: 22px auto; }
.dz-msg .dz-gate input { padding: 12px 14px; border: 1px solid var(--dz-line); border-radius: 8px; font: inherit; }
.dz-note { font-size: 13px; color: var(--dz-faint); }
.dz-back a { color: var(--dz-red); font-weight: 600; }

/* 封面 */
.dz-cover { margin: 36px 0 0; border: 1px solid var(--dz-ink); }
.dz-cover-band { display: flex; justify-content: space-between; align-items: center; padding: 9px 20px; background: var(--dz-ink); color: #fff; font-size: 12px; letter-spacing: 0.18em; }
.dz-confidential { border: 1px solid rgba(255,255,255,0.55); padding: 2px 9px; letter-spacing: 0.22em; }
.dz-cover-body { padding: clamp(30px, 5vw, 56px) clamp(24px, 5vw, 52px); }
.dz-kicker { color: var(--dz-red); font-size: 12px; letter-spacing: 0.28em; margin: 0 0 16px; }
.dz-title { font-size: clamp(22px, 3.6vw, 32px); line-height: 1.35; margin: 0; font-weight: 700; }
.dz-rule { height: 2px; background: var(--dz-red); width: 64px; margin: 22px 0; }
.dz-meta { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px 32px; margin: 0; }
.dz-meta dt { font-size: 11px; color: var(--dz-faint); letter-spacing: 0.1em; margin-bottom: 3px; }
.dz-meta dd { margin: 0; font-weight: 700; font-size: 15px; }
.dz-seal { margin-top: 26px; display: inline-block; border: 1.5px solid var(--dz-red); color: var(--dz-red); padding: 7px 16px; font-size: 13px; letter-spacing: 0.08em; border-radius: 3px; transform: rotate(-1.5deg); }

/* 目录 */
.dz-body { margin-top: 6px; }
.dz-toc { border: 1px solid var(--dz-line); padding: 22px 26px; margin: 30px 0; }
.dz-toc h2 { font-size: 14px; letter-spacing: 0.2em; margin: 0 0 14px; color: var(--dz-faint); font-weight: 600; }
.dz-toc-list { list-style: none; margin: 0; padding: 0; }
.dz-toc-list li { padding: 7px 0; border-bottom: 1px dotted var(--dz-line); font-size: 15px; }
.dz-toc-list li:last-child { border-bottom: 0; }
.dz-toc-list li span { display: inline-block; width: 28px; color: var(--dz-red); font-weight: 700; }
.dz-toc-list em { color: var(--dz-faint); font-style: normal; font-size: 13px; }

/* 章节 */
.dz-sec { margin: 38px 0; }
.dz-h { font-size: clamp(18px, 3vw, 23px); border-bottom: 2px solid var(--dz-ink); padding-bottom: 9px; margin: 0 0 22px; display: flex; align-items: baseline; gap: 12px; }
.dz-h em { font-size: 14px; color: var(--dz-faint); font-style: normal; font-weight: 400; }
.dz-num { display: inline-flex; min-width: 30px; justify-content: center; color: var(--dz-red); font-weight: 700; border-right: 1px solid var(--dz-line); padding-right: 12px; }
.dz-blk { margin: 0 0 24px; }
.dz-blk h3 { font-size: 16px; margin: 0 0 9px; color: var(--dz-ink); font-weight: 700; }
.dz-blk h3 em { color: var(--dz-faint); font-size: 13px; font-weight: 400; font-style: normal; }
.dz-blk p { line-height: 1.95; color: var(--dz-soft); margin: 0 0 10px; text-align: justify; }

.dz-acts { list-style: none; padding: 0; margin: 0; display: grid; gap: 15px; }
.dz-acts li { border-left: 2px solid var(--dz-line); padding-left: 15px; }
.dz-act-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 7px; }
.dz-act-h b { color: var(--dz-ink); }
.dz-date { color: var(--dz-faint); font-size: 12px; margin-left: auto; }
.dz-ref { color: var(--dz-red); font-size: 11px; font-weight: 700; }
.dz-stale { border: 1px solid var(--dz-line); color: var(--dz-faint); font-size: 11px; padding: 1px 7px; border-radius: 3px; }
.dz-kw { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.dz-kw span { border: 1px solid var(--dz-line); padding: 3px 11px; font-size: 13px; color: var(--dz-soft); border-radius: 3px; }

/* 预测题 */
.dz-q { border: 1px solid var(--dz-line); border-radius: 4px; padding: 20px 22px; margin: 0 0 16px; }
.dz-q-h { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
.dz-q-no { font-size: 20px; font-weight: 800; color: var(--dz-line); }
.dz-tag { display: inline-block; border: 1px solid var(--dz-red); color: var(--dz-red); font-size: 11px; padding: 1px 9px; border-radius: 3px; letter-spacing: 0.05em; }
.dz-q-text { font-size: 16px; font-weight: 700; color: var(--dz-ink); margin: 0 0 8px; line-height: 1.55; }
.dz-q-why { font-size: 13px; color: var(--dz-faint); margin: 0 0 12px; }
.dz-q-script { background: #faf8f4; border: 1px solid var(--dz-line); border-radius: 4px; padding: 16px 18px; }
.dz-q-script h4 { font-size: 12px; letter-spacing: 0.12em; color: var(--dz-red); margin: 0 0 10px; }
.dz-q-script p { line-height: 2; color: var(--dz-ink); margin: 0 0 10px; text-align: justify; }
.dz-q-script p:last-child { margin-bottom: 0; }
.dz-q-scoring { font-size: 12px; color: var(--dz-faint); margin: 0 0 10px; padding: 6px 10px; background: #f5f2ec; border-radius: 4px; }
.dz-q-mine { color: #a4452b; font-size: 13px; margin: 12px 0 0; }
.dz-q-bonus { color: var(--dz-red); font-size: 13px; margin: 6px 0 0; }
.dz-q-followup { color: var(--dz-soft); font-size: 13px; margin: 6px 0 0; padding-left: 10px; border-left: 2px solid var(--dz-line); }

.dz-qlist { list-style: none; counter-reset: q; margin: 0; padding: 0; }
.dz-qli { counter-increment: q; position: relative; padding: 14px 0 14px 44px; border-bottom: 1px solid var(--dz-line); }
.dz-qli:last-child { border-bottom: 0; }
.dz-qli::before { content: counter(q, decimal-leading-zero); position: absolute; left: 0; top: 14px; font-weight: 800; color: var(--dz-line); font-size: 18px; }
.dz-qli .dz-tag { margin-right: 8px; vertical-align: 2px; }
.dz-qli-t { font-weight: 700; color: var(--dz-ink); line-height: 1.6; }
.dz-qli .dz-q-why { display: block; font-size: 13px; color: var(--dz-faint); margin-top: 5px; }
.dz-upsell { border: 1px dashed var(--dz-red); border-radius: 6px; padding: 20px 22px; text-align: center; color: var(--dz-soft); }
.dz-upsell b { color: var(--dz-red); }
.dz-paygate { margin: 32px 0; text-align: center; border: 1px dashed var(--dz-red); border-radius: 6px; padding: 28px; }
.dz-paygate p { color: var(--dz-soft); margin: 0 0 16px; line-height: 1.7; }

.dz-sample-note { background: #fcf6e8; border: 1px solid #e6cf9a; color: #6b5320; border-radius: 8px; padding: 12px 16px; margin: 22px 0 0; font-size: 13px; line-height: 1.7; }
.dz-srclist { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.dz-srclist li { font-size: 13px; line-height: 1.5; }
.dz-srclist a { color: var(--dz-red); word-break: break-all; }
.dz-srclist .dz-date { display: block; color: var(--dz-faint); font-size: 12px; margin-top: 2px; }
.dz-refs ol { padding-left: 22px; }
.dz-refs li { margin: 0 0 12px; font-size: 13px; line-height: 1.6; color: var(--dz-soft); }
.dz-refs a { color: var(--dz-red); word-break: break-all; }

/* 个性化定制面板 */
.dz-perso { margin: 40px 0 0; border: 1px solid var(--dz-red); border-radius: 6px; padding: clamp(22px, 3vw, 32px); background: #fcf9f6; }
.dz-h-perso { font-size: 19px; margin: 0 0 8px; color: var(--dz-ink); display: flex; align-items: center; gap: 10px; }
.dz-perso-sub { color: var(--dz-soft); line-height: 1.7; margin: 0 0 18px; font-size: 14px; }
.dz-perso-ing { display: flex; align-items: center; gap: 10px; color: var(--dz-soft); font-size: 14px; }
.dz-perso-ing .dot { width: 9px; height: 9px; border-radius: 50%; background: var(--dz-red); animation: pulse 1.4s infinite; flex: none; }
.dz-perso-form { display: grid; gap: 14px; }
.dz-perso-form label { display: grid; gap: 5px; }
.dz-perso-form label span { font-size: 13px; font-weight: 700; color: var(--dz-ink); }
.dz-perso-form textarea { width: 100%; border: 1px solid var(--dz-line); border-radius: 8px; padding: 10px 12px; font: inherit; line-height: 1.6; color: var(--dz-ink); resize: vertical; background: #fff; }
.dz-perso-form textarea:focus { outline: none; border-color: var(--dz-red); box-shadow: 0 0 0 3px rgba(158,42,31,0.1); }
.dz-perso-tag { display: inline-block; background: var(--dz-red); color: #fff; font-size: 11px; padding: 1px 9px; border-radius: 3px; letter-spacing: 0.04em; vertical-align: 2px; }
.dz-foot { margin-top: 50px; border-top: 1px solid var(--dz-line); padding-top: 22px; text-align: center; font-size: 12px; color: var(--dz-faint); line-height: 1.8; }
.dz-print { margin-top: 16px; }

@media (max-width: 760px) {
  .order-shell { grid-template-columns: 1fr; }
  .dz-meta { grid-template-columns: 1fr; }
}

/* 打印 / 导出 PDF */
@page { margin: 18mm 16mm; }
@media print {
  .dossier-body { background: #fff; }
  .dossier { width: 100%; padding: 0; }
  .dz-paygate, .dz-print, .dz-upsell, .dz-perso { display: none; }
  .dz-cover { page-break-after: always; margin-top: 0; }
  .dz-sec { page-break-before: auto; }
  .dz-sec > .dz-h { page-break-after: avoid; }
  .dz-q, .dz-blk, .dz-acts li { page-break-inside: avoid; }
  .dz-seal { transform: none; }
  a { color: var(--dz-ink); text-decoration: none; }
}
