/* MacTutor 中文镜像 —— 全部自托管，无任何外部域名（大陆可访问是硬约束） */
:root{
  --paper:#F6F7F9; --surface:#FFFFFF; --sunk:#EDEFF3;
  --ink:#171B24; --ink-2:#4A5365; --ink-3:#7C8699;
  --rule:#DDE1E8; --rule-2:#C9CFDA;
  --accent:#27548A; --accent-soft:#E3EBF5; --on-accent:#FFFFFF;
  --locked:#27548A; --auto:#5E7085; --untr:#9A6224;
  --locked-bg:#E3EBF5; --auto-bg:#E9ECF1; --untr-bg:#F5EADB;
  --serif:"Songti SC","Noto Serif CJK SC","Source Han Serif SC",STSong,SimSun,Georgia,"Times New Roman",serif;
  --sans:system-ui,-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]){
  --paper:#10131A; --surface:#171B24; --sunk:#1E232E;
  --ink:#E7EAF0; --ink-2:#A7B0C0; --ink-3:#7A8496;
  --rule:#262C38; --rule-2:#333A48;
  --accent:#7FA8D4; --accent-soft:#1D2939; --on-accent:#10131A;
  --locked:#7FA8D4; --auto:#93A0B3; --untr:#D2A05C;
  --locked-bg:#1C2939; --auto-bg:#222733; --untr-bg:#2E2618;
}}
:root[data-theme="dark"]{
  --paper:#10131A; --surface:#171B24; --sunk:#1E232E;
  --ink:#E7EAF0; --ink-2:#A7B0C0; --ink-3:#7A8496;
  --rule:#262C38; --rule-2:#333A48;
  --accent:#7FA8D4; --accent-soft:#1D2939; --on-accent:#10131A;
  --locked:#7FA8D4; --auto:#93A0B3; --untr:#D2A05C;
  --locked-bg:#1C2939; --auto-bg:#222733; --untr-bg:#2E2618;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);
     line-height:1.7;-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px}
img{max-width:100%}
/* hidden 是 UA 样式，类选择器（如 .extra-cols{display:grid}）会盖过它，
   折叠区就藏不住了。这里把它抬到最高优先级。 */
[hidden]{display:none!important}
.wrap{max-width:820px;margin:0 auto;padding-inline:20px;padding-block:0 64px}
.wide{max-width:1080px}

/* 站头 */
.top{border-bottom:1px solid var(--rule);background:var(--surface)}
.topin{max-width:1080px;margin:0 auto;padding:13px 20px;display:flex;gap:18px;
       align-items:baseline;flex-wrap:wrap}
.brand{font-family:var(--serif);font-size:16.5px;font-weight:600;color:var(--ink);
       text-decoration:none;letter-spacing:.03em;white-space:nowrap}
.nav{display:flex;gap:16px;font-size:13.5px;margin-left:auto;flex-wrap:wrap}
.nav a{color:var(--ink-2);text-decoration:none}
.nav a:hover,.nav a[aria-current=page]{color:var(--accent)}

.eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);
         font-weight:600;margin:0 0 10px}
h1{font-family:var(--serif);font-size:clamp(27px,4.4vw,38px);font-weight:600;letter-spacing:.02em;
   margin:0 0 6px;text-wrap:balance;line-height:1.3}
h1 .en{display:block;font-family:var(--sans);font-size:16px;font-weight:400;
       color:var(--ink-2);letter-spacing:0;margin-top:7px}
h2{font-family:var(--serif);font-size:20px;font-weight:600;margin:38px 0 14px;letter-spacing:.02em}
.lede{max-width:64ch;color:var(--ink-2);font-size:15px}
p{max-width:66ch}

/* 传记页 Quick Info */
.facts{background:var(--surface);border:1px solid var(--rule);border-radius:3px;
       padding:4px 20px;margin:24px 0}
.facts dl{display:grid;grid-template-columns:auto 1fr;gap:0 22px;margin:0}
.facts dt{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);
          font-weight:600;padding:13px 0 13px;border-top:1px solid var(--rule);white-space:nowrap}
.facts dd{margin:0;padding:13px 0;border-top:1px solid var(--rule)}
.facts dl>dt:first-of-type,.facts dl>dt:first-of-type+dd{border-top:0}
.date{font-variant-numeric:tabular-nums}
.place{color:var(--ink-2)}
.summary{font-size:17px;line-height:1.85;margin:26px 0 0;max-width:62ch}

.pending{background:var(--untr-bg);border:1px solid var(--rule);border-left:3px solid var(--untr);
         border-radius:2px;padding:15px 18px;margin:32px 0 0;font-size:14px;color:var(--ink-2)}
.pending b{color:var(--ink)}
.links{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.links a{font-size:13.5px;text-decoration:none;background:var(--surface);
  border:1px solid var(--rule-2);border-radius:3px;padding:8px 14px}

/* 列表与检索 */
.controls{position:sticky;top:0;z-index:5;background:var(--paper);padding-block:12px;
          border-bottom:1px solid var(--rule)}
input[type=search]{width:100%;font:inherit;font-size:14px;color:var(--ink);background:var(--surface);
  border:1px solid var(--rule-2);border-radius:3px;padding:10px 13px}
.count{font-size:12.5px;color:var(--ink-3);padding:12px 2px 8px;font-variant-numeric:tabular-nums}
.list{border:1px solid var(--rule);border-radius:3px;background:var(--surface);overflow:hidden}
.item{display:flex;gap:14px;align-items:baseline;padding:11px 16px;border-top:1px solid var(--rule);
      text-decoration:none;color:inherit;flex-wrap:wrap}
.item:first-child{border-top:0}
.item:hover{background:var(--sunk)}
.item .zh{font-family:var(--serif);font-size:15.5px;letter-spacing:.02em}
.item .zh.none{font-family:var(--sans);font-size:14px;color:var(--ink-2)}
.item .en2{font-size:13px;color:var(--ink-3)}
.item .yr{margin-left:auto;font-family:var(--mono);font-size:12.5px;color:var(--ink-3);
          font-variant-numeric:tabular-nums;white-space:nowrap}
.more{display:block;width:100%;margin-top:14px;font:inherit;font-size:13.5px;cursor:pointer;
  background:var(--surface);color:var(--accent);border:1px solid var(--rule-2);
  border-radius:3px;padding:11px}

.stats{display:flex;flex-wrap:wrap;gap:1px;background:var(--rule);border:1px solid var(--rule);
       border-radius:3px;overflow:hidden;margin:28px 0}
.stat{background:var(--surface);padding:14px 18px;flex:1 1 130px}
.stat b{display:block;font-family:var(--mono);font-size:22px;font-weight:600;
        font-variant-numeric:tabular-nums}
.stat span{display:block;font-size:11.5px;color:var(--ink-3);margin-top:3px}

footer{margin-top:52px;padding-top:20px;border-top:1px solid var(--rule);
       font-size:12.5px;color:var(--ink-3);max-width:72ch;line-height:1.75}
footer p{margin:0 0 7px;max-width:none}
@media (max-width:560px){
  .wrap{padding-block:0 44px}
  .facts dl{grid-template-columns:1fr}
  .facts dt{padding-bottom:0;border-top:1px solid var(--rule)}
  .facts dd{padding-top:4px;border-top:0}
  .facts dl>dt:first-of-type+dd{border-top:0}
  .item .yr{margin-left:0;flex-basis:100%}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* 译注：译者的话，必须和原作者的正文在视觉上分开 */
.tnote{background:var(--sunk);border:1px solid var(--rule);border-left:3px solid var(--ink-3);
       border-radius:2px;padding:14px 18px;margin:24px 0 0;font-size:13.5px;color:var(--ink-2)}
.tnote b{display:block;font-size:11px;letter-spacing:.12em;color:var(--ink-3);
         margin-bottom:6px;font-weight:600}
.tnote p{margin:0;max-width:none;line-height:1.75}

/* 完整传记正文 */
.bio-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
         margin:38px 0 4px;padding-bottom:10px;border-bottom:1px solid var(--rule)}
.bio-lab{font-family:var(--serif);font-size:19px;font-weight:600;letter-spacing:.02em}
.lang-btn{margin-left:auto;font:inherit;font-size:13px;cursor:pointer;color:var(--accent);
  background:var(--surface);border:1px solid var(--rule-2);border-radius:3px;padding:6px 13px}
.lang-btn:hover{background:var(--accent-soft)}
.bio p{margin:0 0 1.15em;max-width:64ch;line-height:1.95}
.bio{font-size:16px}
.bio blockquote{margin:1.3em 0;padding:2px 0 2px 18px;border-left:2px solid var(--rule-2);
                color:var(--ink-2);font-size:15px}
.bio a{text-decoration:none;border-bottom:1px solid var(--rule-2)}
/* 正文里的块级结构：小标题、名录、表格、ASCII 图。
   以前这些标签在切分时就被 get_text() 抹平了——π 年表整张表塌成一行
   「1Rhind纸草书公元前2000年13.16045」，引文也和作者自己的话融在一段里。
   现在 body.to_blocks 把标签留了下来，这里给它们排版。 */
.bio h1,.bio h2,.bio h3,.bio h4,.bio h5{font-family:var(--serif);font-weight:600;
  letter-spacing:.02em;margin:1.9em 0 .55em;line-height:1.4}
.bio h1{font-size:22px}
.bio h2{font-size:20px}
.bio h3{font-size:18px}
.bio h4,.bio h5{font-size:16.5px}
.bio hr{border:0;border-top:1px solid var(--rule);margin:2.4em 0}
.bio ul,.bio ol{max-width:64ch;margin:1em 0;padding-left:26px}
.bio li{margin:.35em 0}
.bio li::marker{color:var(--ink-3)}
.bio pre{background:var(--sunk);border:1px solid var(--rule);border-radius:3px;
  margin:1.2em 0;padding:12px 15px;overflow-x:auto;
  font-family:var(--mono);font-size:12.5px;line-height:1.75;color:var(--ink-2)}
/* 表格：窄屏放不下六列，壳自己横向滚动，不要让整页跟着滚 */
.tw{overflow-x:auto;margin:1.4em 0;max-width:100%}
.bio table{border-collapse:collapse;font-size:14.5px;line-height:1.6}
.bio td,.bio th{border-top:1px solid var(--rule);padding:7px 18px 7px 0;
  vertical-align:top;text-align:left}
.bio tr:first-child td,.bio tr:first-child th{border-top:0}
.bio th,.bio td strong{font-weight:600;color:var(--ink)}
.bio td{color:var(--ink-2)}
.bio td:empty{padding:0}
.bio table .katex{font-size:1em}
.bio table p{margin:0;max-width:none}

.bio a:hover{border-bottom-color:var(--accent)}
.bio .katex{font-size:1.02em}
.bio .katex-display{overflow-x:auto;overflow-y:hidden;padding-block:4px}

/* 未译出的段落：把原文放在缺口上，并在视觉上与译文明确分开。
   静默留空最坏——读者看到一段通顺的中文，不知道中间少了一截。
   与译注同理：不是译文的东西，不能混进正文的排版里。 */
.bio .untr{background:var(--untr-bg);border:1px solid var(--rule);
  border-left:3px solid var(--untr);border-radius:2px;
  padding:12px 16px;margin:1.2em 0;max-width:64ch;
  font-size:14.5px;line-height:1.75;color:var(--ink-2)}
.untr-tag{display:block;font-size:11px;letter-spacing:.1em;font-weight:600;
  color:var(--untr);margin-bottom:7px}
.bio td .untr-tag,.bio li .untr-tag{display:inline;margin:0 6px 0 0;letter-spacing:.06em}
.bio .untr a{border-bottom-color:var(--rule-2)}

/* 正文插图：本站不镜像图片，给一个指回原站的文字链接，不发起任何外部请求 */
.figlink{display:inline-block;font-size:12.5px;color:var(--ink-2);text-decoration:none;
         background:var(--sunk);border:1px dashed var(--rule-2);border-radius:2px;
         padding:3px 9px;margin:2px 0}
.figlink:hover{border-color:var(--accent);color:var(--accent)}

/* 术语表 */
.gloss{margin-top:8px}
.term{padding:18px 0 4px;border-top:1px solid var(--rule);scroll-margin-top:72px}
.term:first-child{border-top:none}
.term h3{font-family:var(--serif);font-size:18px;font-weight:600;margin:0 0 8px;
         letter-spacing:.01em}
.term h3 .en{display:block;font-family:var(--sans);font-size:14px;font-weight:400;
             color:var(--ink-3);letter-spacing:0;margin-top:4px}
.term .def{font-size:16px;color:var(--ink)}
.term .def p{margin:.55em 0}
.term .def a{text-decoration:none;border-bottom:1px solid var(--rule-2)}
.term .def a:hover{border-bottom-color:var(--accent)}
.term .def .katex{font-size:1.02em}
/* 释义里的 ASCII 算表：对齐全靠空格，必须等宽且保留空白 */
.term .def pre,.glosspop .gp-def pre{white-space:pre;font-family:var(--mono);
  background:var(--sunk);border:1px solid var(--rule);border-radius:3px;
  margin:.8em 0;padding:10px 13px;overflow-x:auto;font-size:12.5px;line-height:1.65}
.term .def .katex-display{overflow-x:auto;overflow-y:hidden;padding-block:4px}
/* 从传记页点进来的那一条：458 条里要能一眼找到落点 */
.term:target,.term.hit{background:var(--accent-soft);border-radius:8px;
                       padding-inline:14px;margin-inline:-14px}
/* 中文不用斜体表强调（那是西文的办法），改用加粗；英文斜体照旧 */
.term .def em.zh{font-style:normal;font-weight:600}

/* 参考文献：书目保留原文，排版上与译文明确分开 */
.refs{margin-top:36px;padding-top:18px;border-top:1px solid var(--rule)}
.refs h2{margin:0 0 6px}
.refs .refnote{color:var(--ink-3);font-size:13px;margin:0 0 12px}
.refs ol{margin:0;padding-left:30px;font-size:14px;color:var(--ink-2);line-height:1.7}
.refs li::marker{font-variant-numeric:tabular-nums;color:var(--ink-3)}
.refs li{margin:.4em 0;scroll-margin-top:72px}
.refs li:target{background:var(--accent-soft);border-radius:4px;
                box-shadow:0 0 0 5px var(--accent-soft)}
.refs a{text-decoration:none;border-bottom:1px solid var(--rule-2)}

/* 书目的标题行与折叠按钮 */
.refs-bar{display:flex;align-items:baseline;justify-content:space-between;gap:12px}

/* 引文悬浮：正文里的 [3] 悬停就地显示书目，不必跳到页尾 */
.refpop{position:absolute;z-index:60;max-width:min(460px,calc(100vw - 16px));
        background:var(--surface);color:var(--ink-2);font-size:13px;line-height:1.6;
        padding:9px 12px;border:1px solid var(--rule-2);border-radius:8px;
        box-shadow:0 8px 24px rgba(0,0,0,.14)}
.refpop em{font-style:italic}
/* 术语弹层：点术语或「注 N」就地显示释义。注的正文可能很长（莱因德纸草书那条
   带一整张算表），所以给个高度上限、内部自己滚，别把弹层撑到屏幕外面去。 */
.glosspop{max-width:min(520px,calc(100vw - 16px));color:var(--ink);padding:13px 16px}
.glosspop h4{font-family:var(--serif);font-size:15.5px;font-weight:600;margin:0 0 8px;
  letter-spacing:.02em}
.glosspop h4 span{display:block;font-family:var(--sans);font-size:12.5px;font-weight:400;
  color:var(--ink-3);letter-spacing:0;margin-top:2px}
.glosspop .gp-def{max-height:min(52vh,420px);overflow-y:auto;font-size:14px;
  line-height:1.72;color:var(--ink-2)}
.glosspop .gp-def p{margin:.4em 0;max-width:none}
.glosspop .gp-def p:first-child{margin-top:0}
.glosspop .gp-def pre{background:var(--sunk);border-radius:2px;padding:8px 10px;
  overflow-x:auto;font-family:var(--mono);font-size:12px;line-height:1.6}
.glosspop .gp-def em.zh{font-style:normal;font-weight:600;color:var(--ink)}
.glosspop .gp-def a{color:var(--accent);text-decoration:none;
  border-bottom:1px solid var(--rule-2)}
.glosspop .gp-more{display:inline-block;margin-top:10px;padding-top:9px;font-size:12.5px;
  color:var(--ink-3);text-decoration:none;border-top:1px solid var(--rule);width:100%}
.glosspop .gp-more:hover{color:var(--accent)}
/* 术语链接本身要看得出可点，和普通站内链接区分开。
   指针用小手：它点下去确实有事发生（就地弹出释义），help 那个问号指针
   看着像「这里有提示」，读者未必会去点。 */
.bio a.gllink{border-bottom:1px dotted var(--rule-2);cursor:pointer}
.bio a.gllink:hover{border-bottom-color:var(--accent)}


/* 术语表排版收紧：原站是小字密排，中文按 16px 铺开显得臃肿 */
.gloss{margin-top:4px}
.term{padding:13px 0 3px}
.term h3{font-size:16px;margin:0 0 5px}
.term h3 .en{font-size:13px;margin-top:2px}
.term .def{font-size:14.5px;line-height:1.72;color:var(--ink-2)}
.term .def p{margin:.35em 0}
.term .def em.zh{color:var(--ink)}

/* 延伸资源：原站是左右两栏（其它页面 / 其它网站），窄屏叠成一列 */
.extra-cols{display:grid;grid-template-columns:1fr 1fr;gap:4px 28px}
.extra-cols > div{min-width:0}
.extra-cols p{margin:0 0 6px;font-size:13px;color:var(--ink-3)}
.extra-cols ol{margin:0 0 14px;padding-left:26px;font-size:14px;line-height:1.7}
.extra-cols li{margin:.25em 0}
.extra-cols a{text-decoration:none;border-bottom:1px solid var(--rule-2)}
@media (max-width:640px){ .extra-cols{grid-template-columns:1fr} }
