/* ExpectCalc 设计系统 v2 —— Warm Clinical Calm（Google Stitch 改版稿落地）
   来源：stitch_expectcalc_redesign_ui_kit / warm_clinical_calm v1（tokens.json）
   字体全自托管 woff2；正文/正文弱化色对比度全部 ≥ AA 4.5:1 */
@font-face { font-family: 'Inter'; src: url('/assets/fonts/inter-latin-400-normal.woff2') format('woff2'); font-weight: 400; font-display: swap; }
@font-face { font-family: 'Inter'; src: url('/assets/fonts/inter-latin-500-normal.woff2') format('woff2'); font-weight: 500; font-display: swap; }
@font-face { font-family: 'Inter'; src: url('/assets/fonts/inter-latin-600-normal.woff2') format('woff2'); font-weight: 600; font-display: swap; }
@font-face { font-family: 'Inter'; src: url('/assets/fonts/inter-latin-700-normal.woff2') format('woff2'); font-weight: 700; font-display: swap; }
@font-face { font-family: 'Newsreader'; src: url('/assets/fonts/newsreader-latin-600-normal.woff2') format('woff2'); font-weight: 600; font-display: swap; }
@font-face { font-family: 'Newsreader'; src: url('/assets/fonts/newsreader-latin-700-normal.woff2') format('woff2'); font-weight: 700; font-display: swap; }

:root {
  /* Stitch 色板（v1 冷调版，屏幕实出版） */
  --surface: #f2fbfc;
  --surface-low: #ecf5f6;
  --surface-container: #e6f0f1;
  --surface-container-high: #e0eaeb;
  --surface-highest: #dbe4e5;
  --surface-lowest: #ffffff;
  --on-surface: #141d1e;
  --on-surface-variant: #57423b;   /* 6.6:1 on surface ✓ */
  --outline: #8a726a;
  --outline-variant: #dec0b7;
  --primary: #9f3c16;              /* 6.5:1 on white ✓ */
  --primary-hover: #7c2d12;
  --on-primary: #ffffff;
  --primary-fixed: #ffdbcf;
  --on-primary-fixed: #390c00;      /* 14.9:1 ✓ */
  --secondary: #406654;            /* 7.3:1 on white ✓ 链接/强调 */
  --secondary-hover: #315243;
  --secondary-container: #bfe9d3;
  --on-secondary-container: #446a59; /* 5.6:1 on #bfe9d3 ✓ */
  --tertiary: #874f00;             /* 5.9:1 on white ✓ */
  --tertiary-fixed: #ffdcbd;
  --error: #ba1a1a;
  --inverse-surface: #293233;
  --inverse-on-surface: #e9f3f3;
  --inverse-primary: #ffb59c;
  /* 兼容别名（旧 class 引用） */
  --ink: var(--on-surface);
  --ink-soft: var(--on-surface-variant);
  --paper: var(--surface);
  --card: var(--surface-lowest);
  --line: var(--outline-variant);
  --wash: var(--surface-low);
  --primary-soft: var(--primary-fixed);
  --primary-strong: var(--on-primary-fixed);
  --accent: var(--secondary);
  --accent-soft: var(--secondary-container);
  --warn-bg: var(--tertiary-fixed);
  --warn-line: #e0a95f;
  --warn-ink: var(--tertiary);
  --radius: 8px;                    /* Stitch lg */
  --radius-sm: 4px;                 /* Stitch DEFAULT */
  --shadow: 0 1px 2px rgb(20 29 30 / .05), 0 8px 24px -12px rgb(20 29 30 / .16);
  --shadow-lift: 0 2px 4px rgb(20 29 30 / .07), 0 12px 32px -12px rgb(159 60 22 / .22);
  --font-body: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-head: 'Newsreader', ui-serif, Georgia, 'Times New Roman', serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0; background: var(--surface); color: var(--on-surface);
  font-family: var(--font-body); font-size: 16px; line-height: 1.5;
  padding-top: 4.1rem; /* fixed header 高度补偿（Stitch h-20） */
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
h1, h2, h3, h4 { font-family: var(--font-head); color: var(--on-surface); line-height: 1.22; margin: 0 0 .5em; letter-spacing: -.01em; }
h1 { font-size: clamp(2rem, 4.2vw, 2.5rem); font-weight: 600; line-height: 1.12; }
h2 { font-size: clamp(1.4rem, 2.6vw, 1.75rem); font-weight: 600; margin-top: 2.2em; }
h3 { font-size: 1.15rem; font-weight: 600; margin-top: 1.6em; }
h3, h4 { font-family: var(--font-head); }
a { color: var(--secondary); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--secondary-hover); }
p { margin: 0 0 1em; max-width: 46em; }
img { max-width: 100%; height: auto; }
:focus-visible { outline: 3px solid var(--primary); outline-offset: 2px; border-radius: 4px; }

.wrap { max-width: 72rem; margin: 0 auto; padding: 0 1.25rem; }
.narrow { max-width: 50rem; }

/* —— 页眉（Stitch: fixed, blur, h-20） —— */
.site-header {
  background: rgb(242 251 252 / .9); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--outline-variant);
  position: fixed; top: 0; left: 0; right: 0; z-index: 40;
  box-shadow: 0 1px 8px rgb(20 29 30 / .04);
}
.site-header .wrap { display: flex; align-items: center; gap: 1rem; padding-top: .9rem; padding-bottom: .9rem; flex-wrap: wrap; }
.brand { display: flex; align-items: center; gap: .5rem; text-decoration: none; min-height: 44px; }
.brand-name { font-family: var(--font-head); font-weight: 700; font-size: 1.45rem; color: var(--primary); letter-spacing: -.02em; }
.brand-tag { font-size: .78rem; color: var(--on-surface-variant); }
.site-nav { display: flex; gap: .2rem; flex-wrap: wrap; margin-left: auto; }
.site-nav a { text-decoration: none; color: var(--on-surface-variant); font-weight: 500; font-size: .92rem; padding: .45rem .7rem; border-radius: var(--radius-sm); min-height: 44px; display: inline-flex; align-items: center; }
.site-nav a:hover { background: var(--surface-container); color: var(--primary); }
.site-nav a[aria-current] { color: var(--on-primary-fixed); background: var(--primary-fixed); }

/* —— Hero / 信任条 —— */
.hero { background: linear-gradient(160deg, var(--surface-low) 0%, var(--surface) 70%); padding: 3.2rem 0 2.6rem; border-bottom: 1px solid var(--outline-variant); }
.hero p.lede { font-size: 1.125rem; color: var(--on-surface-variant); max-width: 40em; }
.trust-strip { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.2rem; list-style: none; padding: 0; }
.trust-strip li { background: var(--surface-lowest); border: 1px solid var(--outline-variant); border-radius: 999px; padding: .35rem .85rem; font-size: .82rem; color: var(--on-surface-variant); font-weight: 500; }
.hero .btn-row { margin-top: 1.4rem; display: flex; gap: .8rem; flex-wrap: wrap; }

/* —— 卡片与网格 —— */
.grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); margin: 1.4rem 0; }
.card {
  background: var(--surface-lowest); border: 1px solid var(--outline-variant); border-radius: 12px;
  padding: 1.3rem 1.3rem 1.1rem; box-shadow: var(--shadow); display: flex; flex-direction: column;
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.card:hover { border-color: var(--primary); box-shadow: var(--shadow-lift); transform: translateY(-2px); }
.card h3 { margin-top: 0; font-size: 1.15rem; }
.card h3 a { color: var(--on-primary-fixed); text-decoration: none; }
.card h3 a:hover { color: var(--primary); text-decoration: underline; }
.card p { color: var(--on-surface-variant); font-size: .94rem; margin-bottom: .8rem; }
.card .chip { margin-top: auto; align-self: flex-start; }
.chip { display: inline-block; background: var(--secondary-container); color: var(--on-secondary-container); font-size: .75rem; font-weight: 600; border-radius: 999px; padding: .18rem .65rem; letter-spacing: .02em; }
.chip.rose { background: var(--primary-fixed); color: var(--on-primary-fixed); }

/* —— 计算器 —— */
.tool-layout { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 1.6rem; align-items: start; margin-top: 1.6rem; }
@media (max-width: 56rem) { .tool-layout { grid-template-columns: 1fr; } }
.panel { background: var(--surface-lowest); border: 1px solid var(--outline-variant); border-radius: var(--radius); padding: 1.4rem; box-shadow: var(--shadow); }
.panel h2 { margin-top: 0; }
.field { margin-bottom: 1rem; }
.field label { display: block; font-weight: 600; font-size: .9rem; margin-bottom: .3rem; color: var(--on-surface); }
.field .hint { font-size: .8rem; color: var(--on-surface-variant); font-weight: 400; margin-top: .25rem; }
.field input[type="date"], .field input[type="number"], .field select {
  width: 100%; padding: .6rem .7rem; font: inherit; font-size: .95rem; min-height: 44px;
  border: 1.5px solid var(--outline-variant); border-radius: var(--radius); background: var(--surface-lowest); color: var(--on-surface);
}
.field input:focus, .field select:focus { border-color: var(--primary); outline: none; box-shadow: 0 0 0 3px var(--primary-fixed); }
fieldset { border: 1px solid var(--outline-variant); border-radius: var(--radius); margin: 0 0 1rem; padding: .8rem 1rem; }
legend { font-size: .85rem; font-weight: 600; color: var(--on-surface-variant); padding: 0 .4rem; }
.btn { display: inline-block; background: var(--primary); color: var(--on-primary); border: none; border-radius: var(--radius); font: inherit; font-weight: 600; font-size: 1rem; padding: .75rem 1.6rem; cursor: pointer; }
.btn:hover { background: var(--primary-hover); }
.btn.ghost { background: transparent; color: var(--primary); border: 1.5px solid var(--primary); }
.btn.ghost:hover { background: var(--primary-fixed); }
.result { background: var(--surface-lowest); border: 1.5px solid var(--primary); border-radius: var(--radius); padding: 1.2rem 1.4rem; margin-top: 1.2rem; box-shadow: var(--shadow); }
.result[hidden] { display: none; }
.result .big { font-family: var(--font-head); font-size: 1.55rem; font-weight: 700; color: var(--on-primary-fixed); margin: 0 0 .3rem; }
.result dl { display: grid; grid-template-columns: auto 1fr; gap: .3rem 1rem; margin: .6rem 0 0; font-size: .93rem; }
.result dt { color: var(--on-surface-variant); }
.result dd { margin: 0; font-weight: 600; }
table.data { width: 100%; border-collapse: collapse; font-size: .92rem; margin: 1rem 0; background: var(--surface-lowest); display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
table.data caption { text-align: left; font-weight: 600; margin-bottom: .5rem; color: var(--on-surface); }
table.data th, table.data td { border: 1px solid var(--outline-variant); padding: .55rem .7rem; text-align: left; vertical-align: top; }
table.data th { background: var(--surface-low); font-weight: 600; color: var(--on-surface); }
table.data tr:nth-child(even) td { background: var(--surface-low); }

/* —— 要点块 / callout / FAQ —— */
.takeaways { background: var(--surface-lowest); border: 1px solid var(--outline-variant); border-left: 5px solid var(--primary); border-radius: var(--radius); padding: 1.1rem 1.3rem; margin: 1.4rem 0; }
.takeaways h2, .takeaways h3 { margin-top: 0; }
.takeaways ul { margin: .4rem 0 0; padding-left: 1.2rem; }
.takeaways li { margin-bottom: .35rem; }
.callout { background: var(--warn-bg); border: 1px solid var(--warn-line); border-radius: var(--radius); padding: 1rem 1.2rem; margin: 1.4rem 0; font-size: .95rem; }
.callout strong { color: var(--warn-ink); }
.faq details { border: 1px solid var(--outline-variant); border-radius: var(--radius); background: var(--surface-lowest); margin-bottom: .7rem; padding: 0; }
.faq summary { cursor: pointer; font-weight: 600; padding: .85rem 1.1rem; list-style: none; display: flex; justify-content: space-between; gap: 1rem; }
.faq summary::after { content: '+'; color: var(--primary); font-weight: 700; font-size: 1.1rem; }
.faq details[open] summary::after { content: '–'; }
.faq details[open] summary { border-bottom: 1px solid var(--outline-variant); }
.faq .a { padding: .9rem 1.1rem 1.1rem; color: var(--on-surface-variant); }
.faq .a p:last-child { margin-bottom: 0; }

/* —— byline / 页脚 / 杂项 —— */
.byline { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; font-size: .85rem; color: var(--on-surface-variant); margin: 1rem 0 1.6rem; }
.byline .avatar { width: 2.4rem; height: 2.4rem; border-radius: 50%; background: var(--primary-fixed); color: var(--on-primary-fixed); display: grid; place-items: center; font-weight: 700; font-family: var(--font-head); }
.breadcrumb { font-size: .82rem; color: var(--on-surface-variant); margin: 1.1rem 0 0; }
.breadcrumb ol { list-style: none; display: flex; gap: .4rem; padding: 0; margin: 0; flex-wrap: wrap; }
.breadcrumb li + li::before { content: '›'; margin-right: .4rem; color: var(--outline); }
main { padding-bottom: 3rem; }
.site-footer { background: var(--surface-low); color: var(--on-surface); margin-top: 2rem; padding: 2.2rem 0; font-size: .88rem; }
.site-footer a { color: var(--secondary); }
.site-footer .cols { display: grid; gap: 1.4rem; grid-template-columns: 2fr 1fr 1fr; }
@media (max-width: 48rem) { .site-footer .cols { grid-template-columns: 1fr; } }
.site-footer h2 { color: var(--on-surface); font-size: 1.05rem; font-family: var(--font-body); font-weight: 600; margin-top: 0; }
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer li { margin-bottom: .4rem; }
.disclaimer { border-top: 1px solid var(--outline-variant); margin-top: 1.6rem; padding-top: 1.2rem; font-size: .8rem; color: var(--on-surface-variant); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.backtop { position: fixed; right: 1rem; bottom: 1rem; background: var(--surface-lowest); border: 1px solid var(--outline-variant); border-radius: 999px; padding: .5rem .9rem; text-decoration: none; color: var(--primary); font-weight: 600; font-size: .85rem; box-shadow: var(--shadow); min-height: 44px; display: inline-flex; align-items: center; }
@media print {
  .site-header, .site-footer, .backtop, .tool-layout .panel:first-child { display: none; }
  body { background: #fff; font-size: 12pt; }
  .card, .panel, .result { box-shadow: none; border: 1px solid #999; }
}
