Index: src/wp-admin/css/edit.css
===================================================================
--- src/wp-admin/css/edit.css	(revision 58256)
+++ src/wp-admin/css/edit.css	(working copy)
@@ -1308,6 +1308,7 @@
 	outline: 2px solid transparent;
 }
 
+.options-discussion-php .indent-children ul,
 #front-page-warning,
 #front-static-pages ul,
 ul.export-filters,
Index: src/wp-admin/includes/options.php
===================================================================
--- src/wp-admin/includes/options.php	(revision 58253)
+++ src/wp-admin/includes/options.php	(working copy)
@@ -8,19 +8,37 @@
  */
 
 /**
- * Output JavaScript to toggle display of additional settings if avatars are disabled.
+ * Output JavaScript for discussion options.
  *
- * @since 4.2.0
+ * @since 4.2.0 Added JavaScript to toggle additional settings if avatars are disabled.
+ * @since 6.6.0 Added JavaScript to handle fields that are conditionally disabled.
  */
 function options_discussion_add_js() {
 	?>
 	<script>
 	(function($){
-		var parent = $( '#show_avatars' ),
-			children = $( '.avatar-settings' );
-		parent.on( 'change', function(){
-			children.toggleClass( 'hide-if-js', ! this.checked );
-		});
+		function toggleEditableState(parentCheckboxId, childInputElement){
+			let $parentCheckbox = $(parentCheckboxId ),
+				$childrenInputs = $(childInputElement );
+
+			// Set the initial state based on the checkbox state
+			$childrenInputs.find('input, select, textarea').each(function() {
+				$(this).prop( 'disabled', $parentCheckbox.prop( 'checked' ) );
+			});
+			// Update the disabled state of children on parent checkbox change
+			$parentCheckbox.on('change', function() {
+				let isChecked = this.checked;
+				$childrenInputs.each(function() {
+					$(this).prop( 'disabled', ! isChecked );
+				});
+			});
+		}
+
+		// Call function for each expandable section of discussion settings.
+		toggleEditableState('#close_comments_for_old_posts', '.close-comments-setting' );
+		toggleEditableState('#thread_comments', '.thread-comments-setting' );
+		toggleEditableState('#page_comments', '.pagination-setting' );
+		toggleEditableState('#show_avatars', '.avatar-settings input' );
 	})(jQuery);
 	</script>
 	<?php
Index: src/wp-admin/options-discussion.php
===================================================================
--- src/wp-admin/options-discussion.php	(revision 58253)
+++ src/wp-admin/options-discussion.php	(working copy)
@@ -39,10 +39,14 @@
 <div class="wrap">
 <h1><?php echo esc_html( $title ); ?></h1>
 
+<!-- ARIA live region for screen readers -->
+<div id="aria-live-region" aria-live="polite" class="screen-reader-text"></div>
+
+
 <form method="post" action="options.php">
 <?php settings_fields( 'discussion' ); ?>
 
-<table class="form-table" role="presentation">
+<table class="form-table indent-children" role="presentation">
 <tr>
 <th scope="row"><?php _e( 'Default post settings' ); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span>
@@ -86,27 +90,24 @@
 ?>
 </label>
 <br />
-
-<label for="close_comments_for_old_posts">
-<input name="close_comments_for_old_posts" type="checkbox" id="close_comments_for_old_posts" value="1" <?php checked( '1', get_option( 'close_comments_for_old_posts' ) ); ?> />
+<input name="close_comments_for_old_posts" type="checkbox" id="close_comments_for_old_posts" value="1" <?php checked( '1', get_option( 'close_comments_for_old_posts' ) ); ?> /> <label for="close_comments_for_old_posts"><?php _e( 'Automatically close comments for old posts' ); ?></label>
+<br />
 <?php
-printf(
-	/* translators: %s: Number of days. */
-	__( 'Automatically close comments on posts older than %s days' ),
-	'</label> <label for="close_comments_days_old"><input name="close_comments_days_old" type="number" min="0" step="1" id="close_comments_days_old" value="' . esc_attr( get_option( 'close_comments_days_old' ) ) . '" class="small-text" />'
-);
+	$close_comments_disabled = ( '1' === get_option( 'close_comments_for_old_posts' ) ) ? '' : ' disabled';
 ?>
-</label>
-<br />
+<ul>
+	<li>
+		<label for="close_comments_days_old"><?php _e( 'Number of days to keep old comments' ); ?></label>
+		<input name="close_comments_days_old" type="number" step="1" min="0" id="close_comments_days_old" value="<?php echo esc_attr( get_option( 'close_comments_days_old' ) ); ?>" class="small-text close-comments-setting"<?php echo $close_comments_disabled; ?> />
+	</li>
+</ul>
 
-<label for="show_comments_cookies_opt_in">
 <input name="show_comments_cookies_opt_in" type="checkbox" id="show_comments_cookies_opt_in" value="1" <?php checked( '1', get_option( 'show_comments_cookies_opt_in' ) ); ?> />
-<?php _e( 'Show comments cookies opt-in checkbox, allowing comment author cookies to be set' ); ?>
-</label>
+<label for="show_comments_cookies_opt_in"><?php _e( 'Show comments cookies opt-in checkbox, allowing comment author cookies to be set' ); ?></label>
 <br />
+<input name="thread_comments" type="checkbox" id="thread_comments" value="1" <?php checked( '1', get_option( 'thread_comments' ) ); ?> />
+<label for="thread_comments"><?php _e( 'Enable threaded (nested) comments' ); ?></label>
 
-<label for="thread_comments">
-<input name="thread_comments" type="checkbox" id="thread_comments" value="1" <?php checked( '1', get_option( 'thread_comments' ) ); ?> />
 <?php
 /**
  * Filters the maximum depth of threaded/nested comments.
@@ -117,7 +118,8 @@
  */
 $maxdeep = (int) apply_filters( 'thread_comments_depth_max', 10 );
 
-$thread_comments_depth = '</label> <label for="thread_comments_depth"><select name="thread_comments_depth" id="thread_comments_depth">';
+$thread_comments_disabled = ( '1' === get_option( 'thread_comments' ) ) ? '' : ' disabled';
+$thread_comments_depth    = '<select name="thread_comments_depth" class="thread-comments-setting" id="thread_comments_depth"' . $thread_comments_disabled . '>';
 for ( $i = 2; $i <= $maxdeep; $i++ ) {
 	$thread_comments_depth .= "<option value='" . esc_attr( $i ) . "'";
 	if ( (int) get_option( 'thread_comments_depth' ) === $i ) {
@@ -126,54 +128,52 @@
 	$thread_comments_depth .= ">$i</option>";
 }
 $thread_comments_depth .= '</select>';
+?>
+<ul>
+	<li>
+		<label for="thread_comments_depth"><?php _e( 'Number of levels for threaded (nested) comments' ); ?></label>
+		<?php echo $thread_comments_depth; ?>
+	</li>
+</ul>
+</fieldset></td>
+</tr>
 
-/* translators: %s: Number of levels. */
-printf( __( 'Enable threaded (nested) comments %s levels deep' ), $thread_comments_depth );
-
-?>
-</label>
-<br />
-<label for="page_comments">
+<tr>
+<th scope="row"><?php _e( 'Comment Pagination' ); ?></th>
+<td><fieldset><legend class="screen-reader-text"><span>
+	<?php
+	/* translators: Hidden accessibility text. */
+	_e( 'Comment Pagination' );
+	?>
+</span></legend>
 <input name="page_comments" type="checkbox" id="page_comments" value="1" <?php checked( '1', get_option( 'page_comments' ) ); ?> />
+<label for="page_comments"><?php _e( 'Break comments into pages' ); ?></label>
 <?php
-$default_comments_page = '</label> <label for="default_comments_page"><select name="default_comments_page" id="default_comments_page"><option value="newest"';
-if ( 'newest' === get_option( 'default_comments_page' ) ) {
-	$default_comments_page .= ' selected="selected"';
-}
-$default_comments_page .= '>' . __( 'last' ) . '</option><option value="oldest"';
-if ( 'oldest' === get_option( 'default_comments_page' ) ) {
-	$default_comments_page .= ' selected="selected"';
-}
-$default_comments_page .= '>' . __( 'first' ) . '</option></select>';
-printf(
-	/* translators: 1: Form field control for number of top level comments per page, 2: Form field control for the 'first' or 'last' page. */
-	__( 'Break comments into pages with %1$s top level comments per page and the %2$s page displayed by default' ),
-	'</label> <label for="comments_per_page"><input name="comments_per_page" type="number" step="1" min="0" id="comments_per_page" value="' . esc_attr( get_option( 'comments_per_page' ) ) . '" class="small-text" />',
-	$default_comments_page
-);
+$comments_pagination_disabled = ( '1' === get_option( 'page_comments' ) ) ? '' : ' disabled';
 ?>
-</label>
-<br />
-<label for="comment_order">
-<?php
-
-$comment_order = '<select name="comment_order" id="comment_order"><option value="asc"';
-if ( 'asc' === get_option( 'comment_order' ) ) {
-	$comment_order .= ' selected="selected"';
-}
-$comment_order .= '>' . __( 'older' ) . '</option><option value="desc"';
-if ( 'desc' === get_option( 'comment_order' ) ) {
-	$comment_order .= ' selected="selected"';
-}
-$comment_order .= '>' . __( 'newer' ) . '</option></select>';
-
-/* translators: %s: Form field control for 'older' or 'newer' comments. */
-printf( __( 'Comments should be displayed with the %s comments at the top of each page' ), $comment_order );
-
-?>
-</label>
+<ul>
+	<li>
+		<label for="comments_per_page"><?php _e( 'Top level comments per page' ); ?></label>
+		<input name="comments_per_page" type="number" step="1" min="0" class="pagination-setting" id="comments_per_page" value="<?php echo esc_attr( get_option( 'comments_per_page' ) ); ?>" class="small-text"<?php echo $comments_pagination_disabled; ?> />
+	</li>
+	<li>
+		<label for="default_comments_page"><?php _e( 'Comments page to display by default' ); ?></label>
+		<select name="default_comments_page" class="pagination-setting" id="default_comments_page"<?php echo $comments_pagination_disabled; ?>>
+			<option value="newest" <?php selected( 'newest', get_option( 'default_comments_page' ) ); ?>><?php _e( 'last page' ); ?></option>
+			<option value="oldest" <?php selected( 'oldest', get_option( 'default_comments_page' ) ); ?>><?php _e( 'first page' ); ?></option>
+		</select>
+	</li>
+	<li>
+		<label for="comment_order"><?php _e( 'Comments to display at the top of each page' ); ?></label>
+		<select name="comment_order" class="pagination-setting" id="comment_order"<?php echo $comments_pagination_disabled; ?>>
+			<option value="asc" <?php selected( 'asc', get_option( 'comment_order' ) ); ?>><?php _e( 'older' ); ?></option>
+			<option value="desc" <?php selected( 'desc', get_option( 'comment_order' ) ); ?>><?php _e( 'newer' ); ?></option>
+		</select>
+	</li>
+</ul>
 </fieldset></td>
 </tr>
+
 <tr>
 <th scope="row"><?php _e( 'Email me whenever' ); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span>
@@ -186,6 +186,7 @@
 <input name="comments_notify" type="checkbox" id="comments_notify" value="1" <?php checked( '1', get_option( 'comments_notify' ) ); ?> />
 <?php _e( 'Anyone posts a comment' ); ?> </label>
 <br />
+
 <label for="moderation_notify">
 <input name="moderation_notify" type="checkbox" id="moderation_notify" value="1" <?php checked( '1', get_option( 'moderation_notify' ) ); ?> />
 <?php _e( 'A comment is held for moderation' ); ?> </label>
@@ -203,6 +204,7 @@
 <input name="comment_moderation" type="checkbox" id="comment_moderation" value="1" <?php checked( '1', get_option( 'comment_moderation' ) ); ?> />
 <?php _e( 'Comment must be manually approved' ); ?> </label>
 <br />
+
 <label for="comment_previously_approved"><input type="checkbox" name="comment_previously_approved" id="comment_previously_approved" value="1" <?php checked( '1', get_option( 'comment_previously_approved' ) ); ?> /> <?php _e( 'Comment author must have a previously approved comment' ); ?></label>
 </fieldset></td>
 </tr>
