/* 小忧的图书室 —— 样式（阅读优先） */

:root{
  --paper:#faf7f2;--paper-2:#f3ede4;--card:#ffffff;
  --ink:#2f2a25;--ink-soft:#7a6f64;--ink-faint:#a89d90;
  --line:#e6ddd1;--accent:#b5714a;--accent-soft:#e8c9b0;
  --code-bg:#f4efe8;--mark:#ffe9a8;--radius:14px;
  --side-w:310px;--read-w:760px;
  --sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
  --serif:"Songti SC","Noto Serif SC",Georgia,"Times New Roman",serif;
  --mono:"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.75;-webkit-font-smoothing:antialiased}

/* 顶栏 */
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;height:58px;padding:0 18px;
  background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.menu-btn{display:none;width:36px;height:36px;font-size:17px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);cursor:pointer}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);font-weight:800;font-size:16px;white-space:nowrap}
.brand-icon{font-size:19px}
.search-wrap{position:relative;margin-left:auto;flex:0 1 380px}
#search{width:100%;padding:9px 14px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);outline:none;transition:border-color .2s,box-shadow .2s}
#search:focus{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 12%,transparent)}
.search-count{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:11.5px;color:var(--ink-faint);pointer-events:none}

/* 布局 */
.layout{display:flex;align-items:flex-start}
.sidebar{position:sticky;top:58px;flex:0 0 var(--side-w);width:var(--side-w);height:calc(100vh - 58px);overflow-y:auto;
  background:var(--paper-2);border-right:1px solid var(--line);display:flex;flex-direction:column}
.side-head{padding:18px 18px 12px;border-bottom:1px solid var(--line)}
.side-title{margin:0;font-weight:800;font-size:14px}
.side-sub{margin:4px 0 0;font-size:12px;color:var(--ink-soft)}
.tree{flex:1;padding:10px 10px 20px}
.loading{color:var(--ink-faint);font-size:13px;padding:12px}

/* 课程组 */
.course{margin-bottom:4px}
.course-head{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;border:0;border-radius:10px;background:transparent;
  color:var(--ink);cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:700;text-align:left;transition:background .16s}
.course-head:hover{background:color-mix(in srgb,var(--accent) 9%,transparent)}
.course-head .arrow{margin-left:auto;font-size:10px;color:var(--ink-faint);transition:transform .2s}
.course-head[aria-expanded="true"] .arrow{transform:rotate(90deg)}
.course-meta{font-size:11px;color:var(--ink-faint);font-weight:400}
.course-body{display:none;padding:2px 0 6px 8px}
.course-body.open{display:block}

/* 课节 */
.lesson{margin:1px 0}
.lesson-head{display:flex;align-items:center;gap:7px;width:100%;padding:6px 9px;border:0;border-radius:8px;background:transparent;
  color:var(--ink-soft);cursor:pointer;font-family:inherit;font-size:12.5px;text-align:left;transition:background .14s,color .14s}
.lesson-head:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--ink)}
.lesson-head .dot{width:5px;height:5px;border-radius:50%;background:var(--accent-soft);flex:none}
.lesson-head .cnt{margin-left:auto;font-size:10.5px;color:var(--ink-faint)}
.lesson-docs{display:none;padding:1px 0 4px 16px}
.lesson-docs.open{display:block}

/* 文档项 */
.docitem{display:block;width:100%;padding:6px 9px;margin:1px 0;border:0;border-radius:7px;background:transparent;color:var(--ink-soft);
  cursor:pointer;text-align:left;font-family:inherit;font-size:12.5px;line-height:1.5;transition:background .14s,color .14s;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.docitem:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--ink)}
.docitem.active{background:var(--accent);color:#fff}
.side-foot{padding:12px 18px 16px;border-top:1px solid var(--line);font-size:11px;color:var(--ink-faint)}
.side-foot p{margin:2px 0}

/* 阅读区 */
.reader{flex:1;min-width:0;padding:34px 34px 90px;display:flex;flex-direction:column;align-items:center}
.welcome{max-width:var(--read-w);width:100%;padding-top:26px}
.welcome h1{margin:0 0 14px;font-size:clamp(24px,4vw,34px);letter-spacing:-.4px}
.welcome p{margin:0 0 10px;color:var(--ink-soft);font-size:15px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:12px;margin:26px 0 22px}
.wcard{display:block;text-align:left;width:100%;padding:16px 17px;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--card);cursor:pointer;font-family:inherit;transition:transform .16s,border-color .16s,box-shadow .16s}
.wcard:hover{transform:translateY(-3px);border-color:var(--accent-soft);box-shadow:0 12px 26px color-mix(in srgb,var(--accent) 13%,transparent)}
.wcard .ico{font-size:22px}
.wcard h3{margin:7px 0 4px;font-size:14.5px;color:var(--ink)}
.wcard p{margin:0;font-size:12.5px;color:var(--ink-soft);line-height:1.6}
.wcard .n{margin-top:9px;font-size:11.5px;color:var(--accent);font-weight:700}
.tip{font-size:12.5px;color:var(--ink-faint)}
kbd{font-family:var(--mono);font-size:11px;padding:1px 6px;border:1px solid var(--line);border-radius:5px;background:var(--card)}

/* 文档 */
.doc{display:block;width:100%;max-width:var(--read-w);background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:40px 46px 52px;box-shadow:0 2px 20px color-mix(in srgb,var(--ink) 4%,transparent);animation:fade .35s ease}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.doc::before{content:"";display:block;width:44px;height:3px;margin-bottom:22px;background:linear-gradient(90deg,var(--accent),var(--accent-soft));border-radius:2px}
.doc h1,.doc h2,.doc h3,.doc h4{font-family:var(--serif);line-height:1.35;letter-spacing:-.2px}
.doc h1{font-size:26px;margin:0 0 22px}
.doc h2{font-size:21px;margin:38px 0 14px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.doc h3{font-size:17px;margin:26px 0 10px}
.doc h4{font-size:15px;margin:20px 0 8px;color:var(--ink-soft)}
.doc p{margin:0 0 15px;font-size:15.5px;line-height:1.85;font-family:var(--serif)}
.doc ul,.doc ol{margin:0 0 15px;padding-left:24px;font-family:var(--serif);font-size:15.5px}
.doc li{margin:5px 0;line-height:1.8}
.doc a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-soft)}
.doc a:hover{border-bottom-color:var(--accent)}
.doc blockquote{margin:18px 0;padding:12px 18px;border-left:3px solid var(--accent-soft);background:var(--paper-2);border-radius:0 10px 10px 0;color:var(--ink-soft)}
.doc blockquote p{margin:0;font-size:14.5px}
.doc code{font-family:var(--mono);font-size:13px;background:var(--code-bg);padding:2px 6px;border-radius:5px}
.doc pre{margin:18px 0;padding:16px 18px;overflow-x:auto;background:var(--code-bg);border:1px solid var(--line);border-radius:11px;font-size:13px;line-height:1.7}
.doc pre code{background:none;padding:0;font-size:13px}
.doc table{width:100%;border-collapse:collapse;margin:18px 0;font-size:14px;display:block;overflow-x:auto}
.doc th,.doc td{border:1px solid var(--line);padding:8px 12px;text-align:left}
.doc th{background:var(--paper-2);font-weight:700}
.doc img{max-width:100%;border-radius:10px}
.doc hr{border:0;border-top:1px solid var(--line);margin:30px 0}
.doc strong{color:color-mix(in srgb,var(--ink) 92%,var(--accent))}
mark{background:var(--mark);padding:0 2px;border-radius:3px}

/* 翻页 */
.docnav{display:flex;gap:10px;justify-content:space-between;width:100%;max-width:var(--read-w);margin-top:20px}
.nbtn{padding:9px 16px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);cursor:pointer;
  font-family:inherit;font-size:13px;transition:border-color .16s,transform .12s}
.nbtn:hover:not(:disabled){border-color:var(--accent);transform:translateY(-1px)}
.nbtn:disabled{opacity:.38;cursor:not-allowed}
.nbtn.ghost{color:var(--ink-soft)}
.scrim{display:none;position:fixed;inset:0;background:color-mix(in srgb,#000 34%,transparent);z-index:25}
.progress{position:fixed;top:0;left:0;height:2px;background:var(--accent);z-index:40;width:0;transition:width .1s}

/* 响应式 */
@media (max-width:900px){
  .menu-btn{display:block}
  .sidebar{position:fixed;top:0;left:0;height:100vh;z-index:26;transform:translateX(-100%);transition:transform .26s ease;box-shadow:0 0 40px color-mix(in srgb,#000 20%,transparent)}
  .sidebar.open{transform:none}
  .scrim.show{display:block}
  .reader{padding:22px 16px 80px}
  .doc{padding:26px 20px 36px}
  .doc p,.doc ul,.doc ol{font-size:15px}
  .brand-text{display:none}
  .search-wrap{flex:1 1 auto}
}
@media (max-width:520px){.doc h1{font-size:22px}.doc h2{font-size:18px}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001ms !important;transition-duration:.001ms !important}html{scroll-behavior:auto}}
