:root{--orange:#D97757;--ink:#1f2430;--soft:#5b6472;--line:#e6e3dd;--bg:#faf8f5;--card:#fff;--right:#1f9d57;--wrong:#d8453a;}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{margin:0;font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Source Han Sans SC",SimSun,sans-serif;
  color:var(--ink);background:var(--bg);line-height:1.85;font-size:16.5px;}
#wrap{display:flex;max-width:1180px;margin:0 auto;align-items:flex-start;}
#toc{position:sticky;top:0;max-height:100vh;overflow:auto;width:248px;flex:0 0 248px;
  padding:18px 12px 40px;border-right:1px solid var(--line);font-size:13.5px;background:var(--bg);}
.toc-title{font-weight:700;color:var(--orange);margin:6px 8px 12px;font-size:15px;}
#toc ul{list-style:none;margin:0;padding:0;}
#toc li{margin:1px 0;}
#toc a{display:block;text-decoration:none;color:var(--soft);padding:4px 8px;border-radius:6px;}
#toc a:hover{background:#f0ece5;color:var(--ink);}
.toc-part>a{font-weight:700;color:var(--ink);margin-top:8px;}
.toc-sec>a{padding-left:18px;font-size:13px;}
#main{flex:1 1 auto;min-width:0;padding:28px 38px 120px;}
h1.h-part{font-size:26px;border-bottom:3px solid var(--orange);padding-bottom:10px;margin:38px 0 18px;}
h2{font-size:21px;margin:34px 0 6px;padding-left:11px;border-left:5px solid var(--orange);}
h3{font-size:17.5px;margin:22px 0 6px;color:#2b3550;}
h4{font-size:16px;margin:16px 0 4px;color:var(--orange);}
p{margin:9px 0;}
strong{color:#b8492c;}
code{background:#f1ede6;border:1px solid #e3ddd2;border-radius:4px;padding:1px 5px;font-size:.92em;
  font-family:Consolas,"Courier New",monospace;color:#6a4d33;}
hr.sep{border:none;border-top:2px dashed var(--line);margin:30px 0;}
blockquote{margin:12px 0;padding:11px 16px;background:#fbf3ec;border-left:4px solid var(--orange);
  border-radius:0 8px 8px 0;color:#4a4034;font-size:15px;}
ul,ol{margin:8px 0;padding-left:26px;}
li{margin:4px 0;}
.tablewrap{overflow-x:auto;margin:14px 0;}
table{border-collapse:collapse;width:100%;font-size:14.5px;min-width:480px;}
th,td{border:1px solid var(--line);padding:8px 11px;text-align:left;vertical-align:top;}
th{background:#f3ede4;color:#5a3b27;}
tr:nth-child(even) td{background:#fcfaf7;}
sub,sup{font-size:.72em;}
.fig{margin:16px 0;text-align:center;}
.fig img{max-width:100%;height:auto;border:1px solid var(--line);border-radius:10px;
  background:#fff;padding:10px;box-shadow:0 1px 4px rgba(0,0,0,.05);cursor:zoom-in;}
#lightbox{display:none;position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:200;
  cursor:zoom-out;align-items:center;justify-content:center;padding:14px;}
#lightbox.open{display:flex;}
#lightbox img{max-width:97%;max-height:92%;background:#fff;border-radius:8px;padding:8px;
  box-shadow:0 6px 30px rgba(0,0,0,.5);}
#lightbox .lbhint{position:fixed;top:14px;left:0;right:0;text-align:center;color:#fff;
  font-size:14px;opacity:.85;}
.fig figcaption{margin-top:7px;font-size:13.5px;color:var(--soft);}
.formula{margin:14px 0;padding:12px 16px;background:#fff;border:1px solid var(--line);
  border-radius:10px;text-align:center;font-size:18px;overflow-x:auto;}
.frac{display:inline-flex;flex-direction:column;vertical-align:middle;text-align:center;margin:0 .25em;}
.frac .fnum{padding:0 .5em 2px;}
.frac .fden{padding:2px .5em 0;border-top:1.6px solid var(--ink);}
.secstats{font-size:13px;color:var(--soft);background:#f3ede4;border-radius:6px;
  padding:5px 12px;margin:6px 0 4px;display:inline-block;}
.quiz{background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:15px 18px;margin:15px 0;box-shadow:0 1px 3px rgba(0,0,0,.03);}
.qhead{margin-bottom:11px;}
.qtag{display:inline-block;font-size:11.5px;padding:2px 9px;border-radius:20px;margin-right:8px;
  color:#fff;vertical-align:middle;}
.tag-a{background:#5b8def;}.tag-b{background:#9a6ad8;}.tag-c{background:#e08a3c;}
.qtext{font-weight:600;}
.opts{display:flex;flex-direction:column;gap:8px;}
.opt{text-align:left;border:1.5px solid var(--line);background:#fcfbf9;border-radius:9px;
  padding:9px 13px;font-size:15px;cursor:pointer;font-family:inherit;color:var(--ink);
  transition:.12s;line-height:1.6;}
.opt:hover{border-color:var(--orange);background:#fbf3ec;}
.opt.right{border-color:var(--right);background:#e9f8ef;color:#15703f;font-weight:600;}
.opt.wrong{border-color:var(--wrong);background:#fdeceb;color:#a82b22;font-weight:600;}
.opt.disabled{cursor:default;}
.opt b{color:var(--orange);margin-right:4px;}
.opt.right b,.opt.wrong b{color:inherit;}
.explain{display:none;margin-top:11px;padding:11px 14px;background:#f6f4ef;border-radius:9px;
  font-size:14.5px;border-left:4px solid var(--right);}
.ansline{font-weight:700;color:var(--right);}
.expbody{margin-top:5px;color:#444;}
#pdfbtn{position:fixed;right:20px;bottom:86px;z-index:50;background:var(--orange);color:#fff;
  border:none;border-radius:30px;padding:13px 22px;font-size:15px;font-weight:700;cursor:pointer;
  box-shadow:0 4px 14px rgba(217,119,87,.4);font-family:inherit;}
#pdfbtn:hover{background:#c5633f;}
#prog{position:fixed;left:50%;transform:translateX(-50%);bottom:22px;z-index:50;background:#fff;
  border:1px solid var(--line);border-radius:30px;padding:9px 20px;font-size:13.5px;color:var(--soft);
  box-shadow:0 3px 12px rgba(0,0,0,.08);}
#prog b{color:var(--orange);}
.titlebox{margin:6px 0 10px;}
.titlebox h1{font-size:30px;margin:0 0 8px;border:none;}
.titlebox .sub{color:var(--soft);font-size:15px;}
.titlebox .note{margin-top:12px;font-size:13.5px;color:#8a8070;background:#f3ede4;
  padding:9px 14px;border-radius:8px;border-left:4px solid var(--orange);}
@media (max-width:820px){
  #wrap{flex-direction:column;}
  #toc{position:static;width:100%;flex:none;max-height:none;border-right:none;
    border-bottom:1px solid var(--line);}
  #toc ul{column-count:2;}
  #main{padding:18px 16px 120px;}
  #prog{display:none;}
}
#chatfab{position:fixed;right:20px;bottom:20px;z-index:60;width:56px;height:56px;border-radius:50%;
 background:var(--orange);color:#fff;border:none;font-size:25px;cursor:pointer;box-shadow:0 4px 14px rgba(217,119,87,.45);}
#chatfab:hover{background:#c5633f;}
#chatpanel{position:fixed;right:20px;bottom:20px;z-index:61;width:380px;max-width:calc(100vw - 32px);
 height:560px;max-height:calc(100vh - 40px);background:#fff;border:1px solid var(--line);border-radius:14px;
 box-shadow:0 10px 40px rgba(0,0,0,.22);display:none;flex-direction:column;overflow:hidden;}
#chatpanel.open{display:flex;}
.chathead{background:var(--orange);color:#fff;padding:11px 14px;font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:space-between;}
.chathead .hbtns{display:flex;gap:6px;}
.chathead button{background:rgba(255,255,255,.22);border:none;color:#fff;cursor:pointer;border-radius:6px;width:27px;height:27px;font-size:14px;}
.chatbody{flex:1;overflow-y:auto;padding:13px;background:#faf8f5;}
.msg{margin:8px 0;padding:9px 12px;border-radius:10px;font-size:14.5px;line-height:1.75;white-space:pre-wrap;word-break:break-word;}
.msg.u{background:#e8eef9;margin-left:28px;}
.msg.a{background:#fff;border:1px solid var(--line);margin-right:16px;white-space:normal;}
.msg.sys{background:#fbf3ec;color:#7a5a3a;font-size:13px;text-align:center;}
.chatfoot{border-top:1px solid var(--line);padding:9px;display:flex;gap:7px;background:#fff;}
.chatfoot textarea{flex:1;resize:none;border:1.5px solid var(--line);border-radius:9px;padding:8px 10px;font-family:inherit;font-size:14px;height:42px;max-height:110px;}
.chatfoot button{background:var(--orange);color:#fff;border:none;border-radius:9px;padding:0 15px;cursor:pointer;font-weight:700;font-family:inherit;}
#keysetup{padding:16px;font-size:13.5px;line-height:1.8;}
#keysetup input{width:100%;padding:8px;border:1.5px solid var(--line);border-radius:8px;margin:8px 0;font-family:inherit;}
#keysetup button{background:var(--orange);color:#fff;border:none;border-radius:8px;padding:8px 14px;cursor:pointer;font-weight:700;}
#keysetup a{color:var(--orange);}
.msg.a b,.msg.a strong{color:#b8492c;}
.msg.a i{font-style:normal;border-bottom:1px dotted #c9a;}
.msg.a .cmh{font-weight:700;color:#9c4a2c;margin:7px 0 3px;font-size:15px;}
.msg.a ul,.msg.a ol{margin:5px 0;padding-left:21px;}
.msg.a li{margin:3px 0;}
.msg.a code{background:#f1ede6;border:1px solid #e3ddd2;border-radius:4px;padding:0 4px;font-size:.9em;color:#6a4d33;}
.msg.a pre{background:#2b2b2b;color:#eee;padding:9px 11px;border-radius:8px;overflow-x:auto;font-size:12.5px;margin:6px 0;white-space:pre;}
.msg.a pre code{background:none;border:0;padding:0;color:inherit;font-size:inherit;}
.msg.a sub,.msg.a sup{font-size:.72em;}
.msg.a .cmath{font-style:normal;}
.cfrac{display:inline-flex;flex-direction:column;vertical-align:middle;text-align:center;margin:0 .2em;line-height:1.12;}
.cfrac>.cn{padding:0 .4em 1px;border-bottom:1.5px solid currentColor;}
.cfrac>.cd{padding:1px .4em 0;}
.csqrt{border-top:1.5px solid currentColor;padding:0 .14em;margin-left:-.08em;}
.cmath sub,.cmath sup{font-size:.74em;}
.ctabwrap{overflow-x:auto;margin:8px 0;-webkit-overflow-scrolling:touch;}
table.ctab{border-collapse:collapse;font-size:13px;width:100%;min-width:0;}
.ctab th,.ctab td{border:1px solid #d9d2c7;padding:5px 7px;text-align:left;vertical-align:top;word-break:normal;overflow-wrap:anywhere;}
.ctab code{white-space:nowrap;}
.ctab th{background:#f3ede4;color:#5a3b27;font-weight:700;}
.ctab tbody tr:nth-child(even) td{background:#faf7f2;}
.cur{color:var(--orange);}
@media print{
  @page{size:A4;margin:15mm 14mm;}
  body{background:#fff;font-size:12pt;line-height:1.6;}
  #toc,#pdfbtn,#prog,#chatfab,#chatpanel{display:none!important;}
  #wrap{display:block;max-width:none;}
  #main{padding:0;}
  .quiz{break-inside:avoid;box-shadow:none;border:1px solid #ccc;}
  .opt{cursor:default;border:1px solid #ddd;background:#fff!important;color:#000!important;font-weight:400!important;}
  .opt.right{border:1.5px solid #1f9d57;}
  .explain{display:block!important;background:#f4f4f4;border-left:3px solid #1f9d57;}
  h1.h-part,h2,h3{break-after:avoid;}
  .formula{break-inside:avoid;}
  .fig{break-inside:avoid;}
  .fig img{max-width:78%;box-shadow:none;}
  blockquote{break-inside:avoid;}
  a{color:#000;text-decoration:none;}
}

.msg.a .katex{font-size:1.05em;}.msg.a .katex-display{margin:.5em 0;overflow-x:auto;overflow-y:hidden;padding:3px 0;}.msg.a .katex-display>.katex{text-align:left;}

/* Controls for practical questions use the original handout palette. */
[hidden]{display:none!important;}
a,summary{color:#a7462a;}
:focus-visible{outline:2px solid #a7462a;outline-offset:3px;}
.paper-switch,.tools{display:flex;flex-wrap:wrap;align-items:center;gap:7px;}
.paper-switch{margin:0 8px 14px;}
#toc .paper-switch a,.plain-button{display:inline-block;background:#fcfbf9;color:var(--ink);border:1px solid var(--line);
  border-radius:6px;padding:4px 10px;font:inherit;cursor:pointer;}
#toc .paper-switch a[aria-current],.plain-button:hover,.plain-button[aria-pressed="true"]{background:#fbf3ec;border-color:var(--orange);}
.part{scroll-margin-top:12px;}
.part h3{margin-bottom:0;}
.part .quiz{margin-top:6px;}
#main pre{overflow:auto;max-width:100%;padding:10px 12px;background:#f6f4ef;border:1px solid var(--line);border-radius:7px;}
#main pre code{background:none;border:0;padding:0;}
.part table code{white-space:pre-wrap;overflow-wrap:anywhere;}
.part .tablewrap td:first-child{width:3em;}
.part .tablewrap td:nth-child(2){width:46%;}
.answer{margin-top:8px;}
.reference{padding:7px 12px;margin:8px 0 0;background:#f6f4ef;border-left:3px solid var(--orange);border-radius:6px;}
.src,.chat-context,.chat-status{font-size:13px;color:var(--soft);}
.write-label,.answer-fields label{display:block;font-size:14px;}
.write-label textarea,.answer-fields input{display:block;width:100%;padding:7px 9px;margin:3px 0 9px;border-radius:6px;
  border:1px solid var(--line);background:white;color:var(--ink);font:inherit;}
.write-label textarea{resize:vertical;}
.answer-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr));gap:10px;}
.feedback{font-size:14px;color:#15703f;}
.feedback.bad{color:#a82b22;}
.figure-button{padding:0;background:none;border:0;max-width:100%;}
#figure-dialog{border:1px solid var(--line);border-radius:10px;background:#fff;max-width:96vw;max-height:92dvh;overflow:auto;}
#figure-dialog img{display:block;height:auto;max-width:min(1100px,85vw);}
#figure-dialog::backdrop{background:#0009;}
#clock{font-weight:700;color:#a7462a;font-variant-numeric:tabular-nums;}
.chat-context{margin:0 0 8px;}
.chatfoot textarea{min-width:0;}
.chat-status{display:flex;align-items:center;justify-content:space-between;gap:5px;padding:0 9px 6px;}
.chat-status button{border:0;background:none;color:#a7462a;white-space:nowrap;cursor:pointer;font:inherit;}
#keysetup{background:#fbf3ec;border-radius:8px;padding:10px 12px;}
#suggestions button{font-size:12px;}
@media(max-width:820px){
  #main{width:100%;}
  #toc{padding-bottom:14px;}
  #pdfbtn{bottom:80px;padding:7px 12px;font-size:12px;}
  #chatfab{width:46px;height:46px;bottom:16px;right:16px;}
  #chatpanel{bottom:12px;right:12px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);}
}
@media print{
  .tools,.write-label,.answer-fields,.feedback{display:none!important;}
  .part .quiz{break-inside:auto;}
}
