--- loncom/interface/loncommon.pm	2025/02/21 06:09:36	1.1461
+++ loncom/interface/loncommon.pm	2025/03/01 17:20:16	1.1467
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.1461 2025/02/21 06:09:36 raeburn Exp $
+# $Id: loncommon.pm,v 1.1467 2025/03/01 17:20:16 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -8296,12 +8296,22 @@ table.LC_prior_tries td {
   padding: 6px;
 }
 
-.LC_prob_status {
-  margin-top: 5px;
-  padding-top: 0;
-  padding-left: 0;
-  padding-bottom: 0;
-  padding-right: 5px;
+span.LC_prob_status {
+  margin: 5px 0 0 0;
+  padding: 0 5px 0 0;
+  vertical-align: middle;
+}
+
+div.LC_prob_status_outer {
+  display: inline-block;
+  margin: -5px 0 0 0;
+  padding: 0;
+}
+
+div.LC_prob_status_inner {
+  display: inline-block;
+  margin: 0 5px 0 0;
+  padding: 5px;
 }
 
 .LC_mail_actions {
@@ -9360,13 +9370,39 @@ pre.LC_wordwrap {
 /*
   styles used for response display
 */
-div.LC_radiofoil, div.LC_rankfoil {
+div.LC_radiofoil, div.LC_rankfoil, div.LC_optionfoil, div.LC_matchfoil, div.LC_login_links {
   margin: .5em 0em .5em 0em;
 }
 table.LC_itemgroup {
   margin-top: 1em;
 }
 
+table.LC_itemgroup tr th {
+  font-weight: normal;
+}
+
+fieldset.LC_webbubbles {
+  margin: 2px 0 0 0;
+  padding: 0;
+  border: 0;
+}
+
+ul.LC_webbubbles {
+  list-style: none;
+  padding: 0;
+  margin: 0;
+  text-align: left;
+  float: left;
+}
+
+ul.LC_webbubbles li {
+  line-height: 1.8em;
+  border: 1px solid black;
+  padding: 0 2px 0 5px;
+  margin: 0 0 0 -1px;
+  float: left;
+}
+
 /*
   styles used by TTH when "Default set of options to pass to tth/m
   when converting TeX" in course settings has been set
@@ -10863,6 +10899,11 @@ sub simple_error_page {
         return;
     }
 
+    sub set_data_table_count {
+        my ($count) = @_;
+        unshift(@row_count,$count);
+    }
+
     sub start_data_table {
 	my ($add_class,$id) = @_;
 	my $css_class = (join(' ','LC_data_table',$add_class));
@@ -10910,7 +10951,11 @@ sub simple_error_page {
     }
 
     sub start_data_table_header_row {
-	return  '<tr class="LC_header_row">'."\n";;
+	my ($add_class,$id) = @_;
+	my $css_class = 'LC_header_row';
+	$css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq '');
+	$id = (' id="'.$id.'"') unless ($id eq '');
+	return '<tr class="'.$css_class.'"'.$id.'>'."\n";
     }
 
     sub end_data_table_header_row {
@@ -19037,7 +19082,7 @@ Returns: HTML to display with informatio
 sub check_release_result {
     my ($switchwarning,$switchserver) = @_;
     my $output = &start_page('Selected course unavailable on this server').
-                 '<p class="LC_warning">';
+                 '<div class="LC_landmark" role="main"><p class="LC_warning">';
     if ($switchwarning) {
         $output .= $switchwarning.'<br /><a href="/adm/roles">';
         if (&show_course()) {
@@ -19053,7 +19098,7 @@ sub check_release_result {
                    &mt('Switch Server').
                    '</a>';
     }
-    $output .= '</p>'.&end_page();
+    $output .= '</p></div>'.&end_page();
     return $output;
 }
 
@@ -19670,7 +19715,7 @@ sub create_captcha {
             $output = '<input type="hidden" name="crypt" value="'.$md5sum.'" />'."\n".
                       '<span class="LC_nobreak">'.
                       '<label>'.&mt('Type in the letters/numbers shown below').'&nbsp;'.
-                      '<input type="text" size="5" name="code" value="" autocomplete="new-password" />'.
+                      '<input type="text" size="5" name="code" value="" autocomplete="new-password" aria-required="true" />'.
                       '</label></span><br />'.
                       '<img src="'.$captcha_params{'www_output_dir'}.'/'.$md5sum.'.png" alt="captcha" />';
             last;