/* 版面沿用前一版閱讀頁：淡粉紫紙面、墨色文字、青綠重點、左側目錄。 */
:root{--page:#FCFAFE;--ink:#282532;--muted:#706b7a;--plum:#665077;--teal:#25766d;--coral:#b85140;--line:#ddd5e4;--paper:#fff;--soft:#ece5f2}
*{box-sizing:border-box;letter-spacing:0}
html{scroll-behavior:smooth;scroll-padding-top:90px}
body{margin:0;background:var(--page);color:var(--ink);font:16px/1.85 "Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
button,input{font:inherit}
button{cursor:pointer}
button:disabled{opacity:.35;cursor:default}
a{color:inherit;text-decoration:none}
a:hover{color:var(--teal)}
button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--teal);outline-offset:4px}
.icon{width:20px;height:20px;flex:none;vertical-align:middle}

/* 頁首：全站同一個，結構照 Vibe Coding 入口頁（白底黑字、右側區塊連結、黑色「奧微官網」） */
.hdr{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-bottom:1px solid #e6e1ea}
.hdr .in{max-width:1460px;margin:auto;display:flex;align-items:center;gap:28px;padding:0 42px;height:68px}
.reading-progress{position:absolute;bottom:-1px;left:0;height:3px;width:0;background:var(--teal)}
.brand{display:flex;align-items:center;gap:14px}
.brand img{width:58px;height:auto;display:block}
.brand-book{display:grid;line-height:1.3;border-left:1px solid var(--line);padding-left:14px}
.brand-book b{font-size:14px;color:#111}.brand-book small{font-size:11px;color:#555}
.hdr nav{display:flex;gap:24px;margin-left:auto;font-size:13px;color:#111}
.hdr nav a:hover{color:var(--teal)}
.btn-site{flex-shrink:0;background:#111;color:#fff;border-radius:999px;padding:7px 15px;font-size:13px;font-weight:500;line-height:1.5;white-space:nowrap}
.btn-site:hover{background:#333;color:#fff}

/* 左側本章小節 */
.shell{max-width:1460px;margin:auto;padding:0 42px;display:grid;grid-template-columns:250px minmax(0,1fr);gap:56px}
.railcol{border-right:1px solid var(--line)}
.rail{position:sticky;top:68px;max-height:calc(100vh - 68px);overflow:auto;padding:35px 22px 24px 0;scrollbar-width:thin}
.rail-title{display:flex;gap:9px;align-items:center;font-size:11px;font-weight:700;color:var(--plum)}
.rail-title .icon{width:17px}
.rail h2{font-size:13px;color:var(--ink);font-weight:600;margin:12px 0 18px;line-height:1.6}
.rail ol{list-style:none;padding:0;margin:0}
.rail li{position:relative;margin-bottom:2px;border-left:2px solid transparent}
.rail li a{display:grid;grid-template-columns:34px 1fr;gap:6px;align-items:baseline;line-height:1.45;font-size:12.5px;padding:8px 5px 8px 10px;border-radius:0 4px 4px 0;transition:background .2s,color .2s}
.rail li a .n{font:10px/1.4 ui-monospace,monospace;color:#93899c}
.rail li a:hover{background:var(--soft)}
.rail li.on{border-left-color:var(--teal)}
.rail li.on a{background:#e6eeeb;color:#175d55;font-weight:700}
.mbar{display:none}

/* 正文 */
main{min-width:0;padding:36px 0 60px}
.eyebrow{font:11px/1.5 ui-monospace,monospace;color:var(--plum);margin:0 0 10px}
.book{max-width:800px;overflow-wrap:break-word}
.book :not(pre)>code{overflow-wrap:anywhere}
.book h1{font-size:40px;line-height:1.3;font-weight:700;margin:0 0 30px}
.book h2{font-size:27px;line-height:1.5;margin:56px 0 18px;padding-top:26px;border-top:1px solid var(--line);font-weight:700}
.book h3{font-size:20px;line-height:1.6;margin:40px 0 12px;font-weight:600}
.book h3::before{content:"";display:inline-block;width:4px;height:17px;background:var(--teal);margin-right:12px;vertical-align:-2px}
.book h4{font-size:17px;margin:30px 0 10px;font-weight:600}
.secno{font:0.72em ui-monospace,monospace;color:var(--teal);margin-right:12px;vertical-align:.08em}
.book p,.book li{font-size:16px;color:#3f3a47;line-height:1.95}
.book p{margin:0 0 16px}
.book ul,.book ol{padding-left:24px;margin:0 0 18px}
.book li{margin:6px 0}
.book li::marker{color:var(--teal)}
.book a{border-bottom:1px solid #b9b0c1}
.book strong{color:var(--ink)}
.book blockquote{margin:22px 0;padding:14px 22px;border-left:3px solid #b4a5c2;background:#f1ebf6}
.book blockquote p:last-child{margin-bottom:0}
.book code{font:.88em ui-monospace,"SFMono-Regular",Menlo,monospace;background:#eee7f4;padding:1px 5px;border-radius:3px}
.book pre{background:#fff;border:1px solid #dcd2e5;border-radius:6px;padding:16px 18px;overflow:auto;margin:20px 0;line-height:1.6}
.book pre code{background:none;padding:0;font-size:13px}
.fig{margin:28px 0;text-align:center}
.fig img{max-width:100%;height:auto;background:#fff;border:1px solid var(--line);border-radius:4px}
.fig figcaption{font-size:13px;color:var(--muted);margin-top:8px}
.tw{overflow-x:auto;margin:22px 0}
.tw table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.75;background:#fff}
.tw th{text-align:left;color:var(--teal);font-size:13px;border-bottom:2px solid #a7bdb7;padding:10px 14px;background:#e8f0ed}
.tw td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.math.block{overflow-x:auto;margin:18px 0}
.footnotes{margin-top:48px;border-top:1px solid var(--line);font-size:13px}
.footnotes li,.footnotes p{font-size:13px;line-height:1.8}
.footnote-ref a{border:0;font-size:.8em}

/* 實驗框：預設收合 */
details.exp{margin:24px 0;border:1px solid #cfc3d9;border-radius:6px;background:#fff}
details.exp>summary{cursor:pointer;padding:13px 20px;font-weight:600;font-size:15px;color:var(--plum);background:#eee7f4;border-radius:6px;list-style:none}
details.exp>summary::-webkit-details-marker{display:none}
details.exp>summary::before{content:"＋";display:inline-block;width:22px;color:var(--teal)}
details.exp[open]>summary{border-radius:6px 6px 0 0;border-bottom:1px solid #dbd0e4}
details.exp[open]>summary::before{content:"－"}
details.exp>:not(summary){margin-left:22px;margin-right:22px}
details.exp>:nth-child(2){margin-top:16px}
.exp-link{font-size:13px}

/* 講解動畫 */
figure.anim{margin:34px 0;max-width:960px;background:#fff;border:1px solid #cfc3d9;border-radius:8px;overflow:hidden}
.anim-stage{padding:22px 24px 18px}
figure.anim figcaption{padding:13px 24px;background:#e8f0ed;border-top:1px solid #c9dcd5;font-size:14px;line-height:1.7;color:#24534d}
figure.anim figcaption b{color:var(--teal)}
/* 講解動畫播放器（web/explainer.js）：1920×1080 舞台等比縮放；字幕用網頁文字，預留兩行高度，換句時版面不跳 */
.ex-frame{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:6px;background:#fff;border:1px solid var(--line);cursor:pointer}
.ex-stage{position:absolute;left:0;top:0;width:1920px;height:1080px;transform-origin:0 0;overflow:hidden;color:var(--ink);line-height:1.3}
.ex-big{position:absolute;left:50%;top:50%;width:76px;height:76px;margin:-38px 0 0 -38px;border:0;border-radius:50%;background:rgba(102,80,119,.92);box-shadow:0 8px 24px rgba(40,37,50,.25);display:grid;place-items:center;padding:0}
.ex-big svg{width:34px;height:34px;fill:#fff;margin-left:4px}
.ex-big[hidden]{display:none}
.ex-cap{min-height:1.7em;margin:12px 0 0;font-size:16px;line-height:1.7;color:var(--ink);text-align:center}
@media (max-width:760px){.ex-cap{min-height:3.4em}}
.ex-ctl{display:flex;gap:12px;align-items:center;margin-top:6px}
.ex-play{min-width:72px;border:0;border-radius:999px;background:var(--plum);color:#fff;padding:6px 16px;font-size:14px;line-height:1.6}
.ex-seek{flex:1;min-width:0;accent-color:var(--plum)}
.ex-time{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.anim-src{display:block;font-size:11px;color:var(--muted);margin-top:2px}

/* 上一篇／下一篇與頁尾 */
.pn{max-width:800px;display:flex;justify-content:space-between;gap:16px;margin:56px 0 0;border-top:1px solid var(--line);padding-top:22px}
.pn a{display:flex;flex-direction:column;font-weight:600;font-size:15px;padding:10px 0}
.pn a small{font-weight:400;font-size:11px;color:var(--muted)}
.pn .next{text-align:right;margin-left:auto}
.foot{max-width:800px;display:flex;justify-content:space-between;gap:8px 20px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:24px;padding-top:18px;font-size:12px;color:var(--muted);line-height:1.8}
.foot span a{border-bottom:1px solid #b9b0c1}
.totop{white-space:nowrap}


@media(max-width:1100px){.hdr nav{display:none}.btn-site{margin-left:auto}}
@media(max-width:1200px) and (min-width:1001px){.shell{padding:0 25px;grid-template-columns:220px minmax(0,1fr);gap:32px}}
@media(max-width:1000px){
  html{scroll-padding-top:130px}
  .hdr .in{padding:0 20px;height:62px}
  .shell{display:block;padding:0 20px}
  .railcol{border:0}
  .rail{display:none;position:static;max-height:none;padding:12px 0;border-bottom:1px solid var(--line)}
  .rail.open{display:block}
  .rail-title,.rail h2{display:none}
  .mbar{position:sticky;top:62px;margin:0 -20px;z-index:40;background:var(--page);border-bottom:1px solid var(--line);padding:8px 20px;display:flex;align-items:center;gap:13px}
  .mbar button{border:1px solid var(--line);border-radius:3px;background:#fff;color:var(--plum);width:34px;height:34px;display:grid;place-items:center}
  .now{font-size:12px;color:var(--muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  main{padding-top:24px}
  .book h1{font-size:32px}
}
@media(max-width:600px){
  .brand small{display:none}
  .brand{gap:10px}.brand-book{padding-left:10px}.brand-book b{font-size:13px}.hdr .in{gap:12px}
  .book h2{font-size:23px}
  .book h3{font-size:18px}
  .anim-stage{padding:16px 14px}
  figure.anim figcaption{padding:12px 14px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
