--- loncom/interface/loncommon.pm	2024/10/07 19:52:16	1.1440
+++ loncom/interface/loncommon.pm	2025/01/25 17:51:52	1.1446
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.1440 2024/10/07 19:52:16 raeburn Exp $
+# $Id: loncommon.pm,v 1.1446 2025/01/25 17:51:52 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -2476,7 +2476,7 @@ END
 <domain>$cdom</domain>
 <highestgradelevel>0</highestgradelevel>
 <keywords></keywords>
-<language>notset </language>
+<language>notset</language>
 <lastrevisiondate>$now</lastrevisiondate>
 <lowestgradelevel>0</lowestgradelevel>
 <mime>rights</mime>
@@ -5691,7 +5691,8 @@ sub blockcheck {
             }
             unless ($has_evb) {
                 if (($activity eq 'printout') || ($activity eq 'grades') || ($activity eq 'search') ||
-                    ($activity eq 'boards') || ($activity eq 'groups') || ($activity eq 'chat')) {
+                    ($activity eq 'index') || ($activity eq 'boards') || ($activity eq 'groups') || 
+                    ($activity eq 'chat')) {
                     if ($udom eq $cdom) {
                         $check_ipaccess = 1;
                     }
@@ -5782,8 +5783,8 @@ sub blockcheck {
 
     if (($activity eq 'boards' || $activity eq 'chat' ||
          $activity eq 'groups' || $activity eq 'printout' ||
-         $activity eq 'search' || $activity eq 'reinit' ||
-         $activity eq 'alert') &&
+         $activity eq 'search' || $activity eq 'index' ||
+         $activity eq 'reinit' || $activity eq 'alert') &&
         ($env{'request.course.id'})) {
         foreach my $key (keys(%live_courses)) {
             if ($key ne $env{'request.course.id'}) {
@@ -6118,6 +6119,8 @@ END_MYBLOCK
         $text = &mt('Gradebook Blocked');
     } elsif ($activity eq 'search') {
         $text = &mt('Search Blocked');
+    } elsif ($activity eq 'index') {
+        $text = &mt('Content Index Blocked');
     } elsif ($activity eq 'alert') {
         $text = &mt('Checking Critical Messages Blocked');
     } elsif ($activity eq 'reinit') {
@@ -6877,7 +6880,6 @@ sub bodytag {
     my $hostname = $args->{'hostname'};
 
     $function = &get_users_function() if (!$function);
-    my $img =    &designparm($function.'.img',$domain);
     my $font =   &designparm($function.'.font',$domain);
     my $pgbg   = $bgcolor || &designparm($function.'.pgbg',$domain);
 
@@ -7096,7 +7098,7 @@ END
             }
         } else {
             # this is to separate menu from content when there's no secondary
-            # menu. Especially needed for public accessible ressources.
+            # menu. Especially needed for publicly accessible resources.
             $bodytag .= '<hr style="clear:both" />';
             if ($need_endlcint) {
                 $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end');
@@ -7235,7 +7237,6 @@ Inputs: (all optional)
 sub standard_css {
     my ($function,$domain,$bgcolor) = @_;
     $function  = &get_users_function() if (!$function);
-    my $img    = &designparm($function.'.img',   $domain);
     my $tabbg  = &designparm($function.'.tabbg', $domain);
     my $font   = &designparm($function.'.font',  $domain);
     my $fontmenu = &designparm($function.'.fontmenu', $domain);
@@ -7300,6 +7301,16 @@ form, .inline {
   display: inline;
 }
 
+.LC_visually_hidden:not(:focus):not(:active) {
+    clip-path: inset(50%);
+    height: 1px;
+    overflow: hidden;
+    position: absolute;
+    white-space: nowrap;
+    width: 1px;
+    display: inline;
+}
+
 .LC_menus_content.shown{
   display: block;
 }
@@ -8216,6 +8227,24 @@ table.LC_prior_tries td {
   padding: 6px;
 }
 
+.LC_prob_status {
+  display: table;
+  padding: 0;
+  margin: 0;
+}
+
+.LC_prob_status_row {
+  display: table-row;
+}
+
+.LC_status_cell {
+  display: table-cell;
+  padding-top: 0;
+  padding-left: 0;
+  padding-bottom: 0;
+  padding-right: 5px;
+}
+
 span.LC_prior_numerical,
 span.LC_prior_string,
 span.LC_prior_custom,