/* Rev 19: foldable app sidebar (desktop icon rail, mobile drawer). Soft mono tokens from app-theme.css. */
.app-body .sidebar{overflow-x:hidden;overflow-y:auto}
.nav-ic{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.sb-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:34px;min-height:40px}
.app-body .sidebar .brand{margin:0;font-size:28px;letter-spacing:-.04em;display:flex;align-items:center!important;gap:9px!important;min-width:0;overflow:visible;color:var(--r-text);text-decoration:none}
.app-body .sidebar .brand .wordmark{overflow:visible}
.sb-toggle,.sb-close,.sb-burger{display:inline-grid;place-items:center;width:36px;height:36px;flex:none;border:1px solid var(--r-line-2);border-radius:6px;background:transparent;color:var(--r-text);cursor:pointer;padding:0}
.sb-toggle:hover,.sb-close:hover,.sb-burger:hover{background:var(--r-grid)}
.sb-close,.sb-burger{display:none}
.app-body .sidebar nav{display:flex;flex-direction:column;gap:4px}
.nav-sec{display:flex;flex-direction:column;gap:4px}
.nav-sec+.nav-sec{margin-top:14px}
.app-body .sidebar nav .nav-group{display:flex;align-items:center;justify-content:space-between;width:100%;background:transparent;border:0;border-radius:6px;cursor:pointer;
 font:600 11px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--r-text-2p);padding:6px 14px;min-height:28px}
.app-body .sidebar nav .nav-group:hover{color:var(--r-text)}
.nav-chev{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.5}
.nav-group[aria-expanded=false] .nav-chev{transform:rotate(-90deg)}
.nav-items{display:flex;flex-direction:column;gap:4px}.nav-items[hidden]{display:none}
.app-body .sidebar nav a{display:flex;align-items:center;gap:11px;text-align:left;min-width:0;white-space:nowrap}
.nav-label{overflow:hidden;text-overflow:ellipsis}
.app-body .signature p{font:500 13px/1.45 Manrope,sans-serif;letter-spacing:0;color:var(--r-text-2p)}
.app-body .signature a{display:flex;align-items:center;gap:8px;margin-top:14px;min-height:36px}
.app-body .sidebar :focus-visible,.sb-burger:focus-visible{outline:2px solid var(--r-text);outline-offset:3px}
/* desktop + tablet: keep a column, allow the rail */
@media(min-width:769px){
 .app-body .app-layout{display:grid;grid-template-columns:210px minmax(0,1fr)}
 .app-body .sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:28px 16px}
 .app-body .sidebar nav{flex-direction:column;justify-content:flex-start}
 .app-body .sidebar nav a{font-size:14px;padding:10px 12px;min-height:42px}
 .app-body .signature{display:block}
 .app-body.sb-collapsed .app-layout{grid-template-columns:68px minmax(0,1fr)}
 .sb-collapsed .sidebar{padding:22px 10px}
 .sb-collapsed .sb-head{flex-direction:column;gap:14px}
 .sb-collapsed .sidebar .brand .wordmark,.sb-collapsed .nav-label,.sb-collapsed .nav-chev,.sb-collapsed .signature p{display:none!important}
 .sb-collapsed .sidebar nav a{justify-content:center;padding:10px 0;gap:0}
 .sb-collapsed .sidebar nav .nav-group{justify-content:center;padding:0;min-height:13px;pointer-events:none}
 .sb-collapsed .sidebar nav .nav-group:before{content:'';display:block;width:28px;border-top:1px solid var(--r-grid)}
 .sb-collapsed .nav-items[hidden]{display:flex}
 .sb-collapsed .sb-toggle svg{transform:scaleX(-1)}
 .sb-collapsed .signature a{justify-content:center}
}
@media(min-width:769px) and (max-width:1200px){.app-body .app-layout{grid-template-columns:190px minmax(0,1fr)}}
/* mobile drawer */
@media(max-width:768px){
 .app-body .app-layout{display:block}
 .app-body .sidebar{position:fixed;inset:0 auto 0 0;z-index:60;width:min(84vw,300px);height:100%;display:flex;flex-direction:column;padding:20px 16px;
  transform:translateX(-102%);visibility:hidden;transition:transform 220ms var(--r-ease-out,cubic-bezier(.22,1,.36,1)),visibility 0s linear 220ms;border-right:1px solid var(--r-grid)}
 .sb-open .sidebar{transform:none;visibility:visible;transition:transform 220ms var(--r-ease-out,cubic-bezier(.22,1,.36,1))}
 .app-body .sidebar nav{display:flex;flex-direction:column;width:auto}
 .app-body .sidebar nav a{font-size:15px;padding:11px 12px;min-height:44px;text-align:left}
 .app-body .sidebar nav .nav-group{display:flex!important}
 .app-body .signature{display:block}
 .app-body .sidebar{align-items:stretch;justify-content:flex-start;flex-wrap:nowrap;gap:0}.app-body .sidebar>*{width:100%}.app-body .sidebar .sb-head{margin-bottom:24px}
 .sb-toggle{display:none}.sb-close{display:inline-grid}
 .sb-burger{display:inline-grid;width:44px;height:44px;margin-right:4px}
 .sb-overlay{position:fixed;inset:0;z-index:55;background:rgba(28,28,28,.45);opacity:0;transition:opacity 220ms ease}
 .sb-open .sb-overlay{opacity:1}
 .sb-open{overflow:hidden}
}
html[data-theme=dark] .sb-overlay{background:rgba(8,8,8,.6)}
@media(prefers-reduced-motion:reduce){.app-body .sidebar,.sb-overlay,.nav-chev,.sb-toggle svg{transition:none!important}}
/* Rev 20: sidebar follows the soft palette in both themes (never the near-black ink fill). */
body.app-body .sidebar{background:var(--r-sidebar,#EAEAE6);color:var(--r-text,#1C1C1C);border-right:1px solid var(--r-grid,#DCDCD7)}
body.app-body .sidebar .brand,body.app-body .sidebar .brand svg.ruvo-mark,body.app-body .sidebar nav a,.app-body .signature a,.sb-toggle,.sb-close{color:var(--r-text,#1C1C1C)}
body.app-body .sidebar nav a:hover{background:var(--r-sidebar-hi,#DCDCD7);color:var(--r-text,#1C1C1C)}
body.app-body .sidebar nav a[aria-current=page]{background:var(--r-sidebar-hi,#DCDCD7);color:var(--r-text,#1C1C1C);box-shadow:inset 0 0 0 1px var(--r-text,#1C1C1C);font-weight:600}
body.app-body .sidebar nav .nav-group,.app-body .signature p{color:var(--r-text-2p,#62625D)}
.sb-toggle,.sb-close{border-color:var(--r-line-2,#8A8A85)}
.sb-collapsed .sidebar nav .nav-group:before,.nav-sec+.nav-sec{border-color:var(--r-grid,#DCDCD7)}
html[data-theme=dark] body.app-body .sidebar nav a[aria-current=page]{background:var(--r-sidebar-hi,#34342F)}
/* Rev 31b: second sidebar group (untitled), footer, Docs and empty pages */
.nav-sec-2{margin-top:16px!important;padding-top:16px;border-top:1px solid #DCDCD7}
html[data-theme=dark] .nav-sec-2{border-top-color:var(--r-grid,#DCDCD7)}
.nav-sec-2 .nav-ic{width:16px;height:16px}
body.app-body .sidebar nav a[hidden]{display:none!important}
@media(min-width:769px){.app-body.sb-collapsed .app-layout{grid-template-columns:64px minmax(0,1fr)}.sb-collapsed .sidebar{padding:22px 8px}
 .sb-collapsed .sidebar nav a[title]{position:relative}
 .sb-collapsed .sidebar nav a[title]:hover::after,.sb-collapsed .sidebar nav a[title]:focus-visible::after{content:attr(title);position:fixed;left:68px;transform:translateY(2px);padding:4px 8px;border-radius:6px;background:var(--r-text,#1C1C1C);color:var(--r-bg,#F4F4F1);font:500 12px Manrope,sans-serif;white-space:nowrap;z-index:80;pointer-events:none}
 .app-body.sb-collapsed .sidebar{overflow:visible}}
.app-foot{display:block!important;text-align:left;margin:40px 0 0;padding:16px 0 8px;font-size:12px;line-height:1.4;color:#6B6B66;white-space:nowrap}
.app-foot a{color:#6B6B66;text-decoration:underline;text-underline-offset:2px}
.app-foot a:hover{color:var(--r-text,#1C1C1C)}
.pg-empty{min-height:50vh}
.docs{max-width:680px;display:flex;flex-direction:column;gap:28px}
.docs h2{font-size:18px;margin:0 0 8px;letter-spacing:-.02em}
.docs p,.docs li{font-size:14px;line-height:1.6;color:var(--r-text,#1C1C1C)}
.docs ul{margin:0;padding-left:18px}.docs ul ul{margin-top:4px}
.docs a{color:inherit;text-decoration:underline;text-underline-offset:2px}
#credits{scroll-margin-top:24px}

/* Rev 32 — reference pages and foldable AMA, using existing theme tokens. */
#nav-ama .nav-label{padding-left:12px}
.nav-sec-2 .nav-group{font:600 13px Manrope,system-ui,sans-serif!important;letter-spacing:0!important;text-transform:none!important}
.nav-sec-2 .nav-group .nav-chev{flex:none}
.ruvo-reference{max-width:800px;gap:20px}
.ruvo-doc-lead{margin:0 0 8px!important;color:var(--r-text-2p,#62625D)!important;line-height:1.75!important;font-size:15px!important}
.ruvo-faq{display:flex;flex-direction:column;border-top:1px solid var(--r-grid,#DCDCD7)}
.ruvo-faq details{border-bottom:1px solid var(--r-grid,#DCDCD7);padding:0}
.ruvo-faq summary{list-style:none;cursor:pointer;padding:19px 28px 19px 2px;font-size:15px;font-weight:650;position:relative}
.ruvo-faq summary::-webkit-details-marker{display:none}
.ruvo-faq summary:after{content:'+';position:absolute;right:6px;top:15px;font-size:22px;font-weight:400}
.ruvo-faq details[open] summary:after{content:'−'}
.ruvo-faq details p{margin:0 0 22px;max-width:680px;color:var(--r-text-2p,#62625D)!important}
.ruvo-faq summary:focus-visible{outline:2px solid var(--r-text,#1C1C1C);outline-offset:-2px}
.ruvo-doc-jump{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 5px}
.ruvo-doc-jump a{padding:7px 0;font-size:13px;text-decoration:underline;text-underline-offset:3px}
.ruvo-reference>section{padding:16px 0 20px;border-top:1px solid var(--r-grid,#DCDCD7);scroll-margin-top:32px}
.ruvo-reference>section h2{font-size:20px;margin-bottom:12px}
.ruvo-reference>section p{margin:0 0 12px;line-height:1.8}
.ruvo-reference code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.93em}
.ruvo-doc-foot{margin-top:10px}

.ruvo-logo-credit{font-size:16px!important;line-height:1.5;margin:12px 0 0}
