/* yroots docs theme -- shares the design tokens of the landing page at ../ */

:root{
  --ink:#0E1420;
  --panel:#161D2C;
  --panel-2:#1B2338;
  --paper:#EDEAE0;
  --paper-dim:#C9C4B4;
  --muted:#7C879C;
  --hair:#2A3350;
  --accent-y:#E8A33D;
  --accent-j:#4FB6C9;
  --accent: var(--accent-y);
  --code-bg:#0B0F19;
  --mono:'IBM Plex Mono', ui-monospace, monospace;
  --sans:'IBM Plex Sans', system-ui, sans-serif;
  --serif:'Newsreader', Georgia, serif;
  --maxw:1180px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--ink);
  color:var(--paper);
  font-family:var(--sans);
  font-size:15px;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--accent); text-decoration:none;}
a:hover{text-decoration:underline;}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 28px;}
.eyebrow{
  font-family:var(--mono); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--muted);
}

/* ---------- header (mirrors the landing page) ---------- */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(14,20,32,.86);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--hair);
}
header nav.wrap{display:flex; align-items:center; justify-content:space-between; height:64px;}
.brand{display:flex; align-items:center; gap:10px; font-family:var(--mono); font-size:15px; letter-spacing:.02em;}
.brand svg{display:block;}
.brand b{color:var(--paper); font-weight:600;}
.brand span{color:var(--muted);}
.navlinks{display:flex; align-items:center; gap:28px; font-family:var(--mono); font-size:13px; color:var(--paper-dim);}
.navlinks a{color:var(--paper-dim); text-decoration:none; opacity:.8; transition:opacity .2s, color .2s;}
.navlinks a:hover{opacity:1; color:var(--accent); text-decoration:none;}
.navlinks .gh{border:1px solid var(--hair); padding:6px 12px; border-radius:3px;}
@media (max-width:860px){ .navlinks a:not(.gh){display:none;} }

/* ---------- shell ---------- */
.docs-shell{
  display:grid;
  grid-template-columns:232px minmax(0,1fr);
  gap:52px;
  align-items:start;
  padding-top:44px;
  padding-bottom:72px;
}
.docs-side-inner{position:sticky; top:104px; max-height:calc(100vh - 140px); overflow-y:auto; padding-right:6px;}
.docs-side-label{margin:26px 0 10px;}
.docs-side-label:first-child{margin-top:0;}
.docs-search input{
  width:100%; background:var(--panel); border:1px solid var(--hair); border-radius:6px;
  padding:9px 12px; color:var(--paper); font-family:var(--mono); font-size:12.5px;
}
.docs-search input::placeholder{color:var(--muted);}
.docs-search input:focus{outline:none; border-color:var(--accent); }

.docs-side ul{list-style:none; margin:0; padding:0;}
.docs-side li{margin:0;}
.docs-side a{
  display:block; padding:6px 0 6px 12px; border-left:1px solid var(--hair);
  font-family:var(--mono); font-size:12.5px; line-height:1.45;
  color:var(--paper-dim); text-decoration:none; transition:color .18s, border-color .18s;
}
.docs-side a:hover{color:var(--accent); border-left-color:var(--accent); text-decoration:none;}
.docs-side li.current > a, .docs-side a.current{color:var(--accent); border-left-color:var(--accent);}
.docs-side li ul a{padding-left:24px; font-size:12px; color:var(--muted);}
/* the toctree's own :caption: duplicates the "Contents" label above it */
.docs-side .caption{display:none;}
.docs-side-extra a{padding-left:12px;}

/* ---------- content ---------- */
.docs-main{min-width:0; max-width:820px;}
.docs-main h1, .docs-main h2, .docs-main h3, .docs-main h4{
  font-family:var(--serif); font-weight:500; letter-spacing:-.01em; color:var(--paper);
}
.docs-main h1{font-size:clamp(32px,4.4vw,46px); line-height:1.06; margin:0 0 22px;}
.docs-main h2{font-size:27px; line-height:1.15; margin:46px 0 16px; padding-bottom:10px; border-bottom:1px solid var(--hair);}
.docs-main h3{font-size:20px; margin:32px 0 12px;}
.docs-main h4{font-size:17px; margin:26px 0 10px;}
.docs-main p{line-height:1.7; color:var(--paper-dim); margin:0 0 16px;}
.docs-main ul, .docs-main ol{color:var(--paper-dim); line-height:1.7; padding-left:22px;}
.docs-main li{margin:6px 0;}
.docs-main strong{color:var(--paper); font-weight:600;}
.docs-main hr{border:0; border-top:1px solid var(--hair); margin:34px 0;}
.docs-main a.reference{color:var(--accent);}

.headerlink{
  color:var(--muted); opacity:0; margin-left:10px; font-size:.7em;
  text-decoration:none; transition:opacity .18s;
}
h1:hover .headerlink, h2:hover .headerlink, h3:hover .headerlink,
h4:hover .headerlink, dt:hover .headerlink{opacity:1;}

/* ---------- code ---------- */
code, tt, .mono, pre{font-family:var(--mono);}
code.literal, code.docutils{
  background:var(--panel); border:1px solid var(--hair); border-radius:4px;
  padding:1px 5px; font-size:12.5px; color:var(--accent-j);
}
div.highlight, pre{
  background:var(--code-bg); border:1px solid var(--hair); border-radius:8px;
  color:#D7DCEA;
}
div.highlight{margin:18px 0;}
div.highlight pre{
  border:0; border-radius:8px; margin:0; padding:16px 18px;
  font-size:12.5px; line-height:1.7; overflow-x:auto;
}
.docs-main pre{padding:16px 18px; font-size:12.5px; line-height:1.7; overflow-x:auto;}

/* ---------- autodoc signatures ---------- */
dl.py > dt.sig, dl.function > dt.sig, dl.class > dt.sig, dl.method > dt.sig{
  background:var(--panel);
  border:1px solid var(--hair);
  border-left:3px solid var(--accent);
  border-radius:6px;
  padding:12px 16px;
  margin:26px 0 0;
  font-family:var(--mono); font-size:13px; line-height:1.7;
  color:var(--paper); overflow-x:auto;
}
dl.py > dt.sig .sig-prename, dt.sig .sig-prename{color:var(--muted); font-weight:400;}
dt.sig .sig-name{color:var(--accent); font-weight:600;}
dt.sig .sig-param{color:#D7DCEA; font-style:normal;}
dt.sig .sig-paren, dt.sig .o, dt.sig .p{color:var(--muted);}
dt.sig .default_value{color:#8FCFB0;}
dt.sig em.property{color:var(--accent-j); font-style:normal;}
dl.py > dd{
  margin:0; padding:20px 0 6px 18px;
  border-left:1px solid var(--hair);
}
dl.py dl.py > dt.sig{margin-top:20px; border-left-color:var(--accent-j);}

/* Parameters / Returns / Raises blocks */
dl.field-list{display:block; margin:20px 0;}
dl.field-list > dt{
  font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted); margin:18px 0 8px; font-weight:500;
}
dl.field-list > dd{margin:0; padding:0;}
dl.field-list > dd > ul{padding-left:18px;}
dl.field-list > dd p{margin:4px 0;}
dl.field-list strong{color:var(--paper);}
dl.field-list em, .sig-param em{color:var(--accent-j); font-style:normal;}
.docs-main p.rubric{
  font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted); margin:26px 0 10px; font-weight:500;
}

/* ---------- admonitions ---------- */
.admonition{
  background:var(--panel); border:1px solid var(--hair); border-left:3px solid var(--accent-j);
  border-radius:6px; padding:14px 18px; margin:22px 0;
}
.admonition > .admonition-title{
  font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--accent-j); margin:0 0 8px;
}
.admonition p:last-child{margin-bottom:0;}
.admonition.warning, .admonition.danger{border-left-color:var(--accent);}
.admonition.warning > .admonition-title, .admonition.danger > .admonition-title{color:var(--accent);}

/* ---------- tables ---------- */
table.docutils{border-collapse:collapse; margin:22px 0; font-size:13.5px; width:100%;}
table.docutils th, table.docutils td{
  border:1px solid var(--hair); padding:9px 12px; text-align:left; color:var(--paper-dim);
}
table.docutils th{
  background:var(--panel); color:var(--paper);
  font-family:var(--mono); font-size:11.5px; letter-spacing:.06em; text-transform:uppercase;
}

/* ---------- search results / index ---------- */
ul.search{list-style:none; padding:0;}
ul.search li{
  background:var(--panel); border:1px solid var(--hair); border-radius:6px;
  padding:14px 16px; margin:12px 0;
}
ul.search li a{font-family:var(--mono); font-size:13.5px;}
#search-results h2{margin-top:30px;}
.docs-main table.indextable td{border:0; vertical-align:top;}
.docs-main .genindex-jumpbox{
  font-family:var(--mono); font-size:12.5px; border-top:1px solid var(--hair);
  border-bottom:1px solid var(--hair); padding:12px 0; margin:18px 0;
}
.highlighted{background:rgba(232,163,61,.28); border-radius:2px; padding:0 2px;}

/* ---------- footer (mirrors the landing page) ---------- */
footer{border-top:1px solid var(--hair); padding:44px 0 60px;}
footer .wrap{display:flex; justify-content:space-between; gap:24px; flex-wrap:wrap; align-items:flex-start;}
footer p{font-family:var(--mono); font-size:12px; color:var(--muted); max-width:460px; line-height:1.7; margin:0;}
footer .fcol a{display:block; color:var(--paper-dim); font-family:var(--mono); font-size:12.5px; margin-bottom:8px; text-decoration:none;}
footer .fcol a:hover{color:var(--accent);}

/* ---------- narrow screens ---------- */
@media (max-width:900px){
  .docs-shell{grid-template-columns:minmax(0,1fr); gap:28px; padding-top:30px;}
  .docs-side-inner{position:static; max-height:none; border-bottom:1px solid var(--hair); padding-bottom:22px;}
  .docs-main{max-width:none;}
}
