/* ===== LLM → Agentic LLM 文档站 ·  docs.python.org 风格主题 =====
   忠实复刻 python_docs_theme (pydoctheme + classic) 的视觉：
   官方字体栈、#0090c0 链接、灰色 #eee 粘性侧栏、#eeffcc/#ac9 代码块、
   Sphinx 风格标题/告示框、related 面包屑条。 */

:root{
  --py-blue:#3776ab; --py-blue-d:#2b5b84; --py-yellow:#ffd43b;
  --link:#0090c0; --link-visited:#00608f; --link-hover:#0095c4;
  --text:#222; --head:#1a1a1a; --muted:#666; --line:#ccc; --line-soft:#e1e4e5;
  --side-bg:#eee; --side-text:#444;
  --code-bg:#f4f7ec; --code-border:#ac9; --inline-bg:#f5f6f8;
  --font:-apple-system,BlinkMacSystemFont,"avenir next",avenir,"segoe ui","helvetica neue",helvetica,Cantarell,Ubuntu,roboto,noto,"Microsoft YaHei","PingFang SC","Hiragino Sans GB",arial,sans-serif;
  --mono:Menlo,Consolas,Monaco,"Liberation Mono","Lucida Console","DejaVu Sans Mono",monospace;
  --side-w:min(25vw,340px);
  --maxw:1240px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font); color:var(--text); background:#fff; margin:0;
  font-size:16px; line-height:1.6; -webkit-text-size-adjust:100%}

a{color:var(--link); text-decoration:underline; text-decoration-thickness:1px}
a:visited{color:var(--link-visited)}
a:hover{color:var(--link-hover)}
/* 导航类链接不加下划线（仿 pydoctheme） */
.related a,.sphinxsidebar a,.header a,.pager a,.cards a,.badge,.footer a{text-decoration:none}
.related a:hover,.sphinxsidebar a:hover,.pager a:hover,.cards a:hover,.footer a:hover{text-decoration:underline}

/* ---------- 顶部 header（Python 徽标 + 文字标） ---------- */
.header{background:#fff;border-bottom:1px solid var(--line)}
.header-inner{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;gap:12px;padding:11px 18px}
.header .logo{display:flex;align-items:center;gap:9px;color:#222;font-weight:700;font-size:19px;white-space:nowrap}
.header .logo svg{width:30px;height:30px;display:block;flex:0 0 auto}
.header .logo .word{font-weight:700}
.header .logo .word b{color:var(--py-blue-d)}
.header .logo .sub{color:var(--muted);font-weight:400;font-size:13px;margin-left:2px}
.header .spacer{flex:1}
.header .ver{color:var(--muted);font-size:12.5px;border:1px solid var(--line);border-radius:4px;padding:3px 9px;white-space:nowrap}
.header .hsearch input{width:190px;max-width:38vw;padding:6px 10px;border:1px solid #999;border-radius:3px;font-size:13px;font-family:var(--font)}
.menu-btn{display:none;background:transparent;border:0;color:var(--py-blue-d);font-size:23px;line-height:1;cursor:pointer;padding:4px 8px}

/* ---------- related（面包屑）条 ---------- */
.related{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted);font-size:13px}
.related-inner{max-width:var(--maxw);margin:0 auto;padding:7px 18px}
.related ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.related li{display:inline-flex;align-items:center;gap:5px}
.related li.sep::after{content:"»";color:#aaa;margin:0 2px}
.related a{color:#444}
.related a:hover{color:var(--link-hover)}
.related li.right{margin-left:auto;gap:10px}
.related-bottom{border-top:1px solid var(--line)}

/* ---------- 主体两栏：左侧粘性侧栏 + 正文 ---------- */
.document{max-width:var(--maxw);margin:0 auto;display:flex;align-items:flex-start;gap:0}
.sphinxsidebar{flex:0 0 var(--side-w);width:var(--side-w);position:sticky;top:0;max-height:100vh;
  overflow-y:auto;background:var(--side-bg);color:var(--side-text);border-radius:5px;
  margin:14px 0 14px 10px;font-size:14px;line-height:1.4}
.sphinxsidebarwrapper{padding:14px 16px 26px}
.sphinxsidebar .s-logo{display:flex;align-items:center;gap:7px;margin:2px 0 6px;color:#333;font-weight:700;font-size:14px}
.sphinxsidebar .s-logo svg{width:20px;height:20px}
.sphinxsidebar h3{font-size:1.32em;font-weight:400;color:#444;margin:1.4em 0 .35em;line-height:1.25}
.sphinxsidebar h3:first-of-type{margin-top:.5em}
.sphinxsidebar ul{list-style:none;margin:.25em 0;padding-left:.4em}
.sphinxsidebar ul ul{padding-left:1em;border-left:1px solid #ddd;margin-left:.25em}
.sphinxsidebar li{margin:.28em 0}
.sphinxsidebar a{color:#444;font-size:.94em}
.sphinxsidebar a.current{font-weight:700;color:var(--py-blue-d)}
.sphinxsidebar .toctree a.active{font-weight:700;color:var(--py-blue-d)}
.sphinxsidebar .prevnext{font-size:.92em;color:#555;margin:.3em 0}
.sphinxsidebar .prevnext b{color:#333;font-weight:600}
.sphinxsidebar .searchbox input{width:100%;padding:6px 9px;border:1px solid #999;border-radius:3px;font-size:13px;font-family:var(--font)}

.documentwrapper{flex:1 1 auto;min-width:0}
.bodywrapper{min-width:0}
.body{max-width:850px;padding:8px 30px 60px;min-width:0;overflow-wrap:break-word}

/* ---------- 正文排版（Sphinx body 风格） ---------- */
.breadcrumb{font-size:12.5px;color:var(--muted);margin:4px 0 12px}
.body h1,.body h2,.body h3,.body h4,.body h5,.body h6{
  font-family:var(--font);font-weight:400;color:var(--head);line-height:1.3;
  scroll-margin-top:12px;margin:0}
.body h1{font-size:200%;margin:.1em 0 .5em}
.body h2{font-size:158%;margin:1.3em 0 .5em;padding-bottom:4px;border-bottom:1px solid var(--line-soft)}
.body h3{font-size:135%;margin:1.1em 0 .4em;color:#27405e}
.body h4{font-size:118%;margin:1em 0 .35em;color:#2f3a49}
.body p{margin:.7em 0}
.body ul,.body ol{margin:.7em 0;padding-left:26px}
.body li{margin:.25em 0}
.body blockquote{margin:.8em 0;padding:.2em 0 .2em 1em;border-left:3px solid var(--line-soft);color:#444}
hr{border:0;border-top:1px solid var(--line);margin:30px 0}

/* 标题旁的 ¶ 永久链接（仿 Sphinx headerlink） */
.headerlink{visibility:hidden;color:#bcbcbc;font-size:.72em;padding:0 6px;text-decoration:none;font-weight:400}
h1:hover .headerlink,h2:hover .headerlink,h3:hover .headerlink,h4:hover .headerlink{visibility:visible}
.headerlink:hover{background:#aaa;color:#fff;border-radius:2px}

/* ---------- hero / 徽章 / lead ---------- */
.hero{border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:8px}
.hero h1{font-size:210%;margin:.1em 0 .4em}
.hero .sub{color:var(--muted);font-size:14px;margin:3px 0}
.badge{display:inline-block;background:#eef4fb;color:var(--py-blue-d);border:1px solid var(--py-blue);
  border-radius:20px;padding:2px 11px;font-size:12px;margin:7px 6px 0 0}
.lead{font-size:16px;background:#fafdff;border:1px solid var(--line-soft);border-radius:6px;padding:14px 18px;margin:14px 0}
.small{font-size:13px;color:var(--muted)}
.ref{font-size:13.6px;line-height:1.6} .ref li{margin:6px 0}

/* ---------- 表格 ---------- */
.tbl{overflow-x:auto;margin:14px 0;-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%;font-size:13.6px}
th,td{border:1px solid var(--line);padding:7px 9px;vertical-align:top;text-align:left}
th{background:#ededf3;color:#22405e;font-weight:600}
tr:nth-child(even) td{background:#fafafa}

/* ---------- 代码（Python 文档招牌的浅绿底 + #ac9 边） ---------- */
code,tt{font-family:var(--mono);font-size:.86em;background:var(--inline-bg);
  border:1px solid var(--line-soft);border-radius:3px;padding:1px 4px;color:#222}
pre{font-family:var(--mono);font-size:.88em;line-height:1.4;color:#333;
  background:var(--code-bg);border:1px solid var(--code-border);border-left:none;border-right:none;
  border-radius:3px;padding:8px 12px;overflow-x:auto;margin:14px 0}
pre code{background:none;border:0;padding:0;font-size:1em;color:inherit}

/* ---------- 图 / SVG 框图 ---------- */
figure{margin:22px 0;padding:14px;background:#fcfdff;border:1px solid var(--line-soft);border-radius:8px}
figure svg{width:100%;height:auto;display:block}
figcaption{text-align:center;color:var(--muted);font-size:13px;margin-top:10px;font-style:italic}

/* ---------- 告示框（仿 Sphinx admonition；映射现有 .callout） ---------- */
.callout,.admonition{border:1px solid var(--line);border-left-width:4px;background:#eee;
  padding:10px 16px;border-radius:0 4px 4px 0;margin:16px 0;font-size:14.5px}
.callout{border-left-color:#b8860b;background:#ffffe0}        /* 默认：参见/注意（淡黄） */
.callout.blue{border-left-color:var(--py-blue);background:#e7f2fa}
.callout.green{border-left-color:#2e8b57;background:#e3f7e3}
.callout.red{border-left-color:#c0504d;background:#ffe4e4}
.callout b:first-child,.admonition-title{font-weight:700}

/* ---------- 卡片导航 ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin:18px 0}
.card{border:1px solid var(--line-soft);border-radius:8px;padding:14px 16px;background:#fcfdff;
  transition:box-shadow .15s,transform .15s}
.card:hover{box-shadow:0 4px 14px rgba(0,0,0,.08);transform:translateY(-2px)}
.card a{font-weight:700;font-size:15.5px;color:var(--link)}
.card p{margin:6px 0 0;font-size:13.2px;color:var(--muted)}
.card .k{display:inline-block;font-size:11.5px;color:var(--py-blue-d);background:#eef4fb;
  border:1px solid var(--py-blue);border-radius:5px;padding:1px 6px;margin-top:8px}

/* ---------- 上一章 / 下一章 ---------- */
.pager{display:flex;justify-content:space-between;gap:12px;margin:40px 0 0;border-top:1px solid var(--line);padding-top:16px;font-size:14px}
.pager a{display:inline-block;max-width:48%}

/* ---------- 页脚 ---------- */
.footer{color:#555;text-align:center;font-size:12.5px;padding:18px 18px 26px;border-top:1px solid var(--line);
  max-width:var(--maxw);margin:10px auto 0}
.footer a{color:#555;text-decoration:underline}

/* ---------- 返回顶部 ---------- */
#toTop{position:fixed;right:18px;bottom:18px;width:42px;height:42px;border-radius:50%;
  background:var(--py-blue);color:#fff;border:0;font-size:20px;cursor:pointer;display:none;z-index:60;
  box-shadow:0 2px 8px rgba(0,0,0,.25)}

.overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:45}

/* ---------- 响应式 ---------- */
@media (max-width:900px){
  .menu-btn{display:block}
  .header .hsearch,.header .ver{display:none}
  .document{display:block}
  .sphinxsidebar{position:fixed;top:0;left:0;bottom:0;width:284px;max-height:none;margin:0;
    border-radius:0;z-index:50;transform:translateX(-100%);transition:transform .25s ease;
    box-shadow:2px 0 12px rgba(0,0,0,.12)}
  .sphinxsidebar.open{transform:none}
  .overlay.show{display:block}
  .body{max-width:100%;padding:10px 15px 70px}
  .related li.right{display:none}
  .hero h1{font-size:172%}
}

@media print{
  .header,.related,.sphinxsidebar,.overlay,#toTop,.menu-btn{display:none!important}
  .document,.footer{display:block;max-width:none;margin:0}
  .body{max-width:none;padding:0}
  a{color:#000;text-decoration:none}
}
