/* ODYSSEY — 航海 + 纸本。克制、留白、宽字距小标签。 */
:root,.theme-light{ /* .theme-light/.theme-dark：share.js 的取色探针，不翻转整页也能读另一套色 */
  --bg:#f4f1ea; --ink:#1f2328; --mute:#8a8577; --rule:#dcd6c8; --accent:#1d3a5f; --brass:#b08d57;
  /* 涨跌：港股习惯「绿涨红跌」，低饱和。只在这里定义，改两行即可换成红涨绿跌 */
  --up:#3f7a55; --down:#a84a3f;
  --ink-2:#4a4d50; --wash:rgba(29,58,95,.045); --tip:#fbfaf6;
  --grain-blend:multiply; --grain-opacity:.28;
  --col:680px; --wide:960px; --gut:16px;
  --serif:'Noto Serif SC','Songti SC','STSong','SimSun',serif;
  --display:'Cormorant Garamond','Cormorant','Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif;
  --mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  color-scheme:light;
}
:root.dark,.theme-dark{
  --bg:#0f1620; --ink:#d8d4ca; --mute:#7d8691; --rule:#243040; --accent:#7fa7d1; --brass:#c4a274;
  --up:#6fae84; --down:#d27b6e;
  --ink-2:#aeb2b3; --wash:rgba(127,167,209,.06); --tip:#16202c;
  --grain-blend:overlay; --grain-opacity:.12;
  color-scheme:dark;
}
@media (min-width:720px){ :root{ --gut:28px; } }

*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--serif);font-size:16px;line-height:1.75;
  -webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;
  overflow-x:clip;font-variant-numeric:tabular-nums lining-nums;
  transition:background-color .3s ease,color .3s ease;
}
body::before{ /* 纸纹 */
  content:"";position:fixed;inset:0;pointer-events:none;z-index:100;
  opacity:var(--grain-opacity);mix-blend-mode:var(--grain-blend);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.56 0 0 0 0 0.53 0 0 0 0 0.47 0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
a{color:inherit;text-decoration-color:var(--rule);text-underline-offset:.25em;transition:color .2s,text-decoration-color .2s;}
a:hover{color:var(--accent);text-decoration-color:currentColor;}
:focus-visible{outline:1px solid var(--accent);outline-offset:3px;}
::selection{background:var(--accent);color:var(--bg);}
.skip{position:absolute;left:-999px;top:8px;}
.skip:focus{left:var(--gut);z-index:200;background:var(--bg);padding:4px 10px;}

.wrap{width:100%;max-width:calc(var(--col) + 2*var(--gut));margin:0 auto;padding:0 var(--gut);}
.wrap.wide{max-width:calc(var(--wide) + 2*var(--gut));}

/* 宽字距小标签 */
.label,.coord,.sec-head .en,.f-l,.stats dt,.crumb,.cover,.legend,.tab,.card .code,.card-foot,.tags .tag,.post-nav .label,.nav a,.theme-toggle{
  font-size:12px;letter-spacing:.25em;color:var(--mute);font-weight:400;
}

/* ---------------- 页眉 ---------------- */
.site-head{position:relative;z-index:10;}
.head-in{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:calc(env(safe-area-inset-top) + 18px);padding-bottom:18px;}
.mark{font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:.32em;text-decoration:none;color:var(--ink);white-space:nowrap;}
.mark span,.wordmark span{color:var(--brass);}
.nav{display:flex;align-items:center;gap:2px;flex-wrap:wrap;justify-content:flex-end;}
.nav a{text-decoration:none;padding:8px 7px;letter-spacing:.2em;}
.nav a[aria-current]{color:var(--ink);}
.nav a:hover{color:var(--accent);}
.theme-toggle{font-family:inherit;background:none;border:0;cursor:pointer;padding:8px 2px 8px 10px;letter-spacing:.2em;}
.theme-toggle:hover{color:var(--accent);}
@media (max-width:420px){ .nav a{padding:8px 5px;letter-spacing:.12em;} .mark{letter-spacing:.24em;font-size:16px;} }

/* ---------------- Hero ---------------- */
.hero{position:relative;padding:clamp(56px,13vh,140px) 0 clamp(96px,16vh,170px);overflow:hidden;}
.horizon{position:absolute;left:0;right:0;bottom:0;height:clamp(110px,22vh,200px);opacity:0;transition:opacity 1.2s ease;pointer-events:none;}
.horizon.on{opacity:1;}
.horizon svg{display:block;}
.hz-line{fill:none;stroke:var(--accent);stroke-width:1;opacity:.32;vector-effect:non-scaling-stroke;}
.hz-stop-a{stop-color:var(--accent);stop-opacity:.05;}
.hz-stop-b{stop-color:var(--accent);stop-opacity:0;}
.hero-in{position:relative;}
.coord{margin:0 0 30px;color:var(--brass);letter-spacing:.3em;text-transform:uppercase;font-size:11px;}
.wordmark{
  margin:0;font-family:var(--display);font-weight:500;line-height:.95;
  font-size:clamp(50px,13.5vw,128px);letter-spacing:.14em;margin-right:-.14em;
}
.tagline{margin:18px 0 0;font-family:var(--display);font-style:italic;font-size:clamp(19px,2.6vw,25px);color:var(--ink-2);letter-spacing:.02em;}
.brass-rule{display:block;width:44px;height:1px;background:var(--brass);margin:38px 0 30px;}
.motto{margin:0;font-size:clamp(19px,2.4vw,23px);font-weight:600;letter-spacing:.12em;line-height:1.6;}
.creed{margin:14px 0 0;max-width:30em;color:var(--ink-2);letter-spacing:.06em;line-height:2;}

/* ---------------- 分节 ---------------- */
.sec{padding-top:clamp(56px,9vw,96px);}
.sec-head{display:flex;align-items:baseline;gap:14px;padding-bottom:14px;border-bottom:1px solid var(--rule);margin-bottom:22px;scroll-margin-top:24px;}
.sec-head .no{font-family:var(--display);font-size:22px;color:var(--brass);min-width:1.2em;letter-spacing:.05em;}
.sec-head h2{margin:0;font-size:19px;font-weight:600;letter-spacing:.2em;white-space:nowrap;}
@media (max-width:480px){ .sec-head .en{display:none;} }
.sec-head .en{margin-left:auto;text-transform:uppercase;letter-spacing:.28em;font-size:11px;white-space:nowrap;}
.sec-lede{margin:0 0 26px;color:var(--ink-2);max-width:38em;letter-spacing:.04em;font-size:15px;line-height:1.95;}
.more{margin:22px 0 0;font-size:14px;letter-spacing:.15em;}
.more a{text-decoration:none;color:var(--mute);}
.more a:hover{color:var(--accent);}
.empty-note{color:var(--mute);letter-spacing:.1em;}

/* ---------------- 航海图卡片（账簿格） ---------------- */
.watch-grid{display:grid;grid-template-columns:1fr;border-top:1px solid var(--rule);border-left:1px solid var(--rule);min-height:200px;}
@media (min-width:600px){ .watch-grid{grid-template-columns:1fr 1fr;} }
@media (min-width:900px){ .watch-grid{grid-template-columns:1fr 1fr 1fr;} }
.card{
  display:flex;flex-direction:column;gap:6px;padding:20px 20px 16px;min-width:0;
  border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);
  text-decoration:none;color:var(--ink);transition:background-color .25s;
}
a.card:hover{background:var(--wash);color:var(--ink);}
.card-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;}
.card .code{color:var(--ink);letter-spacing:.2em;}
.card .name{margin:0;font-size:14px;color:var(--ink-2);line-height:1.5;min-height:3em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;letter-spacing:.02em;}
.px{margin:4px 0 0;display:flex;align-items:baseline;gap:8px;}
.px .num{font-size:30px;font-weight:600;letter-spacing:.01em;line-height:1.1;}
.px .cur{font-size:11px;letter-spacing:.2em;color:var(--mute);}
.card-spark{height:42px;margin:8px 0 6px;}
.card-foot{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;letter-spacing:.08em;}
.card-foot .per-l{letter-spacing:.12em;}
.card-foot .asof{color:var(--mute);}
.card.na .name{color:var(--mute);min-height:0;}
.na-note{margin:0;font-size:13px;color:var(--mute);line-height:1.7;}
.card.note{justify-content:flex-end;color:var(--mute);font-size:13px;line-height:1.8;letter-spacing:.06em;}
.card.note p{margin:0;}
.card.note .note-h{font-size:12px;letter-spacing:.3em;color:var(--brass);margin-bottom:6px;}
.card.note .note-s{margin-top:8px;font-style:normal;}
@media (min-width:600px) and (max-width:899px){ .card.note{grid-column:auto;} }

/* 涨跌：颜色只做辅助，箭头与正负号承担含义 */
.dir{white-space:nowrap;color:var(--ink);font-size:13px;letter-spacing:.04em;}
.arr{font-style:normal;font-size:.72em;margin-right:.35em;position:relative;top:-.08em;}
.dir.up .arr,.arr.up{color:var(--up);}
.dir.down .arr,.arr.down{color:var(--down);}
.dir.flat .arr,.arr.flat{color:var(--mute);}

/* ---------------- 表单控件 ---------------- */
.ctl{display:flex;flex-wrap:wrap;gap:18px 28px;align-items:flex-end;margin:0 0 18px;}
.f{display:flex;flex-direction:column;gap:6px;min-width:0;}
.f-sel{flex:1 1 260px;max-width:420px;}
.f-l{letter-spacing:.22em;}
.inp{display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--rule);transition:border-color .2s;}
.inp:focus-within,.f-sel select:focus{border-color:var(--accent);}
.inp .pre{font-style:normal;color:var(--mute);font-size:13px;letter-spacing:.06em;}
input,select,button{font-family:inherit;font-size:16px;color:var(--ink);}
.f input[type=number],.f input[type=month],.f select{
  background:none;border:0;border-radius:0;padding:6px 0;outline:none;font-variant-numeric:tabular-nums;min-width:0;
}
.f input[type=number]{width:7.5em;}
.f input[type=month]{width:9.5em;}
.f select{width:100%;border-bottom:1px solid var(--rule);appearance:none;-webkit-appearance:none;padding-right:20px;cursor:pointer;
  background:linear-gradient(45deg,transparent 50%,var(--mute) 50%) calc(100% - 9px) 55%/5px 5px no-repeat,linear-gradient(-45deg,transparent 50%,var(--mute) 50%) calc(100% - 4px) 55%/5px 5px no-repeat;
  text-overflow:ellipsis;}
.f select option{background:var(--bg);color:var(--ink);}
.auto{background:none;border:0;padding:4px 0 4px 8px;font-size:12px;letter-spacing:.15em;color:var(--mute);cursor:pointer;white-space:nowrap;}
.auto.on{color:var(--accent);}
.auto:hover{color:var(--accent);}
.f-tog{flex-direction:row;align-items:center;gap:10px;cursor:pointer;padding-bottom:8px;user-select:none;-webkit-user-select:none;}
.f-tog input{position:absolute;opacity:0;width:1px;height:1px;}
.sw{width:30px;height:16px;border:1px solid var(--rule);border-radius:9px;position:relative;transition:border-color .2s,background-color .2s;flex:none;}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:var(--mute);transition:transform .2s,background-color .2s;}
.f-tog input:checked + .sw{border-color:var(--accent);}
.f-tog input:checked + .sw::after{transform:translateX(14px);background:var(--accent);}
.f-tog input:focus-visible + .sw{outline:1px solid var(--accent);outline-offset:3px;}
.f-tog input:disabled ~ *{opacity:.45;}
.f-tog:has(input:disabled){cursor:not-allowed;}

/* ---------------- 统计条 ---------------- */
.stats{display:grid;grid-template-columns:1fr 1fr;margin:0 0 22px;border-top:1px solid var(--rule);}
@media (min-width:760px){ .stats{grid-template-columns:repeat(5,1fr);} }
.stat{padding:14px 12px 14px 0;border-bottom:1px solid var(--rule);min-width:0;}
@media (max-width:759px){ .stat:nth-child(odd){padding-right:12px;} .stat:last-child:nth-child(odd){grid-column:1 / -1;} }
.stats dt{letter-spacing:.14em;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.stats dd{margin:6px 0 0;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:8px;}
.stats dd .v{font-size:20px;font-weight:600;letter-spacing:.01em;white-space:nowrap;}
.stats dd .sub{width:100%;font-size:12px;color:var(--mute);letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.stats dd .arr{font-size:11px;margin-right:0;}

/* ---------------- 定投组件 ---------------- */
.dca{transition:opacity .25s;}
.dca.busy .chart,.dca.busy .stats{opacity:.45;}
.dca-note{margin:0 0 14px;min-height:1.6em;font-size:13px;color:var(--brass);letter-spacing:.06em;line-height:1.6;}
.dca-note:empty{margin:0;min-height:0;}
.legend{display:flex;flex-wrap:wrap;gap:6px 22px;margin:0 0 6px;letter-spacing:.18em;}
.legend span{display:inline-flex;align-items:center;gap:8px;}
.key{display:inline-block;width:16px;height:0;border-top:2px solid var(--accent);flex:none;}
.key.tc-invest{border-top:1.5px dashed var(--mute);}
.key.band{height:8px;border:0;background:linear-gradient(90deg,color-mix(in srgb,var(--up) 30%,transparent) 50%,color-mix(in srgb,var(--down) 30%,transparent) 50%);}
.key.none{border-color:transparent;}
.dca-foot{margin:10px 0 0;font-size:12px;color:var(--mute);letter-spacing:.06em;line-height:1.8;}
.dca-foot a{margin-left:.5em;color:var(--mute);}
.dca-cap{margin:0 0 12px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:13px;color:var(--mute);letter-spacing:.06em;line-height:1.6;}
.dca-cap .cap-code{color:var(--ink);text-decoration:none;letter-spacing:.18em;font-size:12px;}
.dca-cap .cap-code:hover{color:var(--accent);}
.dca-cap .cap-name{color:var(--ink-2);}
.dca-table{margin-top:18px;border-top:1px solid var(--rule);}
.dca-table summary{cursor:pointer;padding:12px 0;font-size:12px;letter-spacing:.22em;color:var(--mute);list-style:none;}
.dca-table summary::-webkit-details-marker{display:none;}
.dca-table summary::before{content:"+";display:inline-block;width:1.4em;color:var(--brass);}
.dca-table[open] summary::before{content:"−";}
.tbl-wrap{max-height:360px;overflow:auto;-webkit-overflow-scrolling:touch;}
.tbl-note{font-size:12px;color:var(--mute);letter-spacing:.04em;}

/* ---------------- 图表 ---------------- */
.chart{position:relative;min-height:220px;}
.tc{position:relative;}
.tc-svg{display:block;overflow:visible;touch-action:pan-y;outline:none;user-select:none;-webkit-user-select:none;}
.tc-svg:focus-visible{outline:1px solid var(--rule);outline-offset:4px;}
.tc-grid line{stroke:var(--rule);stroke-width:1;opacity:.7;}
.tc-grid line.tc-axis{opacity:1;}
.tc-tick{stroke:var(--rule);}
.tc-ylab,.tc-xlab{fill:var(--mute);font-size:11px;letter-spacing:.04em;font-family:var(--serif);font-variant-numeric:tabular-nums;}
.tc-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round;}
.tc-line.tc-accent{stroke:var(--accent);}
.tc-line.tc-invest{stroke:var(--mute);stroke-width:1.5;stroke-dasharray:4 4;stroke-linecap:butt;}
.tc-area.tc-accent{fill:var(--accent);opacity:.06;}
.tc-band-up{fill:var(--up);opacity:.16;}
.tc-band-down{fill:var(--down);opacity:.16;}
.tc-dot{stroke:var(--bg);stroke-width:2;}
.tc-dot.tc-accent{fill:var(--accent);}
.tc-dot.tc-invest{fill:var(--mute);}
.tc-cross{stroke:var(--ink);stroke-width:1;opacity:.28;}
.tc-hit{fill:transparent;cursor:crosshair;}
.tc-tip{
  position:absolute;z-index:5;pointer-events:none;min-width:150px;
  background:var(--tip);border:1px solid var(--rule);padding:9px 12px 8px;
  box-shadow:0 6px 24px rgba(15,22,32,.08);font-size:12px;line-height:1.5;
}
.tc-tip[hidden]{display:none;}
.tc-tip-h{font-size:11px;letter-spacing:.18em;color:var(--mute);margin-bottom:4px;}
.tc-tip-r{display:flex;align-items:center;gap:8px;white-space:nowrap;}
.tc-tip-r b{font-weight:600;font-size:14px;color:var(--ink);}
.tc-tip-r span{color:var(--mute);letter-spacing:.08em;}
.tc-tip-r .key{width:12px;}
.chart-empty{
  margin:0;min-height:220px;display:flex;align-items:center;justify-content:center;text-align:center;
  color:var(--mute);letter-spacing:.2em;font-size:13px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
  background:repeating-linear-gradient(135deg,transparent 0 9px,var(--wash) 9px 10px);
}
.spark{display:block;overflow:visible;}
.spark-line{fill:none;stroke-width:1.5;stroke-linejoin:round;}
.spark-line.tc-accent{stroke:var(--accent);}
.spark-dot.tc-accent{fill:var(--accent);}

/* 价格组件 */
.pw-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 18px;margin:0 0 10px;}
.tabs{display:flex;gap:2px;}
.tab{background:none;border:0;border-bottom:1px solid transparent;padding:6px 8px;cursor:pointer;letter-spacing:.14em;transition:color .2s,border-color .2s;}
.tab:first-child{padding-left:0;}
.tab:hover:not(:disabled){color:var(--accent);}
.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--brass);}
.tab:disabled{opacity:.35;cursor:not-allowed;text-decoration:line-through;text-decoration-thickness:1px;}
.cover{margin:0;letter-spacing:.1em;font-size:11px;}
.pw .stats{margin-top:14px;}

/* ---------------- 标的页 ---------------- */
.mk-head{padding-top:clamp(24px,6vw,60px);}
.crumb{margin:0 0 20px;letter-spacing:.2em;}
.crumb a{text-decoration:none;}
.crumb span{margin:0 .4em;color:var(--rule);}
.mk-code{margin:0;font-family:var(--display);font-weight:500;font-size:clamp(46px,10vw,84px);letter-spacing:.08em;line-height:1;}
.mk-code span{color:var(--brass);font-size:.42em;letter-spacing:.2em;margin-left:.2em;}
.mk-name{margin:10px 0 0;color:var(--ink-2);letter-spacing:.04em;max-width:36em;}
.mk-quote{margin-top:18px;}
.mk-quote .px .num{font-size:36px;}
.q-meta{margin:6px 0 0;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:13px;color:var(--mute);letter-spacing:.06em;}

/* ---------------- 文章列表 ---------------- */
.post-list{list-style:none;margin:0;padding:0;}
.post-list li{border-bottom:1px solid var(--rule);}
.post-list a{display:flex;gap:18px;align-items:baseline;padding:16px 0;text-decoration:none;}
.post-list time{flex:none;min-width:3.6em;font-size:12px;letter-spacing:.12em;color:var(--mute);}
.pl-main{display:flex;flex-direction:column;gap:2px;min-width:0;}
.pl-title{font-size:17px;letter-spacing:.06em;font-weight:600;}
.pl-sum{font-size:14px;color:var(--mute);letter-spacing:.03em;line-height:1.75;}
.post-list a:hover .pl-title{color:var(--accent);}
.year{margin-top:44px;}
.year-no{margin:0 0 4px;font-family:var(--display);font-weight:500;font-size:34px;letter-spacing:.08em;color:var(--brass);padding-bottom:8px;border-bottom:1px solid var(--rule);}
.year .post-list time{min-width:3.2em;}

/* ---------------- 页头（列表/关于/404） ---------------- */
.page-head{padding-top:clamp(36px,8vw,80px);}
.page-head .label{margin:0 0 14px;text-transform:uppercase;color:var(--brass);letter-spacing:.3em;font-size:11px;}
.page-head h1{margin:0;font-size:clamp(28px,5vw,36px);font-weight:600;letter-spacing:.12em;line-height:1.35;}
.page-head .dek{margin:14px 0 0;color:var(--ink-2);letter-spacing:.05em;line-height:1.9;}
.nf{padding-bottom:12vh;}

/* ---------------- 文章 ---------------- */
.post-head{padding-top:clamp(36px,8vw,84px);padding-bottom:10px;}
.post-head .label{margin:0 0 18px;letter-spacing:.2em;}
.post-head .dot{margin:0 .3em;}
.post-head h1{margin:0;font-size:clamp(27px,5.4vw,38px);line-height:1.4;font-weight:600;letter-spacing:.08em;text-wrap:balance;}
.post-head .dek{margin:18px 0 0;font-size:17px;color:var(--ink-2);line-height:1.9;letter-spacing:.04em;}
.tags{margin:18px 0 0;display:flex;flex-wrap:wrap;gap:8px;}
.tags .tag{letter-spacing:.15em;border:1px solid var(--rule);padding:1px 9px;}

.prose{font-size:17px;line-height:1.95;letter-spacing:.035em;padding-top:22px;}
.prose > :first-child{margin-top:0;}
.prose p{margin:0 0 1.25em;text-align:justify;text-justify:inter-ideograph;}
.prose h2{margin:2.4em 0 .9em;font-size:21px;font-weight:600;letter-spacing:.1em;line-height:1.5;}
.prose h2::before{content:"";display:block;width:24px;height:1px;background:var(--brass);margin-bottom:22px;}
.prose h3{margin:2em 0 .7em;font-size:18px;font-weight:600;letter-spacing:.08em;}
.prose strong{font-weight:600;}
.prose em{font-style:normal;text-emphasis:filled dot var(--brass);-webkit-text-emphasis:filled dot var(--brass);text-emphasis-position:under right;-webkit-text-emphasis-position:under;}
.prose a{color:var(--accent);text-decoration-color:color-mix(in srgb,var(--accent) 35%,transparent);}
.prose blockquote{margin:1.8em 0;padding:.2em 0 .2em 1.3em;border-left:2px solid var(--brass);color:var(--ink-2);}
.prose blockquote p:last-child{margin-bottom:0;}
.prose ul,.prose ol{margin:0 0 1.25em;padding-left:1.6em;}
.prose li{margin:.35em 0;}
.prose li::marker{color:var(--brass);}
.prose hr{border:0;margin:2.6em 0;text-align:center;height:auto;}
.prose hr::after{content:"◇";color:var(--brass);font-size:12px;letter-spacing:1.2em;padding-left:1.2em;}
.prose code{font-family:var(--mono);font-size:.84em;padding:.1em .35em;background:var(--wash);border:1px solid var(--rule);border-radius:2px;letter-spacing:0;}
.prose pre{margin:1.6em 0;padding:16px 18px;overflow:auto;background:var(--wash);border:1px solid var(--rule);font-size:14px;line-height:1.65;letter-spacing:0;}
.prose pre code{padding:0;background:none;border:0;font-size:inherit;}
.prose table,.dca-table table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.6;letter-spacing:.02em;font-variant-numeric:tabular-nums;}
.prose table{margin:1.6em 0;display:block;overflow-x:auto;}
.prose th,.prose td,.dca-table th,.dca-table td{padding:8px 12px 8px 0;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top;}
.prose th,.dca-table th{font-weight:400;font-size:12px;letter-spacing:.16em;color:var(--mute);border-bottom-color:var(--ink);white-space:nowrap;}
.dca-table th{position:sticky;top:0;background:var(--bg);}
.dca-table td{white-space:nowrap;}
.prose img{max-width:100%;height:auto;display:block;margin:1.6em auto;}
.prose .note{font-size:14px;color:var(--mute);}
.prose .manifesto{font-size:21px;font-weight:600;letter-spacing:.12em;margin-bottom:.8em;}
.fn-ref{font-size:.7em;line-height:0;margin:0 .1em;}
.fn-ref a{text-decoration:none;color:var(--brass);}
.footnotes{margin-top:3em;padding-top:1.2em;border-top:1px solid var(--rule);font-size:14px;line-height:1.85;color:var(--ink-2);}
.footnotes::before{content:"注";display:block;font-size:12px;letter-spacing:.3em;color:var(--mute);margin-bottom:.6em;}
.footnotes ol{padding-left:1.4em;margin:0;}
.footnotes li::marker{color:var(--brass);font-size:12px;}
.fn-back{text-decoration:none;color:var(--mute);margin-left:.3em;}
.end-mark{text-align:center !important;color:var(--brass);margin:2.6em 0 0 !important;letter-spacing:0;}

/* 文章内嵌图表：比正文栏宽，最多 960px，不产生横向滚动 */
.prose [data-dca],.prose [data-price]{
  position:relative;left:50%;transform:translateX(-50%);
  width:min(var(--wide), calc(100vw - 2*var(--gut)));
  margin:2.4em 0;padding:18px 0 4px;border-top:1px solid var(--rule);
  font-size:16px;line-height:1.75;letter-spacing:0;text-align:left;
}
.prose [data-dca] p,.prose [data-price] p{text-align:left;}

.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:56px;padding-top:18px;border-top:1px solid var(--rule);}
.post-nav a{display:flex;flex-direction:column;gap:4px;text-decoration:none;font-size:15px;letter-spacing:.05em;line-height:1.6;}
.post-nav .pn-next{text-align:right;}
.post-nav .label{letter-spacing:.25em;}

/* ---------------- 分享 ---------------- */
.share-btn{background:none;border:0;padding:0;margin:0;cursor:pointer;font:inherit;letter-spacing:inherit;color:var(--mute);text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:.3em;}
.share-btn:hover{color:var(--accent);text-decoration-color:currentColor;}
.share-end{margin-top:40px;text-align:center;}
.share-cta{background:none;border:1px solid var(--rule);cursor:pointer;padding:10px 24px;font-size:13px;letter-spacing:.3em;color:var(--ink-2);transition:color .2s,border-color .2s;}
.share-cta span{font-family:var(--display);font-style:italic;letter-spacing:.08em;font-size:15px;color:var(--brass);margin-left:.3em;}
.share-cta:hover{color:var(--accent);border-color:var(--accent);}
.share-inline[hidden],.share-end[hidden]{display:none;}

.share-ov{position:fixed;inset:0;z-index:150;background:var(--bg);display:flex;flex-direction:column;animation:share-in .2s ease;}
.share-ov[hidden]{display:none;}
@keyframes share-in{from{opacity:0}to{opacity:1}}
.share-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;max-width:calc(var(--col) + 2*var(--gut));margin:0 auto;padding:calc(env(safe-area-inset-top) + 14px) var(--gut) 14px;border-bottom:1px solid var(--rule);}
.share-bar h2{margin:0;font-size:12px;font-weight:400;letter-spacing:.3em;color:var(--mute);}
.share-bar h2 span{font-family:var(--display);color:var(--brass);letter-spacing:.2em;margin-right:.6em;}
.share-close{background:none;border:0;cursor:pointer;padding:8px 0 8px 12px;font-size:13px;letter-spacing:.25em;color:var(--ink-2);}
.share-close:hover{color:var(--accent);}
.share-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:24px var(--gut) calc(env(safe-area-inset-bottom) + 40px);display:flex;flex-direction:column;align-items:center;}
.share-fig{margin:0;width:100%;max-width:400px;position:relative;}
.share-img{display:block;width:100%;height:auto;aspect-ratio:4/5;border:1px solid var(--rule);background:var(--wash);box-shadow:0 10px 40px rgba(15,22,32,.12);-webkit-touch-callout:default;}
.share-fig.busy .share-img{opacity:.5;}
.share-frame{outline:none;}
.share-fig.long{max-width:540px;}
.share-fig.long .share-frame{max-height:min(66vh,860px);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border:1px solid var(--rule);box-shadow:0 10px 40px rgba(15,22,32,.12);}
.share-fig.long .share-img{aspect-ratio:auto;border:0;box-shadow:none;}
.share-status{margin:10px 0 0;min-height:1.5em;text-align:center;font-size:12px;letter-spacing:.2em;color:var(--brass);}
.share-status:empty{margin:0;min-height:0;}
.share-fig.busy .share-status:not(:empty)::before{content:"";display:inline-block;width:6px;height:6px;margin-right:.8em;background:var(--brass);vertical-align:.15em;animation:share-pulse 1s ease-in-out infinite alternate;}
@keyframes share-pulse{from{opacity:.2}to{opacity:1}}
.share-opts{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 26px;margin:22px 0 0;}
.share-seg{display:flex;border:1px solid var(--rule);}
.share-seg[hidden]{display:none;}
.share-seg button{background:none;border:0;cursor:pointer;padding:5px 14px;font-size:12px;letter-spacing:.2em;color:var(--mute);}
.share-seg button[aria-pressed=true]{color:var(--bg);background:var(--accent);}
.share-seg button[hidden]{display:none;}
.share-seg button:disabled{cursor:progress;opacity:.55;}
.share-seg button:not([hidden]) ~ button:not([hidden]){border-left:1px solid var(--rule);}
.share-opts .f-tog{padding-bottom:0;font-size:12px;letter-spacing:.2em;color:var(--mute);}
.share-hint{margin:16px 0 0;font-size:12px;letter-spacing:.2em;color:var(--mute);text-align:center;}
.share-acts{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 28px;margin-top:16px;}
.share-acts button{background:none;border:0;border-bottom:1px solid var(--rule);cursor:pointer;padding:8px 0;font-size:13px;letter-spacing:.2em;color:var(--ink);}
.share-acts button:hover{color:var(--accent);border-bottom-color:var(--accent);}
.share-acts button[hidden]{display:none;}
.share-acts button:disabled{opacity:.4;cursor:progress;}
.share-acts button.ok{color:var(--accent);border-bottom-color:var(--brass);}
.share-probe{display:none;}

/* ---------------- 页脚 ---------------- */
.site-foot{margin-top:clamp(72px,12vw,128px);padding-bottom:calc(env(safe-area-inset-bottom) + 40px);text-align:center;}
.foot-rule{display:flex;align-items:center;gap:16px;margin-bottom:24px;}
.foot-rule span{flex:1;height:1px;background:var(--rule);}
.foot-rule svg{fill:none;stroke:var(--brass);stroke-width:1;}
.foot-rule svg path{fill:var(--brass);stroke:none;opacity:.8;}
.site-foot p{margin:6px 0;font-size:12px;letter-spacing:.14em;color:var(--mute);line-height:1.9;}
.site-foot .disc{color:var(--ink-2);letter-spacing:.18em;}
.site-foot .mark-sm{font-family:var(--display);letter-spacing:.28em;color:var(--ink-2);}
.site-foot .sig{font-family:var(--display);font-style:italic;letter-spacing:.06em;font-size:14px;}
.site-foot a{color:var(--mute);}

@media (prefers-reduced-motion:reduce){ *{transition:none !important;scroll-behavior:auto !important;} }
@media print{ body::before,.site-head,.theme-toggle,.ctl,.share-inline,.share-end,.share-ov{display:none !important;} }
