Changeset 355971
- Timestamp:
- 10/28/2026 11:18:27 AM (13 hours ago)
- Location:
- quickpress/2.0
- Files:
-
- 3 added
- 2 deleted
- 17 edited
- 1 copied
-
. (copied) (copied from quickpress/1.9.2 )
-
404.php (modified) (1 diff)
-
archive.php (modified) (1 diff)
-
comments.php (modified) (1 diff)
-
css (deleted)
-
custom-editor-style.css (modified) (1 diff)
-
footer.php (modified) (1 diff)
-
functions.php (modified) (1 diff)
-
header.php (modified) (1 diff)
-
inc (added)
-
inc/social-icons.php (added)
-
index.php (modified) (1 diff)
-
languages (deleted)
-
loop.php (modified) (1 diff)
-
page.php (modified) (1 diff)
-
pagination.php (modified) (1 diff)
-
readme.txt (modified) (1 diff)
-
screenshot.png (modified) ( previous)
-
search.php (modified) (1 diff)
-
sidebar.php (modified) (1 diff)
-
single.php (modified) (1 diff)
-
style.css (modified) (2 diffs)
-
template-full-width.php (added)
Legend:
- Unmodified
- Added
- Removed
-
quickpress/2.0/404.php
r183335 r355971 1 1 <?php get_header(); ?> 2 2 3 <div id="content" class="content column left"> 4 <main> 3 5 4 <main> 5 <section> 6 <article id="post-404"> 7 8 <h1><?php _e( 'Page Not Found', 'quickpress' ); ?></h1> 6 <article id="post-404" class="no-results"> 7 <h1 class="page-title"><?php esc_html_e( 'Page Not Found', 'quickpress' ); ?></h1> 8 <p><?php esc_html_e( 'The page you were looking for is not here. Try a search, or go to the home page.', 'quickpress' ); ?></p> 9 <?php get_search_form(); ?> 10 <p><a href="<?php echo esc_url( home_url( '/' ) ); ?>">← <?php esc_html_e( 'Home', 'quickpress' ); ?></a></p> 11 </article> 9 12 10 <?php get_search_form(); ?> 13 </main> 14 </div> 11 15 12 </article>13 </section>14 </main>15 16 </div>17 16 <?php get_sidebar(); ?> 18 17 <?php get_footer(); ?> -
quickpress/2.0/archive.php
r183335 r355971 1 1 <?php get_header(); ?> 2 2 3 <div id="content" class="content column left"> 4 <main> 3 5 4 <main> 5 <section> 6 <header class="page-header"> 7 <?php the_archive_title( '<h1 class="page-title">', '</h1>' ); ?> 8 <?php the_archive_description( '<div class="archive-description">', '</div>' ); ?> 9 </header> 6 10 7 <h1> 8 <?php _e( 'Archives: ', 'quickpress' ); single_cat_title(); ?> 9 </h1> 10 <?php get_template_part('loop'); ?> 11 <?php get_template_part('pagination'); ?> 11 <?php get_template_part( 'loop' ); ?> 12 <?php get_template_part( 'pagination' ); ?> 12 13 13 </section>14 </main>14 </main> 15 </div> 15 16 16 </div>17 17 <?php get_sidebar(); ?> 18 18 <?php get_footer(); ?> -
quickpress/2.0/comments.php
r128061 r355971 1 <?php 2 /** 3 * Comments list and comment form. 4 * 5 * @package QuickPress 6 */ 7 8 // Password-protected post: WordPress shows the password form in the post, so stop here. 9 if ( post_password_required() ) { 10 return; 11 } 12 ?> 13 1 14 <div id="comments" class="comments"> 2 <?php if (post_password_required()) : ?>3 <p>4 <?php _e( 'Post is password protected. Enter the password to view any comments.', 'quickpress' ); ?>5 </p>6 15 7 <?php return; endif; ?> 16 <?php if ( have_comments() ) : ?> 17 <h2 class="comments-title"> 18 <?php 19 printf( 20 /* translators: 1: number of comments, 2: post title */ 21 esc_html( _nx( 'One comment on “%2$s”', '%1$s comments on “%2$s”', get_comments_number(), 'comments title', 'quickpress' ) ), 22 esc_html( number_format_i18n( get_comments_number() ) ), 23 '<span>' . esc_html( get_the_title() ) . '</span>' 24 ); 25 ?> 26 </h2> 27 28 <?php the_comments_navigation(); ?> 29 30 <ol class="commentlist"> 31 <?php 32 wp_list_comments( array( 33 'style' => 'ol', 34 'avatar_size' => 32, 35 'short_ping' => true, 36 ) ); 37 ?> 38 </ol> 39 40 <?php the_comments_navigation(); ?> 41 <?php endif; ?> 42 43 <?php if ( ! comments_open() && get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) : ?> 44 <p class="no-comments"><?php esc_html_e( 'Comments are closed here.', 'quickpress' ); ?></p> 45 <?php endif; ?> 46 47 <?php comment_form(); ?> 48 8 49 </div> 9 10 <?php if (have_comments()) : ?>11 <h3 id="comments">12 <?php13 printf( _nx( 'One comment on “%2$s”', '%1$s comments on “%2$s”', get_comments_number(), 'comments title', 'quickpress' ), number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' );14 ?>15 </h3>16 <div class="navigation">17 <div class="alignleft">18 <?php previous_comments_link() ?>19 </div>20 <div class="alignright">21 <?php next_comments_link() ?>22 </div>23 </div>24 25 <ol class="commentlist">26 <?php wp_list_comments(); ?>27 </ol>28 29 <div class="navigation">30 <div class="alignleft">31 <?php previous_comments_link() ?>32 </div>33 <div class="alignright">34 <?php next_comments_link() ?>35 </div>36 </div>37 38 <?php elseif ( ! comments_open() && ! is_page() && post_type_supports( get_post_type(), 'comments' ) ) : ?>39 <p>40 <?php _e( 'Comments are closed here.', 'quickpress' ); ?>41 </p>42 <?php endif; ?>43 44 <?php comment_form(); ?> -
quickpress/2.0/custom-editor-style.css
r128061 r355971 1 /* 2 QuickPress editor style: posts look in the editor the way they will on the site. 3 WordPress scopes these rules to the editor, so they never load on the front end. 4 */ 5 6 body { 7 --qp-brand: #2a6496; 8 --qp-accent: #c32364; 9 --qp-text: #333; 10 --qp-muted: #666; 11 --qp-border: #ddd; 12 --qp-soft: #f6f6f6; 13 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Arial, sans-serif; 14 font-size: 14.5px; /* the post text size on the site */ 15 line-height: 1.6; 16 color: var(--qp-text); 17 background: #fff; 18 } 19 20 h1, 21 h2, 22 h3, 23 h4, 24 h5, 25 h6 { 26 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Arial, sans-serif; 27 font-weight: bold; 28 line-height: 1.25; 29 margin: 1.2em 0 0.4em; 30 } 31 32 h1 { font-size: 1.9em; } 33 h2 { font-size: 1.6em; } 34 h3 { font-size: 1.3em; } 35 h4 { font-size: 1.1em; } 36 37 /* The post title */ 38 .editor-post-title, 39 .editor-post-title__input { 40 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Arial, sans-serif; 41 font-size: 1.9em; 42 font-weight: bold; 43 line-height: 1.25; 44 } 45 46 a { 47 color: var(--qp-brand); 48 text-decoration: underline; 49 text-underline-offset: 2px; 50 } 51 52 blockquote { 53 margin: 1.5em 0; 54 padding: 0 0 0 20px; 55 border-left: 4px solid color-mix(in srgb, var(--qp-brand) 50%, #fff); 56 color: var(--qp-muted); 57 } 58 59 blockquote cite { 60 display: block; 61 margin-top: 5px; 62 font-size: 0.9em; 63 } 64 65 pre { 66 background: var(--qp-soft); 67 border: 1px solid var(--qp-border); 68 padding: 10px 12px; 69 line-height: 1.5; 70 white-space: pre-wrap; 71 } 72 73 code { 74 background: var(--qp-soft); 75 padding: 1px 4px; 76 border-radius: 3px; 77 font-size: 0.9em; 78 } 79 80 pre code { 81 background: none; 82 padding: 0; 83 } 84 85 hr { 86 border: 0; 87 border-top: 1px solid var(--qp-border); 88 margin: 2em 0; 89 } 90 91 table th, 92 table td { 93 padding: 6px 8px; 94 border: 1px solid var(--qp-border); 95 text-align: left; 96 } 97 98 table th { 99 background: var(--qp-soft); 100 } 101 102 figcaption, 103 .wp-caption-text { 104 font-size: 0.85em; 105 color: var(--qp-muted); 106 text-align: center; 107 } 108 109 .wp-block-button__link, 110 .wp-element-button { 111 background: var(--qp-accent); 112 color: #fff; 113 border-radius: 6px; 114 text-decoration: none; 115 } 116 117 .wp-block-pullquote { 118 border-top: 3px solid var(--qp-accent); 119 border-bottom: 3px solid var(--qp-accent); 120 } 121 122 .wp-block-pullquote blockquote { 123 border: 0; 124 padding: 0; 125 } 126 127 /* Block styles from the editor's Styles panel */ 128 .is-style-qp-accent, 129 .wp-block-quote.is-style-qp-accent { 130 margin: 1.5em 0; 131 padding: 2px 0 2px 16px; 132 border-left: 4px solid var(--qp-accent); 133 color: #333; 134 font-size: 1.1em; 135 } 136 137 .is-style-qp-soft-box { 138 margin: 1.5em 0; 139 padding: 14px 18px; 140 background: #f6f6f6; 141 border-left: 3px solid var(--qp-accent); 142 border-radius: 0 6px 6px 0; 143 } 144 145 .is-style-qp-soft-box > :first-child { 146 margin-top: 0; 147 } 148 149 .is-style-qp-soft-box > :last-child { 150 margin-bottom: 0; 151 } 152 153 /* Same width as the post column on the site */ 154 .wp-block { 155 max-width: 620px; 156 } 157 158 .wp-block[data-align="wide"], 159 .wp-block[data-align="full"] { 160 max-width: 620px; 161 } 162 163 /* Classic editor */ 1 164 body#tinymce.wp-editor { 2 margin: 10px; 165 max-width: 620px; 166 margin: 10px; 3 167 } -
quickpress/2.0/footer.php
r183335 r355971 1 </div> <!-- end row -->1 </div> <!-- end row --> 2 2 3 <footer id="footer"> 3 4 4 <footer id="footer"> 5 <?php if ( is_active_sidebar( 'footer-1' ) || is_active_sidebar( 'footer-2' ) || is_active_sidebar( 'footer-3' ) ) : ?> 6 <div class="footer-widgets"> 7 <?php for ( $quickpress_i = 1; $quickpress_i <= 3; $quickpress_i++ ) : ?> 8 <?php if ( is_active_sidebar( 'footer-' . $quickpress_i ) ) : ?> 9 <div class="footer-column"> 10 <?php dynamic_sidebar( 'footer-' . $quickpress_i ); ?> 11 </div> 12 <?php endif; ?> 13 <?php endfor; ?> 14 </div> 15 <?php endif; ?> 5 16 6 <p> 7 © 8 <?php _e('Copyright', 'quickpress'); ?> 9 <?php echo date('Y'); ?> - 10 <?php bloginfo('name'); ?> 11 </p> 12 <?php wp_footer(); ?> 17 <div class="site-info"> 13 18 14 </footer> 15 </div> <!-- end page --> 19 <?php 20 if ( has_nav_menu( 'footer' ) ) { 21 wp_nav_menu( array( 22 'theme_location' => 'footer', 23 'container' => 'nav', 24 'container_class' => 'footer-menu', 25 'container_aria_label' => __( 'Footer menu', 'quickpress' ), 26 'depth' => 1, 27 ) ); 28 } 29 ?> 30 31 <p> 32 © <?php esc_html_e( 'Copyright', 'quickpress' ); ?> 33 <?php echo esc_html( wp_date( 'Y' ) ); ?> – 34 <?php bloginfo( 'name' ); ?> 35 </p> 36 37 <p class="credits"> 38 <a href="https://wordpress.org/themes/quickpress/" rel="nofollow">QuickPress Theme</a> • <?php esc_html_e( 'Powered by WordPress', 'quickpress' ); ?> 39 </p> 40 41 </div> 42 43 </footer> 44 45 </div> 46 <!-- /page --> 47 48 <?php wp_footer(); ?> 16 49 </body> 17 50 -
quickpress/2.0/functions.php
r183335 r355971 1 1 <?php 2 3 // Content width 4 if ( ! isset( $content_width ) ) 5 $content_width = 540; 2 /** 3 * QuickPress functions and setup. 4 * 5 * Kept deliberately small: no JavaScript, no options panel, 6 * just the theme supports WordPress needs. 7 * 8 * @package QuickPress 9 */ 10 11 // Icons for social links in the Footer Menu. 12 require get_template_directory() . '/inc/social-icons.php'; 13 14 // Width of the main content column, used by WordPress for embeds and large images. 15 if ( ! isset( $content_width ) ) { 16 $content_width = 620; 17 } 6 18 7 19 // Setup 8 20 if ( ! function_exists( 'quickpress_setup' ) ) : 9 function quickpress_setup() { 10 11 // Register menus 12 register_nav_menus( array( 13 'header-nav' => 'Header Menu', 14 ) ); 15 16 // add title tag 17 add_theme_support( 'title-tag' ); 18 19 // add text domain 20 load_theme_textdomain( 'quickpress', get_template_directory() . '/languages' ); 21 22 // Custom Background 23 add_theme_support( 'custom-background', apply_filters( 'quickpress_custom_background_args', array( 24 'default-color' => 'ffffff', 25 'default-image' => '', 26 ) ) ); 27 28 29 // more theme support 30 add_theme_support('post-thumbnails'); 31 add_theme_support('automatic-feed-links'); 32 add_theme_support( "wp-block-styles"); 33 add_theme_support( "responsive-embeds"); 34 add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption', 'style', 'script' ) ); 35 add_theme_support( "align-wide"); 36 37 } 21 function quickpress_setup() { 22 23 // Let WordPress write the <title> tag. 24 add_theme_support( 'title-tag' ); 25 26 // Custom background colour or image (Appearance > Customize). 27 add_theme_support( 'custom-background', apply_filters( 'quickpress_custom_background_args', array( 28 'default-color' => 'ede8e2', 29 'default-image' => '', 30 ) ) ); 31 32 // Optional logo beside the site title (Appearance > Customize > Site Identity). 33 add_theme_support( 'custom-logo', array( 34 'height' => 100, 35 'width' => 300, 36 'flex-height' => true, 37 'flex-width' => true, 38 ) ); 39 40 // Menus: the menu bar under the header, and one in the footer (Appearance > Menus). 41 // The header id stays 'header-nav' so existing sites keep their menu. 42 register_nav_menus( array( 43 'header-nav' => __( 'Main Menu', 'quickpress' ), 44 'footer' => __( 'Footer Menu', 'quickpress' ), 45 ) ); 46 47 // More theme support 48 add_theme_support( 'post-thumbnails' ); 49 add_theme_support( 'automatic-feed-links' ); 50 add_theme_support( 'wp-block-styles' ); 51 add_theme_support( 'responsive-embeds' ); 52 add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption', 'style', 'script', 'navigation-widgets' ) ); 53 add_theme_support( 'align-wide' ); 54 55 // Starter content: on a brand-new site, the Customizer offers ready 56 // widgets (as blocks), a few pages and a main menu, so the whole design 57 // shows. Nothing is saved until the owner clicks Publish, and existing 58 // sites never see it. 59 $quickpress_heading = function ( $text ) { 60 return '<!-- wp:heading --><h2 class="wp-block-heading">' . esc_html( $text ) . '</h2><!-- /wp:heading -->'; 61 }; 62 add_theme_support( 'starter-content', array( 63 'widgets' => array( 64 'sidebar-1' => array( 65 'recent' => array( 'block', array( 'content' => $quickpress_heading( __( 'Recent Posts', 'quickpress' ) ) . '<!-- wp:latest-posts /-->' ) ), 66 ), 67 'sidebar-2' => array( 68 'categories' => array( 'block', array( 'content' => $quickpress_heading( __( 'Categories', 'quickpress' ) ) . '<!-- wp:categories {"className":"qp-short"} /-->' ) ), 69 ), 70 'sidebar-3' => array( 71 'comments' => array( 'block', array( 'content' => $quickpress_heading( __( 'Recent Comments', 'quickpress' ) ) . '<!-- wp:latest-comments {"displayAvatar":false,"displayDate":false,"displayExcerpt":false} /-->' ) ), 72 ), 73 // Footer columns, so a new site shows the footer too. 74 'footer-1' => array( 75 'about_site' => array( 'block', array( 'content' => $quickpress_heading( __( 'About This Site', 'quickpress' ) ) . '<!-- wp:paragraph --><p>' . esc_html__( 'A few words about you and what you write about. Change this in Appearance > Widgets.', 'quickpress' ) . '</p><!-- /wp:paragraph -->' ) ), 76 ), 77 'footer-2' => array( 78 'pages' => array( 'block', array( 'content' => $quickpress_heading( __( 'Pages', 'quickpress' ) ) . '<!-- wp:page-list {"className":"qp-short"} /-->' ) ), 79 ), 80 ), 81 'posts' => array( 'about', 'contact' ), 82 'nav_menus' => array( 83 'header-nav' => array( 84 'name' => __( 'Main Menu', 'quickpress' ), 85 'items' => array( 'link_home', 'page_about', 'page_contact' ), 86 ), 87 ), 88 ) ); 89 } 38 90 endif; // quickpress_setup 39 91 add_action( 'after_setup_theme', 'quickpress_setup' ); 40 92 41 // Register sidebar widgets 93 // Register sidebar widgets. The ids stay the same so existing widgets stay put. 42 94 function quickpress_widgets_init() { 43 register_sidebar(array( 44 'name' => __( 'Sidebar Full', 'quickpress' ), 45 'id' => 'sidebar-1', 46 'before_widget' => '', 47 'after_widget' => '', 48 'before_title' => '<h4>', 49 'after_title' => '</h4>', 50 )); 51 register_sidebar(array( 52 53 'name' => __( 'Sidebar Split Left', 'quickpress' ), 54 'id' => 'sidebar-2', 55 'before_widget' => '', 56 'after_widget' => '', 57 'before_title' => '<h4>', 58 'after_title' => '</h4>', 59 )); 60 register_sidebar(array( 61 'name' => __( 'Sidebar Split Right', 'quickpress' ), 62 'id' => 'sidebar-3', 63 'before_widget' => '', 64 'after_widget' => '', 65 'before_title' => '<h4>', 66 'after_title' => '</h4>', 67 )); 95 $areas = array( 96 'sidebar-1' => array( __( 'Sidebar Full', 'quickpress' ), __( 'Across the whole right column, at the top.', 'quickpress' ) ), 97 'sidebar-2' => array( __( 'Sidebar Split Left', 'quickpress' ), __( 'The left half of the right column, below Sidebar Full.', 'quickpress' ) ), 98 'sidebar-3' => array( __( 'Sidebar Split Right', 'quickpress' ), __( 'The right half of the right column, below Sidebar Full.', 'quickpress' ) ), 99 ); 100 foreach ( $areas as $id => $area ) { 101 register_sidebar( array( 102 'name' => $area[0], 103 'id' => $id, 104 'description' => $area[1], 105 'before_widget' => '<section id="%1$s" class="widget %2$s">', 106 'after_widget' => '</section>', 107 'before_title' => '<h2 class="widget-title">', 108 'after_title' => '</h2>', 109 ) ); 110 } 111 112 // Below each post: newsletter sign-up, author note, related links, an ad. 113 register_sidebar( array( 114 'name' => __( 'Below Posts', 'quickpress' ), 115 'id' => 'after-post', 116 'description' => __( 'Shown under the post on each single post, before the comments. Empty means hidden.', 'quickpress' ), 117 'before_widget' => '<section id="%1$s" class="widget %2$s">', 118 'after_widget' => '</section>', 119 'before_title' => '<h2 class="widget-title">', 120 'after_title' => '</h2>', 121 ) ); 122 123 // Footer: up to three columns. Only the ones with widgets are shown. 124 for ( $i = 1; $i <= 3; $i++ ) { 125 register_sidebar( array( 126 /* translators: %d: footer column number, 1 to 3 */ 127 'name' => sprintf( __( 'Footer %d', 'quickpress' ), $i ), 128 'id' => 'footer-' . $i, 129 'description' => __( 'A column at the bottom of every page. Leave all three empty for no footer widgets.', 'quickpress' ), 130 'before_widget' => '<section id="%1$s" class="widget %2$s">', 131 'after_widget' => '</section>', 132 'before_title' => '<h2 class="widget-title">', 133 'after_title' => '</h2>', 134 ) ); 135 } 68 136 } 69 137 add_action( 'widgets_init', 'quickpress_widgets_init' ); 70 138 71 // add editor style 139 /* 140 * Default sidebar, shown only while all three sidebar areas are empty. 141 * Built from WordPress's own blocks, so it needs no plugin and looks the same 142 * as the block widgets people add later in Appearance > Widgets. 143 * Search is left out because the header already has a search box. 144 * As soon as any widget is added, this steps aside. 145 * A child theme can switch it off: add_filter( 'quickpress_show_default_sidebar', '__return_false' ); 146 */ 147 function quickpress_default_sidebar() { 148 if ( ! apply_filters( 'quickpress_show_default_sidebar', true ) ) { 149 return; 150 } 151 152 $full = array( 153 'widget_recent_entries' => array( __( 'Recent Posts', 'quickpress' ), '<!-- wp:latest-posts /-->' ), 154 ); 155 $split = array( 156 'widget_categories' => array( __( 'Categories', 'quickpress' ), '<!-- wp:categories {"className":"qp-short"} /-->' ), 157 'widget_recent_comments' => array( __( 'Recent Comments', 'quickpress' ), '<!-- wp:latest-comments {"displayAvatar":false,"displayDate":false,"displayExcerpt":false} /-->' ), 158 ); 159 160 echo '<div class="sidebar-full">'; 161 quickpress_default_widgets( $full ); 162 echo '</div><div class="sidebar-split">'; 163 foreach ( $split as $class => $section ) { 164 echo '<div class="subcol">'; 165 quickpress_default_widgets( array( $class => $section ) ); 166 echo '</div>'; 167 } 168 echo '</div>'; 169 } 170 171 // Prints default widgets with the same wrappers as real ones. 172 function quickpress_default_widgets( $sections ) { 173 foreach ( $sections as $class => $section ) { 174 echo '<section class="widget ' . esc_attr( $class ) . '">'; 175 echo '<h2 class="widget-title">' . esc_html( $section[0] ) . '</h2>'; 176 echo do_blocks( $section[1] ); // phpcs:ignore WordPress.Security.EscapeOutput -- core blocks escape their own output. 177 echo '</section>'; 178 } 179 } 180 181 // Editor style: posts look in the editor much like they do on the site. 72 182 function quickpress_add_editor_styles() { 73 add_editor_style( 'custom-editor-style.css' ); 74 } 75 add_action( 'admin_init', 'quickpress_add_editor_styles' ); 76 77 // read more 183 add_theme_support( 'editor-styles' ); 184 add_editor_style( 'custom-editor-style.css' ); 185 186 // The theme's own colours in the block editor's colour picker, 187 // instead of WordPress's general rainbow. 188 $colors = quickpress_colors(); 189 add_theme_support( 'editor-color-palette', array( 190 array( 'name' => __( 'Header blue', 'quickpress' ), 'slug' => 'brand', 'color' => $colors['brand'] ), 191 array( 'name' => __( 'Accent', 'quickpress' ), 'slug' => 'accent', 'color' => $colors['accent'] ), 192 array( 'name' => __( 'Text', 'quickpress' ), 'slug' => 'text', 'color' => '#333333' ), 193 array( 'name' => __( 'Grey', 'quickpress' ), 'slug' => 'grey', 'color' => '#707070' ), 194 array( 'name' => __( 'Light grey', 'quickpress' ), 'slug' => 'light-grey', 'color' => '#f6f6f6' ), 195 array( 'name' => __( 'White', 'quickpress' ), 'slug' => 'white', 'color' => '#ffffff' ), 196 ) ); 197 198 // Text sizes in the editor, in step with the theme's 14.5px post text. 199 add_theme_support( 'editor-font-sizes', array( 200 array( 'name' => __( 'Small', 'quickpress' ), 'slug' => 'small', 'size' => 12.5 ), 201 array( 'name' => __( 'Normal', 'quickpress' ), 'slug' => 'normal', 'size' => 14.5 ), 202 array( 'name' => __( 'Large', 'quickpress' ), 'slug' => 'large', 'size' => 19 ), 203 array( 'name' => __( 'Extra large', 'quickpress' ), 'slug' => 'x-large', 'size' => 25 ), 204 ) ); 205 206 // No gradient presets: they don't suit the theme's flat look. 207 add_theme_support( 'editor-gradient-presets', array() ); 208 } 209 add_action( 'after_setup_theme', 'quickpress_add_editor_styles' ); 210 211 /* 212 * Block styles: extra looks in the block editor's Styles panel. 213 * The CSS lives in style.css and custom-editor-style.css, so nothing extra loads. 214 */ 215 function quickpress_block_styles() { 216 register_block_style( 'core/quote', array( 217 'name' => 'qp-accent', 218 'label' => __( 'Accent bar', 'quickpress' ), 219 ) ); 220 register_block_style( 'core/group', array( 221 'name' => 'qp-soft-box', 222 'label' => __( 'Soft box', 'quickpress' ), 223 ) ); 224 } 225 add_action( 'init', 'quickpress_block_styles' ); 226 227 /* 228 * Block patterns: ready-made boxes in the editor's Patterns tab, under QuickPress. 229 * Handy in a post or in the Below Posts widget area. 230 */ 231 function quickpress_block_patterns() { 232 register_block_pattern_category( 'quickpress', array( 'label' => __( 'QuickPress', 'quickpress' ) ) ); 233 234 register_block_pattern( 'quickpress/newsletter-box', array( 235 'title' => __( 'Newsletter sign-up box', 'quickpress' ), 236 'description' => __( 'A soft box asking readers to subscribe, with a button.', 'quickpress' ), 237 'categories' => array( 'quickpress' ), 238 'content' => '<!-- wp:group {"className":"is-style-qp-soft-box"} --><div class="wp-block-group is-style-qp-soft-box">' 239 . '<!-- wp:heading {"level":3} --><h3 class="wp-block-heading">' . esc_html__( 'Enjoyed this post?', 'quickpress' ) . '</h3><!-- /wp:heading -->' 240 . '<!-- wp:paragraph --><p>' . esc_html__( 'Get new posts by email. No spam, unsubscribe any time.', 'quickpress' ) . '</p><!-- /wp:paragraph -->' 241 . '<!-- wp:buttons --><div class="wp-block-buttons"><!-- wp:button --><div class="wp-block-button"><a class="wp-block-button__link wp-element-button">' . esc_html__( 'Subscribe', 'quickpress' ) . '</a></div><!-- /wp:button --></div><!-- /wp:buttons -->' 242 . '</div><!-- /wp:group -->', 243 ) ); 244 245 register_block_pattern( 'quickpress/about-author', array( 246 'title' => __( 'About the author', 'quickpress' ), 247 'description' => __( 'A soft box with a short note about the writer.', 'quickpress' ), 248 'categories' => array( 'quickpress' ), 249 'content' => '<!-- wp:group {"className":"is-style-qp-soft-box"} --><div class="wp-block-group is-style-qp-soft-box">' 250 . '<!-- wp:heading {"level":3} --><h3 class="wp-block-heading">' . esc_html__( 'About the author', 'quickpress' ) . '</h3><!-- /wp:heading -->' 251 . '<!-- wp:paragraph --><p>' . esc_html__( 'A few words about you: what you write about, and why readers should come back.', 'quickpress' ) . '</p><!-- /wp:paragraph -->' 252 . '</div><!-- /wp:group -->', 253 ) ); 254 } 255 add_action( 'init', 'quickpress_block_patterns' ); 256 257 // The owner's colours in the editor too. 258 function quickpress_editor_colors( $settings ) { 259 $colors = quickpress_colors_css(); 260 if ( $colors && isset( $settings['styles'] ) && is_array( $settings['styles'] ) ) { 261 $settings['styles'][] = array( 'css' => str_replace( ':root', 'body', $colors ) ); 262 } 263 return $settings; 264 } 265 add_filter( 'block_editor_settings_all', 'quickpress_editor_colors' ); 266 267 /* 268 * Long lists in the theme's own starter widgets (Categories in the sidebar, 269 * Pages in the footer): show the first 10 items, then "12 more" that opens 270 * the rest in place. Plain HTML <details>, so no JavaScript. 271 * Only blocks with the CSS class "qp-short" are shortened, so lists an 272 * owner adds themselves always show in full. (Owners can opt in by adding 273 * qp-short under the block's Advanced > Additional CSS class.) 274 * Change the number in a child theme: add_filter( 'quickpress_list_limit', fn() => 15 ); 275 */ 276 function quickpress_shorten_long_lists( $block_content, $block ) { 277 $blocks = array( 'core/categories', 'core/page-list', 'core/archives' ); 278 if ( empty( $block['blockName'] ) || ! in_array( $block['blockName'], $blocks, true ) ) { 279 return $block_content; 280 } 281 $classes = isset( $block['attrs']['className'] ) ? ' ' . $block['attrs']['className'] . ' ' : ''; 282 // qc-short is QuickChic's name for the same thing, so lists set up under 283 // QuickChic keep shortening after switching to QuickPress. 284 $marked = false !== strpos( $classes, ' qp-short ' ) || false !== strpos( $classes, ' qc-short ' ); 285 if ( is_admin() || ! $marked || ! empty( $block['attrs']['displayAsDropdown'] ) ) { 286 return $block_content; 287 } 288 289 $limit = (int) apply_filters( 'quickpress_list_limit', 10 ); 290 if ( $limit < 1 || substr_count( $block_content, '<li' ) <= $limit || ! class_exists( 'DOMDocument' ) ) { 291 return $block_content; 292 } 293 294 $doc = new DOMDocument(); 295 $old_state = libxml_use_internal_errors( true ); 296 $doc->loadHTML( '<?xml encoding="utf-8"?><div id="qp-list">' . $block_content . '</div>', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD ); 297 libxml_clear_errors(); 298 libxml_use_internal_errors( $old_state ); 299 300 $xpath = new DOMXPath( $doc ); 301 $wrap = $xpath->query( '//div[@id="qp-list"]' )->item( 0 ); 302 $list = $wrap ? $xpath->query( './/ul', $wrap )->item( 0 ) : null; 303 if ( ! $list ) { 304 return $block_content; 305 } 306 307 // Count every line, sub-items included, but never split an item from its own 308 // sub-items: show whole top-level items until the next would pass the limit. 309 $items = array(); 310 foreach ( $list->childNodes as $node ) { 311 if ( XML_ELEMENT_NODE === $node->nodeType && 'li' === $node->nodeName ) { 312 $items[] = $node; 313 } 314 } 315 $shown_lines = 0; 316 $keep = 0; 317 foreach ( $items as $item ) { 318 $lines = 1 + $item->getElementsByTagName( 'li' )->length; 319 if ( $keep > 0 && $shown_lines + $lines > $limit ) { 320 break; 321 } 322 $shown_lines += $lines; 323 $keep++; 324 } 325 $hidden = array_slice( $items, $keep ); 326 if ( ! $hidden ) { 327 return $block_content; 328 } 329 $extra = 0; 330 foreach ( $hidden as $item ) { 331 $extra += 1 + $item->getElementsByTagName( 'li' )->length; 332 } 333 334 $more_item = $doc->createElement( 'li' ); 335 $more_item->setAttribute( 'class', 'qp-more' ); 336 $details = $doc->createElement( 'details' ); 337 $summary = $doc->createElement( 'summary' ); 338 /* translators: %d: number of hidden list items */ 339 $summary->appendChild( $doc->createTextNode( sprintf( _n( '%d more', '%d more', $extra, 'quickpress' ), $extra ) ) ); 340 $rest = $doc->createElement( 'ul' ); 341 foreach ( $hidden as $item ) { 342 $rest->appendChild( $item ); // Moves the item into the hidden list. 343 } 344 $details->appendChild( $summary ); 345 $details->appendChild( $rest ); 346 $more_item->appendChild( $details ); 347 $list->appendChild( $more_item ); 348 349 $html = ''; 350 foreach ( $wrap->childNodes as $node ) { 351 $html .= $doc->saveHTML( $node ); 352 } 353 return $html; 354 } 355 add_filter( 'render_block', 'quickpress_shorten_long_lists', 10, 2 ); 356 357 // The "Read More" link used after excerpts. 358 function quickpress_read_more_link() { 359 return ' • <a class="read-more" href="' . esc_url( get_permalink( get_the_ID() ) ) . '">' . esc_html__( 'Read More', 'quickpress' ) . ' »</a>'; 360 } 361 362 // After an automatic excerpt that was cut short. 78 363 function quickpress_excerpt_more( $more ) { 79 return ' • <a class="read-more" href="'. get_permalink( get_the_ID() ) . '">' . __(' Read More »', 'quickpress') . '</a>'; 80 } 81 add_filter( 'excerpt_more', 'quickpress_excerpt_more' ); 82 83 // credits 84 function quickpress_credits() { 85 echo '<div class="center"> 86 <a href="https://wordpress.org/themes/quickpress/" target="_blank" rel="nofollow noopener noreferrer">QuickPress Theme</a> • Powered by WordPress 87 </div>'; 88 } 89 add_action('wp_footer', 'quickpress_credits'); 90 91 92 // load javascript 93 function quickpress_scripts() { 94 95 wp_enqueue_style( 'quickpress-normalize', 96 get_template_directory_uri() . '/css/normalize.css', 97 array(), 98 '8.0.1' 99 ); 100 101 wp_enqueue_style( 'quickpress', 102 get_stylesheet_uri(), 103 array(), 104 '1.9.2' 105 ); 106 107 wp_enqueue_style( 'quickpress-quickgrid', 108 get_template_directory_uri() . '/css/quickgrid.css', 109 array(), 110 '1.0' 111 ); 112 113 if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ){ 114 wp_enqueue_script( 'comment-reply' ); 115 } 116 } 117 add_action( 'wp_enqueue_scripts', 'quickpress_scripts' ); 118 ?> 364 return quickpress_read_more_link(); 365 } 366 add_filter( 'excerpt_more', 'quickpress_excerpt_more' ); 367 368 // WordPress leaves out the link in two cases where the post does go on: 369 // a hand-written excerpt (the Excerpt box in the editor), and a post with a 370 // More block early on, whose excerpt stops there. Add it in both, so every 371 // post that continues ends with Read More. 372 function quickpress_manual_excerpt_more( $excerpt ) { 373 if ( is_admin() || is_feed() || ! in_the_loop() || false !== strpos( $excerpt, 'class="read-more"' ) ) { 374 return $excerpt; 375 } 376 if ( has_excerpt() || false !== strpos( get_post_field( 'post_content', get_the_ID() ), '<!--more' ) ) { 377 return $excerpt . quickpress_read_more_link(); 378 } 379 return $excerpt; 380 } 381 add_filter( 'get_the_excerpt', 'quickpress_manual_excerpt_more', 20 ); 382 383 // Post date, author, comments and categories line, used in lists and single posts 384 function quickpress_post_meta( $show_comments = true ) { 385 echo '<p class="post-meta">'; 386 387 printf( 388 '<time datetime="%1$s">%2$s</time>', 389 esc_attr( get_the_date( 'c' ) ), 390 esc_html( get_the_date() ) 391 ); 392 393 // On a post's own page, show when it was last updated (if a day or more after publishing). 394 if ( is_singular() && get_the_modified_time( 'U' ) - get_the_time( 'U' ) >= DAY_IN_SECONDS ) { 395 printf( 396 ' | <span class="updated-date">%1$s <time datetime="%2$s">%3$s</time></span>', 397 esc_html__( 'Updated', 'quickpress' ), 398 esc_attr( get_the_modified_date( 'c' ) ), 399 esc_html( get_the_modified_date() ) 400 ); 401 } 402 403 /* translators: %s: post author name */ 404 echo ' | ' . sprintf( esc_html__( 'By %s', 'quickpress' ), esc_html( get_the_author() ) ); 405 406 if ( $show_comments && ! post_password_required() && ( comments_open() || get_comments_number() ) ) { 407 echo ' | '; 408 comments_popup_link( __( 'No Comments', 'quickpress' ), __( '1 Comment', 'quickpress' ), __( '% Comments', 'quickpress' ) ); 409 } 410 411 $categories = get_the_category_list( ', ' ); 412 if ( $categories ) { 413 /* translators: %s: list of categories */ 414 echo ' | ' . sprintf( esc_html__( 'Filed in: %s', 'quickpress' ), $categories ); // phpcs:ignore WordPress.Security.EscapeOutput -- WordPress builds this list. 415 } 416 417 edit_post_link( __( 'Edit', 'quickpress' ), ' | ', '' ); 418 419 echo '</p>'; 420 } 421 422 /* 423 * Customizer: Appearance > Customize > Colours 424 * - Header colour: the blue of the header band, menu bar, footer and links. 425 * - Accent colour: the pink of widget headings, buttons and highlights. 426 * - Dark mode: follow the reader's device setting (on by default) or stay light. 427 */ 428 function quickpress_customize_register( $wp_customize ) { 429 430 $wp_customize->add_setting( 'quickpress_brand_color', array( 431 'default' => '#2a6496', 432 'sanitize_callback' => 'sanitize_hex_color', 433 ) ); 434 $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'quickpress_brand_color', array( 435 'label' => __( 'Header colour', 'quickpress' ), 436 'description' => __( 'The header band, menu bar, footer and links. Pick a darker colour so white text stays readable on it.', 'quickpress' ), 437 'section' => 'colors', 438 ) ) ); 439 440 $wp_customize->add_setting( 'quickpress_accent_color', array( 441 'default' => '#c32364', 442 'sanitize_callback' => 'sanitize_hex_color', 443 ) ); 444 $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'quickpress_accent_color', array( 445 'label' => __( 'Accent colour', 'quickpress' ), 446 'description' => __( 'Widget headings, buttons and page numbers.', 'quickpress' ), 447 'section' => 'colors', 448 ) ) ); 449 450 $wp_customize->add_setting( 'quickpress_dark_mode', array( 451 'default' => true, 452 'sanitize_callback' => 'wp_validate_boolean', 453 ) ); 454 $wp_customize->add_control( 'quickpress_dark_mode', array( 455 'type' => 'checkbox', 456 'label' => __( 'Dark mode for readers who use it', 'quickpress' ), 457 'description' => __( 'Turns the site dark when the reader\'s phone or computer is set to dark. Untick to always stay light.', 'quickpress' ), 458 'section' => 'colors', 459 ) ); 460 } 461 add_action( 'customize_register', 'quickpress_customize_register' ); 462 463 /* 464 * Customizer: Appearance > Customize > Post Lists 465 * - Show excerpts (default) or full posts on the home page and archives. 466 * - Excerpt length in words (WordPress's default is 55). 467 * Search results always show excerpts. 468 */ 469 function quickpress_customize_post_lists( $wp_customize ) { 470 471 $wp_customize->add_section( 'quickpress_post_lists', array( 472 'title' => __( 'Post Lists', 'quickpress' ), 473 'description' => __( 'How posts appear on the home page and in category, tag, date and author archives.', 'quickpress' ), 474 'priority' => 45, 475 ) ); 476 477 $wp_customize->add_setting( 'quickpress_list_display', array( 478 'default' => 'excerpt', 479 'sanitize_callback' => 'quickpress_sanitize_list_display', 480 ) ); 481 $wp_customize->add_control( 'quickpress_list_display', array( 482 'type' => 'radio', 483 'label' => __( 'Show', 'quickpress' ), 484 'description' => __( 'With full posts, add a More block in a post to choose where it breaks.', 'quickpress' ), 485 'section' => 'quickpress_post_lists', 486 'choices' => array( 487 'excerpt' => __( 'A short excerpt with Read More', 'quickpress' ), 488 'full' => __( 'The full post', 'quickpress' ), 489 ), 490 ) ); 491 492 $wp_customize->add_setting( 'quickpress_excerpt_length', array( 493 'default' => 55, 494 'sanitize_callback' => 'quickpress_sanitize_excerpt_length', 495 ) ); 496 $wp_customize->add_control( 'quickpress_excerpt_length', array( 497 'type' => 'number', 498 'label' => __( 'Excerpt length (words)', 'quickpress' ), 499 'description' => __( 'Between 10 and 200. WordPress uses 55.', 'quickpress' ), 500 'section' => 'quickpress_post_lists', 501 'input_attrs' => array( 'min' => 10, 'max' => 200, 'step' => 5 ), 502 ) ); 503 } 504 add_action( 'customize_register', 'quickpress_customize_post_lists' ); 505 506 function quickpress_sanitize_list_display( $value ) { 507 return 'full' === $value ? 'full' : 'excerpt'; 508 } 509 510 function quickpress_sanitize_excerpt_length( $value ) { 511 return max( 10, min( 200, absint( $value ) ) ); 512 } 513 514 // Should this post list show full posts? Search results always use excerpts. 515 function quickpress_show_full_posts() { 516 return ! is_search() && 'full' === get_theme_mod( 'quickpress_list_display', 'excerpt' ); 517 } 518 519 // The excerpt length chosen in Customize > Post Lists. 520 function quickpress_excerpt_length( $length ) { 521 if ( is_admin() ) { 522 return $length; 523 } 524 return quickpress_sanitize_excerpt_length( get_theme_mod( 'quickpress_excerpt_length', 55 ) ); 525 } 526 add_filter( 'excerpt_length', 'quickpress_excerpt_length' ); 527 528 // The theme's two colours: the saved one, or the default. 529 function quickpress_colors() { 530 $brand = sanitize_hex_color( get_theme_mod( 'quickpress_brand_color', '#2a6496' ) ); 531 $accent = sanitize_hex_color( get_theme_mod( 'quickpress_accent_color', '#c32364' ) ); 532 return array( 533 'brand' => $brand ? $brand : '#2a6496', 534 'accent' => $accent ? $accent : '#c32364', 535 ); 536 } 537 538 // The owner's colours as CSS, or '' when both are the defaults. 539 function quickpress_colors_css() { 540 $colors = quickpress_colors(); 541 $css = ''; 542 if ( '#2a6496' !== strtolower( $colors['brand'] ) ) { 543 $css .= '--qp-brand:' . $colors['brand'] . ';'; 544 } 545 if ( '#c32364' !== strtolower( $colors['accent'] ) ) { 546 $css .= '--qp-accent:' . $colors['accent'] . ';'; 547 } 548 return $css ? ':root{' . $css . '}' : ''; 549 } 550 551 // Is this post or page using the Full width template? 552 function quickpress_is_full_width() { 553 return is_singular() && is_page_template( 'template-full-width.php' ); 554 } 555 556 // Full width pages get a wider content area for embeds and large images. 557 function quickpress_full_width_content_width() { 558 if ( quickpress_is_full_width() ) { 559 $GLOBALS['content_width'] = 950; 560 } 561 } 562 add_action( 'template_redirect', 'quickpress_full_width_content_width' ); 563 564 // Body classes: dark mode switched off, Full width template. 565 function quickpress_body_classes( $classes ) { 566 if ( ! get_theme_mod( 'quickpress_dark_mode', true ) ) { 567 $classes[] = 'qp-light-only'; 568 } 569 if ( quickpress_is_full_width() ) { 570 $classes[] = 'qp-full-width'; 571 } 572 return $classes; 573 } 574 add_filter( 'body_class', 'quickpress_body_classes' ); 575 576 // Load stylesheets 577 function quickpress_scripts() { 578 579 // Theme version plus the file's last change time, so browsers fetch fresh CSS 580 // after every update, even when the version number stays the same. 581 $version = wp_get_theme( get_template() )->get( 'Version' ) . '.' . filemtime( get_template_directory() . '/style.css' ); 582 583 // The whole theme is one small stylesheet. 584 wp_enqueue_style( 'quickpress', get_stylesheet_uri(), array(), $version ); 585 586 // The owner's colours, if they picked any (a few bytes, no extra file). 587 $colors = quickpress_colors_css(); 588 if ( $colors ) { 589 wp_add_inline_style( 'quickpress', $colors ); 590 } 591 592 // WordPress's own script for threaded comment replies, only where needed. 593 if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { 594 wp_enqueue_script( 'comment-reply' ); 595 } 596 } 597 add_action( 'wp_enqueue_scripts', 'quickpress_scripts' ); -
quickpress/2.0/header.php
r183335 r355971 3 3 4 4 <head> 5 <meta charset="utf-8">6 <meta name="viewport" content="width=device-width, initial-scale=1.0">7 <?php wp_head(); ?>5 <meta charset="<?php bloginfo( 'charset' ); ?>"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <?php wp_head(); ?> 8 8 </head> 9 9 10 10 <body <?php body_class(); ?>> 11 <?php wp_body_open(); ?>12 <div id="page">11 <?php wp_body_open(); ?> 12 <a class="skip-link screen-reader-text" href="#content"><?php esc_html_e( 'Skip to content', 'quickpress' ); ?></a> 13 13 14 <header id="header"> 15 16 <div class="searchform header-search"> 17 <!-- Search --> 18 <?php get_search_form(); ?> 19 </div> 20 21 <div class="blog-top"> 22 <?php if (is_home()) { ?> 23 <h1> 24 <?php } ?> 25 <a class="blogtitle" href="<?php echo esc_url( home_url() ); ?>"> 26 <?php bloginfo('name'); ?> 27 </a> 28 <?php if (is_home()) { ?> 29 </h1> 30 <?php } ?> 31 <div class="description"> 32 <?php bloginfo('description'); ?> 33 </div> 34 </div> 35 36 <div class="searchform header-search-mobile"> 37 <!-- Search --> 38 <?php get_search_form(); ?> 39 </div> 40 41 </header> 14 <div id="page"> 42 15 43 <nav id="menu-header"> 44 <!-- Header Menu --> 45 <?php wp_nav_menu( array( 46 'theme_location' => 'header-nav', 47 'menu_class' => 'nav navbar-nav', 48 'container' => false, 49 'depth' => 1, 50 // do not fall back to wp_page_menu() 51 'fallback_cb' => false 52 ) ); ?> 53 </nav> 16 <header id="header"> 54 17 55 <div class="row"> <!-- start row --> 18 <div class="site-branding"> 19 <?php the_custom_logo(); ?> 20 21 <?php if ( is_front_page() && is_home() ) : ?> 22 <h1 class="site-title"><a class="blogtitle" href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1> 23 <?php else : ?> 24 <p class="site-title"><a class="blogtitle" href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p> 25 <?php endif; ?> 26 27 <?php if ( get_bloginfo( 'description' ) ) : ?> 28 <p class="description"><?php bloginfo( 'description' ); ?></p> 29 <?php endif; ?> 30 </div> 31 32 <div class="header-search"> 33 <?php get_search_form(); ?> 34 </div> 35 36 </header> 37 38 <?php 39 if ( has_nav_menu( 'header-nav' ) ) { 40 wp_nav_menu( array( 41 'theme_location' => 'header-nav', 42 'container' => 'nav', 43 'container_id' => 'menu-header', 44 'container_class' => 'main-menu', 45 'container_aria_label' => __( 'Main menu', 'quickpress' ), 46 'depth' => 1, 47 ) ); 48 } 49 ?> 50 51 <div class="row"> <!-- start row --> -
quickpress/2.0/index.php
r183335 r355971 1 1 <?php get_header(); ?> 2 2 3 <div id="content" class="content column left"> 4 <main> 3 5 4 <main> 5 <section> 6 <?php if ( is_home() && ! is_front_page() ) : ?> 7 <h1 class="page-title"><?php single_post_title(); ?></h1> 8 <?php endif; ?> 6 9 7 <?php get_template_part('loop'); ?>8 <?php get_template_part('pagination'); ?>10 <?php get_template_part( 'loop' ); ?> 11 <?php get_template_part( 'pagination' ); ?> 9 12 10 </section>11 </main>13 </main> 14 </div> 12 15 13 </div>14 16 <?php get_sidebar(); ?> 15 17 <?php get_footer(); ?> -
quickpress/2.0/loop.php
r183320 r355971 1 <?php if ( have_posts()): while (have_posts()) : the_post(); ?>1 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 2 2 3 <article <?php post_class() ?> id="post-<?php the_ID(); ?>">3 <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> 4 4 5 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> 6 7 <small><?php the_time(get_option('date_format')); ?> | 8 <?php _e( 'By ', 'quickpress' ); the_author(); ?> | 9 <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?> 10 | <?php _e( 'Filed in: ', 'quickpress' ); the_category(', '); ?>. <?php edit_post_link('Edit'); ?> </small> 5 <h2 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h2> 11 6 12 <div class="entry">7 <?php quickpress_post_meta(); ?> 13 8 14 <!-- post thumbnail --> 15 <?php if ( has_post_thumbnail()) : // Check if Thumbnail exists ?> 16 <p class="alignright"> 17 <a class="thumbnail" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> 18 <?php the_post_thumbnail( 'thumbnail' ); ?> 19 </a> 20 </p> 21 <?php endif; ?> 22 <!-- /post thumbnail --> 9 <div class="entry"> 23 10 24 <?php the_excerpt(); ?> 25 </div> 26 11 <?php if ( has_post_thumbnail() ) : ?> 12 <a class="post-thumb alignright" href="<?php the_permalink(); ?>" aria-hidden="true" tabindex="-1"> 13 <?php the_post_thumbnail( 'thumbnail' ); ?> 14 </a> 15 <?php endif; ?> 16 17 <?php 18 if ( quickpress_show_full_posts() ) { 19 // Full post, up to a More block if the post has one. 20 the_content( esc_html__( 'Read More', 'quickpress' ) . ' »' ); 21 } else { 22 the_excerpt(); 23 } 24 ?> 25 26 </div> 27 27 28 </article> 28 29 29 <?php endwhile; ?> 30 <?php else: ?> 30 <?php endwhile; else : ?> 31 31 32 <article >33 <h2>34 <?php _e( 'Content Not Found', 'quickpress'); ?>35 </h2>32 <article class="no-results"> 33 <h2><?php esc_html_e( 'Nothing Found', 'quickpress' ); ?></h2> 34 <p><?php esc_html_e( 'Nothing matched here. Try a search instead.', 'quickpress' ); ?></p> 35 <?php get_search_form(); ?> 36 36 </article> 37 37 -
quickpress/2.0/page.php
r183335 r355971 2 2 3 3 <div id="content" class="content column left"> 4 <main> 5 <section> 6 <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 7 <article class="post" id="post-<?php the_ID(); ?>"> 8 <h1><?php the_title(); ?></h1> 9 10 <div class="entry"> 11 <?php the_content(); ?> 12 <?php wp_link_pages(array( 13 'before' => '<div class="page-links"><span class="page-links-title">' . __( '<b>Pages:</b>', 'quickpress' ) . '</span>', 14 'after' => '</div>', 15 'link_before' => '<span>', 16 'link_after' => '</span>', 17 'next_or_number' => 'number' 18 )); 19 ?> 4 <main> 20 5 21 </div> 6 <?php while ( have_posts() ) : the_post(); ?> 7 <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> 22 8 23 <?php comments_template(); ?> 24 </article> 9 <h1 class="entry-title"><?php the_title(); ?></h1> 25 10 26 <?php endwhile; ?> 27 <?php else: ?> 28 <article> 29 <h2> 30 <?php _e( 'Content Not Found', 'quickpress'); ?> 31 </h2> 32 </article> 33 <?php endif; ?> 11 <div class="entry"> 12 <?php the_content(); ?> 34 13 35 <?php edit_post_link(); ?> 14 <?php 15 wp_link_pages( array( 16 'before' => '<div class="page-links"><span class="page-links-title">' . esc_html__( 'Pages:', 'quickpress' ) . '</span>', 17 'after' => '</div>', 18 'link_before' => '<span>', 19 'link_after' => '</span>', 20 ) ); 21 ?> 22 </div> 36 23 37 </section> 38 </main> 24 <?php edit_post_link( __( 'Edit', 'quickpress' ), '<p class="post-meta">', '</p>' ); ?> 25 26 <?php 27 if ( comments_open() || get_comments_number() ) { 28 comments_template(); 29 } 30 ?> 31 32 </article> 33 <?php endwhile; ?> 34 35 </main> 39 36 </div> 37 40 38 <?php get_sidebar(); ?> 41 39 <?php get_footer(); ?> -
quickpress/2.0/pagination.php
r128061 r355971 1 <nav class="navigation"> 2 <div class="alignleft mainnav"> 3 <?php previous_posts_link(); ?> 4 </div> 5 <div class="alignright mainnav"> 6 <?php next_posts_link(); ?> 7 </div> 8 </nav> 1 <?php 2 // Numbered page links: « Newer 1 2 3 … Older » 3 the_posts_pagination( array( 4 'mid_size' => 1, 5 'prev_text' => '« ' . __( 'Newer', 'quickpress' ), 6 'next_text' => __( 'Older', 'quickpress' ) . ' »', 7 ) ); -
quickpress/2.0/readme.txt
r128061 r355971 1 === QuickPress Theme === 1 === QuickPress === 2 Contributors: quickonlinetips 3 Requires at least: 6.0 4 Tested up to: 7.1 5 Requires PHP: 7.4 6 Stable tag: 2.0 7 License: GPLv2 or later 8 License URI: https://www.gnu.org/licenses/gpl-2.0.html 2 9 3 Theme Name: QuickPress 4 Theme URI: https://www.quickonlinetips.com/archives/quickpress-wordpress-theme/ 5 Description: A lightweight, 2-3 columns, widget ready, SEO optimized, fast loading, easy to customize wordpress theme. 10 A fast three-column blog theme with room for widgets: one small stylesheet, no JavaScript, nothing to set up. Activate it and start writing. 6 11 7 Author: QuickOnlineTips 8 Author URI: https://www.quickonlinetips.com/ 9 Tags: white, blue, gray, silver, light, two-columns, three-columns, right-sidebar, fixed-width, threaded-comments, sticky-post 12 == Description == 10 13 11 License: GNU General Public License v2.0 12 License URI: http://www.gnu.org/licenses/gpl-2.0.html 14 QuickPress is for bloggers and growing sites that want room for widgets (recent posts, categories, a newsletter box, an ad or two) without a slow, cluttered page. Your readers get your posts first and fast, and you spend your time writing instead of learning a page builder. 13 15 14 16 * **Ultra light and fast.** One small stylesheet, no JavaScript, no web fonts, no frameworks. 17 * **Plug and play.** Activate it and start writing. There is no options panel to learn. 18 * **Familiar and simple.** Set up widgets and menus in the usual Appearance > Widgets and Menus screens. Posts written in the block editor look just right. 19 * **Room for widgets.** Posts on the left; on the right a full-width widget area with two narrow columns below it, so the sidebar can be one, two or three columns. On phones the posts come first, then the widgets. 20 * **Custom-coded.** Every file is hand-written and easy to read if you want to change something in a child theme. 21 * **Modern touches.** Automatic dark mode, text that scales smoothly from phone to desktop, an editor that looks like your site, and clean printouts. 22 23 Features: header colour and accent colour pickers, dark mode (can be switched off), Full width template for posts and pages, widget areas in the sidebar (full width plus two split columns), below posts and in three footer columns, search box in the header, main menu bar and footer menu with social icons, custom logo, custom background, featured images, Updated date on edited posts, sticky posts, threaded comments, numbered pagination, theme colours and text sizes in the block editor, block styles and patterns, starter content for new sites, Skip to content link, print styles, translation ready. 24 25 To change the blue header or the pink accent, go to Appearance > Customize > Colours and pick your own. The same screen lets you turn off dark mode if you want the site to always stay light. 26 27 More about the theme: https://www.quickonlinetips.com/archives/quickpress-wordpress-theme/ 28 29 == Frequently Asked Questions == 30 31 = Does QuickPress support the block editor? = 32 33 Yes for writing posts and pages: block content is styled to match the theme. QuickPress itself is a classic theme, so the site layout is set with widgets and menus, not with the Site Editor. 34 35 = Where do I add my menu? = 36 37 Go to Appearance > Menus, create a menu and tick Main Menu (the bar under the header) or Footer Menu. 38 39 = Why does a new site already show widgets and a menu? = 40 41 On a brand-new WordPress install, QuickPress offers starter content in Appearance > Customize: sidebar widgets (Recent Posts, Categories, Recent Comments), two footer columns (About, Pages), About and Contact pages and a main menu, so you see the whole design straight away. Nothing is saved until you click Publish, and sites that already have content never see it. Edit or remove any of it in Appearance > Widgets. 42 43 = Do I need the Classic Widgets plugin? = 44 45 No. QuickPress uses the block widgets WordPress gives every site. Add any block (Latest Posts, Categories, Paragraph, Image and more) in Appearance > Widgets. 46 47 = What shows in the sidebar before I add widgets? = 48 49 Recent Posts across the top, then Categories and Recent Comments side by side, so a new site never looks empty. As soon as you add your own widgets, they take over. If your old widgets were moved to Inactive when you switched themes, drag them into the sidebar areas in Appearance > Widgets. 50 51 = How do the sidebar areas work? = 52 53 Sidebar Full runs across the whole right column. Sidebar Split Left and Sidebar Split Right sit side by side under it. Use only Sidebar Full for a two-column site, or all three for three columns. A split area on its own takes the full width. 54 55 = How do I make a page without the sidebar? = 56 57 In the editor, open the Post (or Page) settings, find Template and pick "Full width, no sidebar". 58 59 = Where can I add widgets? = 60 61 Appearance > Widgets has seven areas: Sidebar Full, Sidebar Split Left, Sidebar Split Right, Below Posts (under each single post, before the comments) and Footer 1, 2 and 3. Empty areas are hidden, so add only what you need. 62 63 = Can I show full posts on the home page, or shorter excerpts? = 64 65 Yes. Appearance > Customize > Post Lists lets you show a short excerpt with Read More (the default) or the full post, and set the excerpt length in words. With full posts, add a More block in a post to choose where it breaks. Search results always show excerpts. 66 67 = How do I add social icons? = 68 69 Create a menu in Appearance > Menus with links to your profiles (for example https://www.instagram.com/yourname) and assign it to Footer Menu. Links to well-known networks show as small icons; other links stay as text. 70 71 = Can I turn off dark mode? = 72 73 Yes. Appearance > Customize > Colours, untick "Dark mode for readers who use it". 74 75 == Changelog == 76 77 = 2.0 - October 2026 = 78 * Automatic dark mode that follows the reader's device, with an off switch 79 * Header colour and accent colour pickers in Customize > Colours 80 * Full width template for posts and pages 81 * New widget areas: Below Posts and three footer columns 82 * Editor looks like the site; theme colours and text sizes in the block editor 83 * Text sizes scale smoothly from phone to desktop 84 * Updated date shown on edited posts 85 * Customize > Post Lists: excerpts or full posts, and the excerpt length 86 * Read More also shows after hand-written excerpts 87 * Print styles 88 * Social links in the Footer Menu show as small icons (X, Facebook, Instagram, LinkedIn, YouTube, GitHub, Pinterest, TikTok, Threads, Bluesky, Mastodon, Reddit, WhatsApp, Telegram, email, RSS) 89 * Block styles (Accent bar for quotes, Soft box for groups) and two block patterns (newsletter sign-up box, about the author) 90 * Block widgets work out of the box; no Classic Widgets plugin needed 91 * Sidebar shows Recent Posts, Categories and Recent Comments until you add widgets 92 * Starter content for new sites: sidebar widgets, footer columns, About and Contact pages, main menu 93 * One stylesheet instead of three; normalize.css replaced by a much smaller reset 94 * One search box in the header instead of two copies; the page no longer scrolls sideways on tablets 95 * Footer Menu, custom logo; the Main Menu keeps its place on existing sites 96 * Numbered pagination, featured image on single posts 97 * Accessibility: Skip to content link, proper screen reader text, visible keyboard focus, underlined links in posts 98 * Styles for block editor content: tables, code, buttons, separators, captions 99 * Archive titles work for tags, authors and dates; search form on empty results and the 404 page 100 * Comments: tighter layout, fixes for password-protected posts and a duplicate id 101 * wp_footer() moved to just before </body>; all text translatable and escaped 102 * Tested up to WordPress 7.1, requires PHP 7.4 103 104 = 1.9.2 = 105 * Earlier release. 106 107 == Copyright == 108 109 QuickPress WordPress Theme, Copyright 2026 QuickOnlineTips.com 110 QuickPress is distributed under the terms of the GNU GPL v2 or later. 111 112 == Resources == 113 114 * Social icons in inc/social-icons.php: Simple Icons (https://simpleicons.org), CC0 1.0; LinkedIn and Email icons from the Twenty Twenty theme by the WordPress team, GPLv2 or later. 115 * screenshot.png, theme screenshot by QuickOnlineTips, GPLv2 or later. Photos shown in the screenshot: 116 * City skyline above a green park, by Joel Peralta, CC0, https://wordpress.org/photos/photo/8766a7044c/ 117 * Green mountain hills under a cloudy sky, by gaby21, CC0, https://wordpress.org/photos/photo/1226a7538f/ 118 * Wooden desk with a mug, notebook and plants, by Tawhid Sadman, CC0, https://wordpress.org/photos/photo/19869638f8/ -
quickpress/2.0/search.php
r183335 r355971 1 1 <?php get_header(); ?> 2 2 3 <div id="content" class="content column left"> 4 <main> 3 5 4 <main> 5 <section> 6 <header class="page-header"> 7 <h1 class="page-title"> 8 <?php 9 /* translators: %s: search words */ 10 printf( esc_html__( 'Search Results for: %s', 'quickpress' ), '<span>' . esc_html( get_search_query() ) . '</span>' ); 11 ?> 12 </h1> 13 </header> 6 14 7 <h1><?php printf( __( 'Search Results for: %s', 'quickpress' ), '<span>' . get_search_query() . '</span>' ); ?></h1> 8 9 <?php get_template_part('loop'); ?> 10 <?php get_template_part('pagination'); ?> 15 <?php get_template_part( 'loop' ); ?> 16 <?php get_template_part( 'pagination' ); ?> 11 17 12 </section>13 </main>18 </main> 19 </div> 14 20 15 </div>16 21 <?php get_sidebar(); ?> 17 22 <?php get_footer(); ?> -
quickpress/2.0/sidebar.php
r183335 r355971 1 <div id="sidebar" class="sidebar column right"> 2 <aside> 1 <?php 2 // The Full width template has no sidebar. 3 if ( quickpress_is_full_width() ) { 4 return; 5 } 6 ?> 7 <aside id="sidebar" class="sidebar column right" aria-label="<?php esc_attr_e( 'Sidebar', 'quickpress' ); ?>"> 3 8 4 <!-- Remove this box for pure 3-columns --> 5 <div id="adbox"> 6 <ul> 7 <li> 8 <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?> 9 <?php dynamic_sidebar( 'sidebar-1' ); ?> 10 <?php else : ?> 11 <?php endif; ?> 12 </li> 13 </ul> 14 </div> 15 <!-- /Remove this box for pure 3-columns --> 9 <?php 10 // No widgets yet (a new site, or widgets parked in Inactive): show a few useful blocks. 11 if ( ! is_active_sidebar( 'sidebar-1' ) && ! is_active_sidebar( 'sidebar-2' ) && ! is_active_sidebar( 'sidebar-3' ) ) { 12 quickpress_default_sidebar(); 13 } 14 ?> 16 15 17 <!-- Start sub-columns --> 18 <div class="row"> 19 20 <!-- Left_sidebar starts --> 21 <div id="" class="column subcol"> 22 <ul> 23 <li> 24 <?php if ( is_active_sidebar( 'sidebar-2' ) ) : ?> 25 <?php dynamic_sidebar( 'sidebar-2' ); ?> 26 27 <?php endif; ?> 28 </li> 29 </ul> 30 </div> 31 <!-- /l_sidebar--> 16 <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?> 17 <div class="sidebar-full"> 18 <?php dynamic_sidebar( 'sidebar-1' ); ?> 19 </div> 20 <?php endif; ?> 32 21 33 <!-- Right_sidebar starts --> 34 <div id="" class="column subcol"> 35 <ul> 36 <li> 37 <?php if ( is_active_sidebar( 'sidebar-3' ) ) : ?> 38 <?php dynamic_sidebar( 'sidebar-3' ); ?> 39 40 <?php endif; ?> 41 </li> 42 </ul> 43 </div> 44 <!-- /r_sidebar--> 22 <?php if ( is_active_sidebar( 'sidebar-2' ) || is_active_sidebar( 'sidebar-3' ) ) : ?> 23 <div class="sidebar-split"> 24 <?php if ( is_active_sidebar( 'sidebar-2' ) ) : ?> 25 <div class="subcol"> 26 <?php dynamic_sidebar( 'sidebar-2' ); ?> 27 </div> 28 <?php endif; ?> 29 <?php if ( is_active_sidebar( 'sidebar-3' ) ) : ?> 30 <div class="subcol"> 31 <?php dynamic_sidebar( 'sidebar-3' ); ?> 32 </div> 33 <?php endif; ?> 34 </div> 35 <?php endif; ?> 45 36 46 </div> <!-- End sub-columns --> 47 48 </aside> 49 </div> 50 <!-- /sidebar--> 37 </aside> 38 <!-- /sidebar --> -
quickpress/2.0/single.php
r183335 r355971 1 1 <?php get_header(); ?> 2 2 3 <div id="content" class="content column left"> 3 <main> 4 <section> 4 <main> 5 5 6 <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 7 <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> 8 9 <h1><?php the_title(); ?></h1> 10 11 <small><a href="<?php the_permalink() ?>"><?php the_time(get_option('date_format')); ?></a> | <?php _e( 'By ', 'quickpress' ); the_author(); ?> | <?php _e( 'Filed in: ', 'quickpress' ); the_category(', '); ?>. <?php edit_post_link('Edit'); ?> </small> 6 <?php while ( have_posts() ) : the_post(); ?> 7 <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> 12 8 13 <div class="entry"> 14 <?php the_content(); ?> 9 <h1 class="entry-title"><?php the_title(); ?></h1> 15 10 16 <?php if (is_attachment()) { ?> 17 <span class="alignleft"><?php previous_image_link( false, '← Previous' ); ?></span> 18 <span class="alignright"><?php next_image_link( false, 'Next →'); ?></span> 19 <?php } ?> 20 <br /> 11 <?php quickpress_post_meta( false ); ?> 21 12 22 <?php wp_link_pages(array( 23 'before' => '<div class="page-links"><span class="page-links-title">' . __( '<b>Pages:</b>', 'quickpress' ) . '</span>', 24 'after' => '</div>', 25 'link_before' => '<span>', 26 'link_after' => '</span>', 27 'next_or_number' => 'number' 28 )); 29 ?> 13 <div class="entry"> 30 14 31 <p>32 <?php the_tags( __( 'Tags: ', 'quickpress' ), ', ', ''); ?>33 </p>15 <?php if ( has_post_thumbnail() && ! is_attachment() ) : ?> 16 <figure class="post-image"><?php the_post_thumbnail( 'large' ); ?></figure> 17 <?php endif; ?> 34 18 35 <div class="navigation"> 36 <div class="alignleft"> 37 <?php previous_post_link('« %link') ?> 38 </div> 39 <div class="alignright"> 40 <?php next_post_link('%link »') ?> 41 </div> 42 </div> 19 <?php the_content(); ?> 43 20 44 <?php comments_template(); ?> 45 </div> 46 </article> 47 48 <?php endwhile; ?> 49 <?php else: ?> 50 <article> 51 <h2> 52 <?php _e( 'Content Not Found', 'quickpress'); ?> 53 </h2> 54 </article> 55 <?php endif; ?> 21 <?php if ( is_attachment() ) : ?> 22 <nav class="navigation image-nav"> 23 <span class="alignleft"><?php previous_image_link( false, '← ' . __( 'Previous', 'quickpress' ) ); ?></span> 24 <span class="alignright"><?php next_image_link( false, __( 'Next', 'quickpress' ) . ' →' ); ?></span> 25 </nav> 26 <?php endif; ?> 56 27 28 <?php 29 wp_link_pages( array( 30 'before' => '<div class="page-links"><span class="page-links-title">' . esc_html__( 'Pages:', 'quickpress' ) . '</span>', 31 'after' => '</div>', 32 'link_before' => '<span>', 33 'link_after' => '</span>', 34 ) ); 35 ?> 57 36 58 </section> 59 </main> 60 </div> 61 <?php get_sidebar(); ?> 62 <?php get_footer(); ?> 37 <?php the_tags( '<p class="post-tags">' . esc_html__( 'Tags: ', 'quickpress' ), ', ', '</p>' ); ?> 38 39 </div> 40 41 <?php if ( ! is_attachment() && is_active_sidebar( 'after-post' ) ) : ?> 42 <aside class="after-post widget-area" aria-label="<?php esc_attr_e( 'Below post', 'quickpress' ); ?>"> 43 <?php dynamic_sidebar( 'after-post' ); ?> 44 </aside> 45 <?php endif; ?> 46 47 <?php if ( ! is_attachment() ) : ?> 48 <nav class="navigation post-nav" aria-label="<?php esc_attr_e( 'Posts', 'quickpress' ); ?>"> 49 <div class="alignleft"><?php previous_post_link( '« %link' ); ?></div> 50 <div class="alignright"><?php next_post_link( '%link »' ); ?></div> 51 </nav> 52 <?php endif; ?> 53 54 <?php 55 if ( comments_open() || get_comments_number() ) { 56 comments_template(); 57 } 58 ?> 59 60 </article> 61 <?php endwhile; ?> 62 63 </main> 64 </div> 65 66 <?php get_sidebar(); ?> 67 <?php get_footer(); ?> -
quickpress/2.0/style.css
r183335 r355971 2 2 Theme Name: QuickPress 3 3 Theme URI: https://www.quickonlinetips.com/archives/quickpress-wordpress-theme/ 4 Description: A lightweight, 2-3 columns, widget ready, SEO optimized, fast loading, easy to customize WordPress theme.5 Version: 1.9.26 Requires at least: 5.07 Tested up to: 6.18 Requires PHP: 7. 04 Description: QuickPress is a fast three-column blog theme for bloggers and growing sites that want room for widgets without slowing down. One small stylesheet, no JavaScript and no web fonts, so pages load instantly, and there is nothing to set up: activate it and start writing. A coloured header with your site title and a search box, a menu bar, posts on the left, and on the right a full-width widget area with two narrow columns below it. Includes automatic dark mode, header and accent colour pickers, a full width template, footer widgets, featured images and print styles. Uses the familiar Widgets and Menus screens and works with the block editor. 5 Version: 2.0 6 Requires at least: 6.0 7 Tested up to: 7.1 8 Requires PHP: 7.4 9 9 Author: QuickOnlineTips 10 10 Author URI: https://www.quickonlinetips.com/ 11 Tags: two-columns, three-columns, right-sidebar, threaded-comments, sticky-post, custom-background11 Tags: blog, two-columns, three-columns, right-sidebar, custom-background, custom-colors, custom-logo, custom-menu, editor-style, featured-images, footer-widgets, full-width-template, block-styles, sticky-post, threaded-comments, translation-ready 12 12 Text Domain: quickpress 13 License: GNU General Public License v2.0 14 License URI: http://www.gnu.org/licenses/gpl-2.0.html 15 QuickPress WordPress Theme, Copyright 2019 QuickOnlineTips.com 16 QuickPress is distributed under the terms of the GNU GPL 13 License: GNU General Public License v2 or later 14 License URI: https://www.gnu.org/licenses/gpl-2.0.html 15 16 QuickPress WordPress Theme, Copyright 2026 QuickOnlineTips.com 17 QuickPress is distributed under the terms of the GNU GPL. 17 18 */ 18 19 19 20 /* Begin Typography & Colors 21 ------------------------------------- */ 20 /* Contents 21 ------------------------------------- 22 1. Settings (colours and fonts), dark mode 23 2. QuickReset (replaces normalize.css) 24 3. QuickGrid (page layout) 25 4. Typography 26 5. Header and menu bar 27 6. Posts and pages 28 7. Images and block content 29 8. Sidebar 30 9. Comments and forms 31 10. Navigation 32 11. Footer 33 12. Accessibility 34 13. Phones and tablets 35 14. Print 36 ------------------------------------- */ 37 38 39 /* 1. Settings 40 Change these few values to recolour the whole theme. 41 ------------------------------------- */ 42 43 :root { 44 --qp-brand: #2a6496; /* header band, footer band, menu bar, links */ 45 --qp-accent: #c32364; /* widget headings, buttons, highlights */ 46 --qp-text: #333; 47 --qp-muted: #707070; 48 --qp-border: #ddd; 49 --qp-line: #eee; 50 --qp-soft: #f6f6f6; 51 --qp-bg: #fff; 52 --qp-page-bg: #ede8e2; /* around the page on wide screens */ 53 --qp-link: color-mix(in srgb, var(--qp-brand) 60%, #0050b4); /* a richer blue than the header */ 54 --qp-band: var(--qp-brand); /* the header band */ 55 --qp-on-brand: #fff; 56 --qp-on-accent: #fff; 57 --qp-accent-text: var(--qp-accent); /* accent-coloured words */ 58 --qp-menu: color-mix(in srgb, var(--qp-brand) 20%, #fff); 59 --qp-footer: color-mix(in srgb, var(--qp-brand) 80%, #000); 60 --qp-footer-tint: color-mix(in srgb, var(--qp-brand) 8%, #fff); /* behind footer widgets */ 61 --qp-page-edge: rgba(0, 0, 0, 0.07); /* hairline around the page on wide screens */ 62 --qp-field: #fff; 63 --qp-field-border: #bbb; 64 --qp-alt: #f9f9f9; 65 --qp-author: #f5fafa; 66 --qp-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Arial, sans-serif; 67 --qp-heading-font: var(--qp-font); /* the same system font, in bold */ 68 --qp-mono: ui-monospace, Menlo, Consolas, "Courier New", monospace; 69 } 70 71 72 /* Dark mode 73 Follows the reader's device setting. The blue is deepened for the bands 74 and lightened for links, so any colour the owner picks stays readable. 75 Owners can switch this off in Customize > Colours. 76 ------------------------------------- */ 77 78 @media (prefers-color-scheme: dark) { 79 body:not(.qp-light-only) { 80 --qp-text: #e4e4e4; 81 --qp-muted: #a3a3a3; 82 --qp-border: #3a3a3a; 83 --qp-line: #2a2a2a; 84 --qp-soft: #262626; 85 --qp-bg: #171717; 86 --qp-page-bg: #0d0d0d; 87 --qp-link: color-mix(in srgb, var(--qp-brand) 55%, #fff); 88 --qp-accent-text: color-mix(in srgb, var(--qp-accent) 65%, #fff); 89 --qp-band: color-mix(in srgb, var(--qp-brand) 70%, #000); 90 --qp-menu: color-mix(in srgb, var(--qp-brand) 25%, #1c1c1c); 91 --qp-footer: color-mix(in srgb, var(--qp-brand) 45%, #000); 92 --qp-footer-tint: color-mix(in srgb, var(--qp-brand) 14%, #171717); 93 --qp-page-edge: rgba(255, 255, 255, 0.08); 94 --qp-field: #1f1f1f; 95 --qp-field-border: #555; 96 --qp-alt: #1d1d1d; 97 --qp-author: #17252b; 98 color-scheme: dark; 99 } 100 } 101 102 103 /* 2. QuickReset 104 The few fixes modern browsers still need. 105 ------------------------------------- */ 106 107 *, 108 *::before, 109 *::after { 110 box-sizing: border-box; 111 } 112 113 html { 114 -webkit-text-size-adjust: 100%; 115 text-size-adjust: 100%; 116 } 22 117 23 118 body { 24 font-size: 82.5%; 25 font-family: -apple-system, BlinkMacSystemFont, Avenir, "Avenir Next", 26 "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 27 "Droid Sans", "Helvetica Neue", sans-serif; 28 background: #EDE8E2; 29 color: #333; 30 } 119 margin: 0; 120 } 121 122 img, 123 svg, 124 video, 125 iframe { 126 max-width: 100%; 127 } 128 129 img, 130 video { 131 height: auto; 132 } 133 134 button, 135 input, 136 select, 137 textarea { 138 font: inherit; 139 color: inherit; 140 } 141 142 pre, 143 code, 144 kbd { 145 font-family: var(--qp-mono); 146 font-size: 0.9em; 147 } 148 149 sub, 150 sup { 151 font-size: 75%; 152 line-height: 0; 153 position: relative; 154 } 155 156 sup { 157 top: -0.5em; 158 } 159 160 sub { 161 bottom: -0.25em; 162 } 163 164 table { 165 border-collapse: collapse; 166 } 167 168 169 /* 3. QuickGrid 170 Wide screens: posts on the left (2/3), widgets on the right (1/3). 171 The right column has a full-width area on top, then two narrow columns. 172 Phones: posts, then widgets. 173 ------------------------------------- */ 31 174 32 175 #page { 33 background-color: #FFF; 34 text-align: left; 35 } 36 37 #header { 38 background: #2a6496; 176 max-width: 1000px; 177 margin: 0 auto; 178 background: var(--qp-bg); 179 box-shadow: 0 0 0 1px var(--qp-page-edge), 0 2px 14px var(--qp-page-edge); /* lifts the page off the background */ 180 } 181 182 .row { 183 display: grid; 184 grid-template-columns: 2fr 1fr; 185 grid-template-areas: "content sidebar"; 39 186 } 40 187 41 188 #content { 42 font-size: 1.1em; 43 background: #fff; 44 } 45 46 .content .entry { 47 line-height: 1.6em; 48 } 49 50 .content .postmetadata {} 51 52 .thread-alt { 53 background-color: #f3f3f3; 54 } 55 56 .thread-even { 57 background-color: white; 58 } 59 60 .depth-1 { 61 border: 1px solid #ddd; 62 } 63 64 .even, 65 .alt { 66 border-left: 1px solid #ddd; 67 } 68 69 #footer { 70 background: #14568A; 71 border: none; 72 } 73 74 small { 75 font-size: 0.9em; 76 line-height: 2em; 189 grid-area: content; 190 min-width: 0; 191 } 192 193 #sidebar { 194 grid-area: sidebar; 195 min-width: 0; 196 } 197 198 .column { 199 padding: 20px 25px; 200 } 201 202 .sidebar-split { 203 display: grid; 204 grid-template-columns: 1fr 1fr; 205 gap: 0 18px; 206 } 207 208 /* Full width template: no right column, the post runs across the page */ 209 .qp-full-width .row { 210 grid-template-columns: 1fr; 211 grid-template-areas: "content"; 212 } 213 214 /* One split column alone takes the full width */ 215 .sidebar-split > .subcol:only-child { 216 grid-column: 1 / -1; 217 } 218 219 .subcol { 220 min-width: 0; 221 } 222 223 224 /* 4. Typography 225 ------------------------------------- */ 226 227 body { 228 font-family: var(--qp-font); 229 font-size: 0.825rem; /* about 13px: compact, like the original QuickPress */ 230 line-height: 1.5; 231 color: var(--qp-text); 232 background: var(--qp-page-bg); 77 233 } 78 234 … … 80 236 h2, 81 237 h3, 238 h4, 239 h5, 240 h6 { 241 font-family: var(--qp-heading-font); 242 font-weight: bold; 243 line-height: 1.25; 244 margin: 1.2em 0 0.4em; 245 } 246 247 /* Headings grow smoothly from phone to desktop */ 248 h1 { 249 font-size: clamp(1.55em, 1.3em + 1vw, 1.9em); 250 } 251 252 h2 { 253 font-size: clamp(1.35em, 1.2em + 0.7vw, 1.6em); 254 } 255 256 h3 { 257 font-size: clamp(1.15em, 1.08em + 0.35vw, 1.3em); 258 } 259 82 260 h4 { 83 font-weight: bold; 84 margin: 0; 85 } 86 87 #content h1 { 88 font-size: 1.9em; 89 text-align: left; 90 } 91 92 #header td { 93 font-size: 1em; 94 } 95 96 #header h1 { 97 font-size: 1em; 98 font-weight: bold; 99 margin: 0px 0; 100 padding: 0; 101 } 102 103 .blogtitle { 104 font-size: 2.5em !important; 105 text-align: left; 106 font-weight: bold; 107 margin: 10px 0 0 0; 108 padding: 0; 109 } 110 111 .description { 112 padding: 5px; 113 color: #ccc; 114 font-size: 1.1em; 115 text-align: left; 116 } 117 118 h2 { 119 font-size: 1.8em; 120 text-align: left; 121 } 122 123 h2.pagetitle { 124 font-size: 1.6em; 125 } 126 127 #sidebar h2 { 128 font-size: 1.2em; 129 } 130 131 h3 { 132 font-size: 1.3em; 133 } 134 135 #header h1, 261 font-size: 1.1em; 262 } 263 264 a { 265 color: var(--qp-link); 266 text-decoration: none; 267 } 268 269 a:hover { 270 color: var(--qp-accent-text); 271 text-decoration: underline; 272 } 273 136 274 h1 a, 275 h2 a, 276 h3 a { 277 color: var(--qp-text); 278 } 279 137 280 h1 a:hover, 138 h1 a:visited {139 text-decoration: none;140 color: white;141 }142 143 h1,144 h1 a,145 h1 a:hover,146 h1 a:visited {147 text-decoration: none;148 color: #333;149 }150 151 h2,152 h2 a,153 h2 a:visited,154 h3,155 h3 a,156 h3 a:visited {157 color: #333;158 }159 160 h2,161 h2 a,162 h2 a:hover,163 h2 a:visited,164 h3,165 h3 a,166 h3 a:hover,167 h3 a:visited,168 #sidebar h2,169 #sidebar h4,170 #wp-calendar caption,171 cite {172 text-decoration: none;173 }174 175 #sidebar h4 {176 font-size: 1.1em;177 }178 179 .commentlist li,180 #commentform input,181 #commentform textarea {182 }183 184 .commentlist li {185 font-weight: normal;186 }187 188 .commentlist li .avatar {189 float: left;190 padding: 0 12px 0 0;191 }192 193 .commentlist cite,194 .commentlist cite a {195 font-weight: bold;196 font-style: normal;197 font-size: 1.1em;198 }199 200 .commentlist p {201 font-weight: normal;202 line-height: 1.5em;203 text-transform: none;204 }205 206 #commentform p {207 }208 209 .commentmetadata {210 font-weight: normal;211 }212 213 small,214 #sidebar ul ul li,215 #sidebar ul ol li,216 .nocomments,217 .postmetadata,218 blockquote,219 strike {220 color: #777;221 }222 223 pre {224 font: 1em 'Courier New', Courier, Fixed;225 color: #666;226 background: #F8F8F8;227 padding: 5px;228 line-height: 1.5em;229 border: 1px solid #ddd;230 overflow-x: auto;231 /* Use horizontal scroller if needed; for Firefox 2, not needed in Firefox 3 */232 white-space: pre-wrap;233 /* css-3 */234 white-space: -moz-pre-wrap !important;235 /* Mozilla, since 1999 */236 white-space: -pre-wrap;237 /* Opera 4-6 */238 white-space: -o-pre-wrap;239 /* Opera 7 */240 /* width: 99%; */241 word-wrap: break-word;242 /* Internet Explorer 5.5+ */243 }244 245 code {246 font: 1.1em 'Courier New', Courier, Fixed;247 color: #008000;248 padding: 0 2px;249 background: #fff;250 line-height: 1.5em;251 overflow: auto;252 }253 254 acronym,255 abbr,256 span.caps {257 font-size: 0.9em;258 letter-spacing: .07em;259 }260 261 a,262 a:visited,263 281 h2 a:hover, 264 282 h3 a:hover { 265 color: #06C; 266 text-decoration: none; 267 } 268 269 a:hover { 270 color: #C32364; 283 color: var(--qp-link); 284 text-decoration: none; 285 } 286 287 small { 288 font-size: 0.85em; 289 } 290 291 blockquote { 292 margin: 1.5em 0; 293 padding: 0 0 0 20px; 294 border-left: 4px solid color-mix(in srgb, var(--qp-brand) 50%, var(--qp-bg)); 295 color: var(--qp-muted); 296 } 297 298 blockquote cite { 299 display: block; 300 margin-top: 5px; 301 font-size: 0.9em; 302 } 303 304 pre { 305 background: var(--qp-soft); 306 border: 1px solid var(--qp-border); 307 padding: 10px 12px; 308 line-height: 1.5; 309 overflow-x: auto; 310 white-space: pre-wrap; 311 word-wrap: break-word; 312 } 313 314 code { 315 background: var(--qp-soft); 316 padding: 1px 4px; 317 border-radius: 3px; 318 } 319 320 pre code { 321 background: none; 322 padding: 0; 323 } 324 325 abbr[title] { 326 cursor: help; 327 text-decoration: underline dotted; 328 } 329 330 hr { 331 border: 0; 332 border-top: 1px solid var(--qp-border); 333 margin: 2em 0; 334 } 335 336 dt { 337 font-weight: bold; 338 } 339 340 dd { 341 margin: 0 0 10px 20px; 342 } 343 344 .center { 345 text-align: center; 346 } 347 348 349 /* 5. Header and menu bar 350 ------------------------------------- */ 351 352 /* The coloured header band: site title on the left, search on the right */ 353 #header { 354 display: flex; 355 align-items: center; 356 justify-content: space-between; 357 gap: 15px 30px; 358 padding: 25px 30px; 359 background: var(--qp-band); 360 color: var(--qp-on-brand); 361 } 362 363 .site-branding { 364 min-width: 0; 365 } 366 367 /* The site title: bigger and heavier than any post heading, 368 with a short accent bar underneath so it reads as the name of the site */ 369 .site-title { 370 font-family: var(--qp-heading-font); 371 font-size: clamp(1.9em, 1.5em + 1.4vw, 2.5em); 372 font-weight: 800; 373 letter-spacing: -0.03em; 374 line-height: 1.1; 375 margin: 0; 376 overflow-wrap: anywhere; 377 } 378 379 .site-title::after { 380 content: ""; 381 display: block; 382 width: 42px; 383 height: 4px; 384 margin-top: 9px; 385 border-radius: 2px; 386 background: var(--qp-accent); 387 } 388 389 .site-title a, 390 .site-title a:hover { 391 color: var(--qp-on-brand); 392 text-decoration: none; 393 } 394 395 .site-title a:hover { 396 opacity: 0.85; 397 } 398 399 .custom-logo-link { 400 display: inline-block; 401 margin-bottom: 10px; 402 } 403 404 .custom-logo { 405 display: block; 406 max-height: 100px; 407 width: auto; 408 } 409 410 .description { 411 margin: 8px 0 0; 412 font-size: 1.05em; 413 line-height: 1.4; 414 color: color-mix(in srgb, var(--qp-on-brand) 80%, var(--qp-band)); 415 } 416 417 .header-search { 418 flex: 0 1 270px; 419 } 420 421 .header-search .search-form { 422 margin: 0; 423 } 424 425 /* The light menu bar under the header */ 426 .main-menu { 427 background: var(--qp-menu); 428 padding: 9px 30px; 429 border-bottom: 1px solid var(--qp-border); 430 } 431 432 .main-menu ul { 433 list-style: none; 434 margin: 0; 435 padding: 0; 436 display: flex; 437 flex-wrap: wrap; 438 gap: 4px 22px; 439 } 440 441 .main-menu a { 442 color: var(--qp-text); 443 font-weight: bold; 444 text-transform: uppercase; 445 letter-spacing: 0.02em; 446 } 447 448 .main-menu a:hover, 449 .main-menu .current-menu-item > a { 450 color: var(--qp-accent-text); 451 } 452 453 /* The page you are on: a short accent bar under its menu link, 454 the same mark as under the site title */ 455 .main-menu li { 456 position: relative; 457 } 458 459 .main-menu .current-menu-item > a::after { 460 content: ""; 461 position: absolute; 462 left: 0; 463 bottom: -6px; 464 width: 22px; 465 height: 3px; 466 border-radius: 2px; 467 background: var(--qp-accent); 468 } 469 470 471 /* 6. Posts and pages 472 ------------------------------------- */ 473 474 #content { 475 font-size: 1.1em; /* about 14.5px, like the original */ 476 } 477 478 #content main > :first-child, 479 .entry-title, 480 .page-title { 481 margin-top: 0; 482 } 483 484 /* Space between posts (not comments, which are also <article>s) */ 485 #content main > article { 486 margin: 0 0 30px; 487 } 488 489 .page-header { 490 margin-bottom: 20px; 491 } 492 493 .archive-description { 494 color: var(--qp-muted); 495 } 496 497 .entry-title { 498 margin-bottom: 2px; 499 } 500 501 /* Post titles in lists: as large as the original QuickPress (1.8em, about 26px) */ 502 #content main > article > h2.entry-title { 503 font-size: clamp(1.4em, 1.2em + 0.9vw, 1.8em); 504 } 505 506 .post-meta { 507 margin: 0 0 6px; 508 line-height: 1.4; 509 font-size: 0.85em; 510 color: var(--qp-muted); 511 } 512 513 .entry { 514 border-top: 1px solid var(--qp-border); 515 line-height: 1.6; 516 display: flow-root; /* keeps floated images inside the post */ 271 517 } 272 518 273 519 .entry a { 274 text-decoration: none; 520 text-decoration: underline; 521 text-underline-offset: 2px; 275 522 } 276 523 277 524 .entry a:hover { 278 text-decoration: underline; 279 } 280 281 #sidebar a { 282 text-decoration: none; 283 } 284 285 #sidebar a:hover { 286 text-decoration: underline; 287 } 288 289 .sticky {} 290 291 292 /* Begin Structure 293 ------------------------------------- */ 294 295 body { 296 margin: 0 0; 297 padding: 0 0 0 0; 298 } 299 300 #page { 301 background-color: white; 302 margin: 0px auto 0; 303 padding: 0; 304 width: 1000px; 305 } 306 307 #header { 308 padding: 25px 30px; 309 } 310 311 #header a { 312 color: #f3f3f3; 313 text-decoration: none; 314 } 315 316 #header a:hover { 317 color: #ccc; 318 } 319 320 #adsbar { 321 font-family: Arial, Helvetica, Sans-Serif; 322 font-size: 1.0em; 323 background: #D1E5EE; 324 font-weight: bold; 325 line-height: 1.9em; 326 color: #333; 327 margin: 0 0 10px 0; 328 border-bottom: 1px solid #DDD; 329 padding: 10px 0px 10px 30px; 330 text-align: left; 331 } 332 333 #adsbar a { 334 text-transform: uppercase; 335 text-decoration: underline; 336 margin-right: 5px; 337 border: 0px solid #DDD; 338 padding: 5px; 339 color: #333; 340 } 341 342 #adsbar a:hover { 343 text-decoration: none; 344 } 345 346 .post { 347 margin: 10px 0; 348 text-align: left; 349 background: #ffffff; 350 padding: 0; 351 } 352 353 .post hr { 354 display: block; 355 } 356 357 .entry { 358 border-top: 1px solid #ddd; 359 overflow: hidden; 360 } 361 362 .entry p {} 363 364 .column .postmetadata { 365 padding-top: 5px; 366 } 367 525 text-decoration-thickness: 2px; 526 } 527 528 .entry > :first-child { 529 margin-top: 10px; 530 } 531 532 .read-more, 533 .more-link { 534 white-space: nowrap; 535 } 536 537 .sticky { 538 border-left: 3px solid var(--qp-accent); 539 padding-left: 15px; 540 } 541 542 .post-tags { 543 font-size: 0.9em; 544 color: var(--qp-muted); 545 } 546 547 .page-links { 548 margin: 1.5em 0; 549 } 550 551 .page-links > span, 552 .page-links > a { 553 margin-right: 5px; 554 } 555 556 557 /* 7. Images and block content 558 ------------------------------------- */ 559 560 .alignleft { 561 float: left; 562 margin: 5px 20px 10px 0; 563 } 564 565 .alignright { 566 float: right; 567 margin: 5px 0 10px 20px; 568 } 569 570 .aligncenter { 571 display: block; 572 margin-left: auto; 573 margin-right: auto; 574 text-align: center; 575 } 576 577 .alignwide, 578 .alignfull { 579 max-width: 100%; 580 } 581 582 .post-thumb img { 583 display: block; 584 } 585 586 .post-image { 587 margin: 15px 0; 588 } 589 590 .post-image img { 591 display: block; 592 } 593 594 figure { 595 margin: 1.5em 0; 596 } 597 598 .wp-caption { 599 max-width: 100%; 600 } 601 602 .wp-caption-text, 603 .gallery-caption, 604 figcaption { 605 font-size: 0.85em; 606 color: var(--qp-muted); 607 text-align: center; 608 margin-top: 5px; 609 } 610 611 .gallery { 612 display: grid; 613 grid-template-columns: repeat(3, 1fr); 614 gap: 10px; 615 margin: 1.5em 0; 616 } 617 618 .gallery-columns-1 { grid-template-columns: 1fr; } 619 .gallery-columns-2 { grid-template-columns: repeat(2, 1fr); } 620 .gallery-columns-4 { grid-template-columns: repeat(4, 1fr); } 621 .gallery-columns-5 { grid-template-columns: repeat(5, 1fr); } 622 623 .gallery-item { 624 margin: 0; 625 text-align: center; 626 } 627 628 .entry table, 629 .wp-block-table table { 630 width: 100%; 631 margin: 1.5em 0; 632 } 633 634 .entry th, 368 635 .entry td { 369 padding: 5px; 370 border: 1px solid #DDD; 371 } 372 373 .postmetadata { 374 clear: left; 375 } 636 padding: 6px 8px; 637 border: 1px solid var(--qp-border); 638 text-align: left; 639 } 640 641 .entry th { 642 background: var(--qp-soft); 643 } 644 645 .wp-block-button__link, 646 .wp-element-button { 647 background: var(--qp-accent); 648 color: var(--qp-on-accent); 649 border-radius: 6px; 650 text-decoration: none; 651 } 652 653 .entry .wp-block-button__link { 654 text-decoration: none; 655 } 656 657 .wp-block-pullquote { 658 border-top: 3px solid var(--qp-accent); 659 border-bottom: 3px solid var(--qp-accent); 660 } 661 662 .wp-block-pullquote blockquote { 663 border: 0; 664 padding: 0; 665 } 666 667 /* Query Loop and post blocks inside a post: a compact list in a light box, 668 so the listed posts don't look like the page's own post titles */ 669 .entry .wp-block-query { 670 margin: 1.5em 0; 671 padding: 12px 16px; 672 border: 1px solid var(--qp-border); 673 border-radius: 6px; 674 } 675 676 .entry .wp-block-post-template { 677 list-style: none; 678 margin: 0; 679 padding: 0; 680 } 681 682 .entry .wp-block-post-template > li { 683 margin: 0 0 12px; 684 } 685 686 .entry .wp-block-query .wp-block-post-title { 687 font-size: 1.1em; 688 margin: 0 0 2px; 689 } 690 691 .entry .wp-block-post-date { 692 font-size: 0.85em; 693 color: var(--qp-muted); 694 } 695 696 .entry .wp-block-query-pagination { 697 margin-top: 10px; 698 gap: 6px; 699 } 700 701 .entry .wp-block-query-pagination a { 702 text-decoration: none; 703 } 704 705 /* Block styles from the editor's Styles panel */ 706 .is-style-qp-accent, 707 .wp-block-quote.is-style-qp-accent { 708 margin: 1.5em 0; 709 padding: 2px 0 2px 16px; 710 border-left: 4px solid var(--qp-accent); 711 color: var(--qp-text); 712 font-size: 1.1em; 713 } 714 715 .is-style-qp-soft-box { 716 margin: 1.5em 0; 717 padding: 14px 18px; 718 background: var(--qp-soft); 719 border-left: 3px solid var(--qp-accent); 720 border-radius: 0 6px 6px 0; 721 } 722 723 .is-style-qp-soft-box > :first-child { 724 margin-top: 0; 725 } 726 727 .is-style-qp-soft-box > :last-child { 728 margin-bottom: 0; 729 } 730 731 /* Blocks with their own background colour: keep text off the edges */ 732 .entry :is(p, h2, h3, h4, .wp-block-group, .wp-block-column, .wp-block-columns).has-background { 733 padding: 1em 1.25em; 734 border-radius: 6px; 735 } 736 737 738 /* 8. Sidebar 739 ------------------------------------- */ 740 741 #sidebar { 742 line-height: 1.45; 743 } 744 745 .widget { 746 margin: 0 0 22px; 747 } 748 749 /* Widget headings, sidebar and footer alike: capitals in the accent colour 750 over a thin line, the QuickPress look since the first version */ 751 .widget-title, 752 #sidebar h2, 753 .footer-widgets h2 { 754 display: block; 755 font-size: 1.05em; 756 text-transform: uppercase; 757 letter-spacing: 0.03em; 758 color: var(--qp-accent-text); 759 margin: 0 0 6px; 760 padding-bottom: 3px; 761 border-bottom: 1px solid var(--qp-accent); 762 } 763 764 #sidebar ul, 765 #sidebar ol { 766 list-style: none; 767 margin: 0; 768 padding: 0; 769 } 770 771 /* Sidebar lists: one line per item with a light rule between */ 772 #sidebar li { 773 padding: 3px 0; 774 border-bottom: 1px solid var(--qp-line); 775 } 776 777 #sidebar li li:last-child { 778 border-bottom: 0; 779 } 780 781 /* "12 more" at the end of a long list (sidebar and footer): opens in place, no JavaScript */ 782 .qp-more summary { 783 cursor: pointer; 784 color: var(--qp-link); 785 font-weight: 600; 786 list-style-position: inside; 787 } 788 789 .qp-more summary::marker { 790 color: var(--qp-accent); 791 } 792 793 .qp-more details[open] summary { 794 margin-bottom: 3px; 795 } 796 797 /* The opened items line up with the first ten (sub-items keep their indent) */ 798 #sidebar .qp-more > details > ul, 799 .footer-widgets .qp-more > details > ul { 800 margin: 0; 801 } 802 803 /* The "more" line has no rule of its own; the opened items keep theirs */ 804 #sidebar li.qp-more { 805 border-bottom: 0; 806 } 807 808 #sidebar .qp-more li:last-child { 809 border-bottom: 0; 810 } 811 812 /* Block widgets (the default in Appearance > Widgets) */ 813 814 #sidebar .wp-block-group__inner-container > * { 815 margin-top: 0; 816 } 817 818 #sidebar .wp-block-search__label { 819 display: block; 820 font-weight: bold; 821 margin: 0 0 6px; 822 } 823 824 #sidebar .wp-block-latest-comments { 825 font-size: inherit; 826 padding: 0; 827 } 828 829 #sidebar .wp-block-latest-comments__comment { 830 margin: 0; 831 line-height: 1.4; 832 } 833 834 #sidebar .wp-block-latest-comments__comment-meta { 835 font-size: 1em; 836 } 837 838 #sidebar .wp-block-latest-posts__post-date { 839 font-size: 0.9em; 840 color: var(--qp-muted); 841 } 842 843 #sidebar ul ul { 844 margin: 3px 0 0 12px; 845 } 846 847 #sidebar select { 848 max-width: 100%; 849 } 850 851 852 /* Below Posts widgets: a soft box under the post */ 853 854 .after-post { 855 margin: 25px 0; 856 padding: 14px 18px; 857 background: var(--qp-soft); 858 border-left: 3px solid var(--qp-accent); 859 border-radius: 0 6px 6px 0; 860 } 861 862 .after-post .widget { 863 margin: 0 0 14px; 864 } 865 866 .after-post .widget:last-child { 867 margin-bottom: 0; 868 } 869 870 /* Below Posts headings stay plain: the box already has an accent edge */ 871 .after-post h2, 872 .after-post .widget-title { 873 display: block; 874 font-size: 1.15em; 875 text-transform: none; 876 letter-spacing: 0; 877 color: var(--qp-text); 878 margin: 0 0 6px; 879 padding-bottom: 0; 880 border-bottom: 0; 881 } 882 883 884 /* 9. Comments and forms 885 ------------------------------------- */ 886 887 /* Text fields: same height as the buttons, soft accent ring when typing */ 888 input[type="text"], 889 input[type="email"], 890 input[type="url"], 891 input[type="password"], 892 input[type="search"], 893 input[type="number"], 894 input[type="tel"], 895 select, 896 textarea, 897 .wp-block-search__input { 898 max-width: 100%; 899 padding: 8px 11px; 900 line-height: 1.4; 901 border: 1px solid var(--qp-field-border); 902 border-radius: 6px; 903 background: var(--qp-field); 904 color: var(--qp-text); 905 } 906 907 input:focus, 908 select:focus, 909 textarea:focus { 910 outline: none; 911 border-color: var(--qp-accent); 912 box-shadow: 0 0 0 3px color-mix(in srgb, var(--qp-accent) 20%, transparent); 913 } 914 915 textarea { 916 width: 100%; 917 } 918 919 /* Buttons: accent colour, a touch darker on hover */ 920 button, 921 input[type="submit"], 922 .search-submit, 923 .wp-block-search__button { 924 cursor: pointer; 925 background: var(--qp-accent); 926 color: var(--qp-on-accent); 927 border: 1px solid var(--qp-accent); 928 border-radius: 6px; 929 padding: 8px 16px; 930 line-height: 1.4; 931 font-weight: 600; 932 } 933 934 button:hover, 935 input[type="submit"]:hover, 936 .wp-block-search__button:hover { 937 filter: brightness(0.9); 938 } 939 940 /* Search: box and button side by side, same height */ 941 .search-form, 942 .wp-block-search__inside-wrapper { 943 display: flex; 944 align-items: stretch; 945 gap: 6px; 946 } 947 948 .search-form { 949 margin: 15px 0; 950 } 951 952 .search-form label, 953 .wp-block-search__input { 954 flex: 1; 955 min-width: 0; 956 } 957 958 .search-field { 959 width: 100%; 960 } 961 962 .wp-block-search__button { 963 margin: 0; 964 } 965 966 .comments { 967 clear: both; 968 margin-top: 40px; 969 } 970 971 .comments-title { 972 font-size: 1.3em; 973 margin-bottom: 10px; 974 } 975 976 .commentlist, 977 .commentlist .children { 978 list-style: none; 979 margin: 0; 980 padding: 0; 981 } 982 983 .commentlist .children { 984 margin: 6px 0 0 14px; 985 border-left: 1px solid var(--qp-border); 986 padding-left: 10px; 987 } 988 989 /* Each comment: a compact box, 6px apart */ 990 .commentlist .comment-body { 991 border: 1px solid var(--qp-border); 992 border-radius: 6px; 993 padding: 8px 12px; 994 margin: 0 0 6px; 995 } 996 997 .comment-content p { 998 margin: 0 0 6px; 999 } 1000 1001 .comment-content p:last-child { 1002 margin-bottom: 0; 1003 } 1004 1005 .commentlist > .comment:nth-child(even) > .comment-body { 1006 background: var(--qp-alt); 1007 } 1008 1009 .commentlist .bypostauthor > .comment-body { 1010 background: var(--qp-author); 1011 } 1012 1013 .comment-author .avatar { 1014 float: left; 1015 margin: 0 8px 0 0; 1016 border-radius: 50%; 1017 } 1018 1019 .comment-author .fn { 1020 font-style: normal; 1021 font-weight: bold; 1022 } 1023 1024 .comment-meta { 1025 display: flow-root; /* holds the small avatar */ 1026 font-size: 0.8em; 1027 line-height: 1.35; 1028 margin-bottom: 4px; 1029 } 1030 1031 .comment-meta a { 1032 color: var(--qp-muted); 1033 } 1034 1035 .reply { 1036 margin-top: 3px; 1037 font-size: 0.85em; 1038 } 1039 1040 .comment-respond { 1041 margin: 24px 0 20px; 1042 } 1043 1044 .comment-form label { 1045 display: block; 1046 margin-bottom: 3px; 1047 font-size: 0.9em; 1048 font-weight: 600; 1049 } 1050 1051 .comment-form p { 1052 margin: 0 0 14px; 1053 } 1054 1055 .comment-form-cookies-consent label { 1056 display: inline; 1057 } 1058 1059 .comment-form input[type="text"], 1060 .comment-form input[type="email"], 1061 .comment-form input[type="url"] { 1062 width: 100%; 1063 max-width: 420px; 1064 } 1065 1066 .no-comments { 1067 color: var(--qp-muted); 1068 } 1069 1070 1071 /* 10. Navigation 1072 ------------------------------------- */ 1073 1074 .navigation { 1075 display: flow-root; 1076 margin: 20px 0; 1077 } 1078 1079 .post-nav .alignleft, 1080 .post-nav .alignright, 1081 .image-nav .alignleft, 1082 .image-nav .alignright { 1083 margin: 0; 1084 max-width: 48%; 1085 } 1086 1087 .pagination .nav-links, 1088 .comment-navigation .nav-links { 1089 display: flex; 1090 flex-wrap: wrap; 1091 gap: 6px; 1092 align-items: center; 1093 } 1094 1095 .comment-navigation .nav-next { 1096 margin-left: auto; 1097 } 1098 1099 /* Page numbers: outlined boxes; the current page is filled in */ 1100 .page-numbers { 1101 display: inline-block; 1102 min-width: 2.4em; 1103 padding: 5px 11px; 1104 line-height: 1.4; 1105 text-align: center; 1106 border: 1px solid var(--qp-border); 1107 border-radius: 6px; 1108 color: var(--qp-link); 1109 } 1110 1111 a.page-numbers:hover { 1112 text-decoration: none; 1113 background: var(--qp-accent); 1114 border-color: var(--qp-accent); 1115 color: var(--qp-on-accent); 1116 } 1117 1118 .page-numbers.current { 1119 background: var(--qp-accent); 1120 border-color: var(--qp-accent); 1121 color: var(--qp-on-accent); 1122 font-weight: bold; 1123 } 1124 1125 .page-numbers.dots { 1126 min-width: 0; 1127 padding-left: 2px; 1128 padding-right: 2px; 1129 border-color: transparent; 1130 color: var(--qp-muted); 1131 } 1132 1133 1134 /* 11. Footer 1135 ------------------------------------- */ 376 1136 377 1137 #footer { 378 color: #FFF; 379 padding: 15px 0 20px; 380 font-size: 1em; 381 clear: both; 382 margin-top:20px; 383 } 384 385 #footer p { 386 margin: 0; 387 padding: 5px 0; 388 text-align: center; 389 } 390 391 #footer a { 392 color: #FFF; 393 text-decoration: none; 394 border-bottom: 1px solid #999; 395 } 396 397 #footer a:hover { 398 color: #CCC; 399 border-bottom: 0px dotted #CCC; 400 } 401 402 403 /* Begin Headers 404 ------------------------------------- */ 405 406 #content h1 { 407 margin: 0; 408 } 409 410 h2 { 411 } 412 413 h2.pagetitle, 414 h2.pagetitle { 415 text-align: center; 416 } 417 418 #sidebar h2 { 419 padding: 0; 420 } 421 422 #sidebar h4 { 423 color: #C32364; 424 border-bottom: 1px solid #C32364; 425 text-transform: uppercase; 426 margin-top: 20px; 427 } 428 429 h3 { 430 padding: 0; 431 margin: 30px 0 0; 432 } 433 434 h3.comments { 435 padding: 0; 436 margin: 40px auto 20px; 437 } 438 439 440 /* Begin Menu Headers 441 ------------------------------------- */ 442 443 #menu-header { 444 clear: both; 445 line-height: 1.5em; 446 font-weight: bold; 447 margin: 0 auto 15px; 448 overflow: hidden; 449 padding: 0 20px; 450 text-transform: uppercase; 451 color: #333; 452 background: #D1E5EE; 453 } 454 455 #menu-header ul { 456 float: left; 457 width: 100%; 458 padding: 0 10px; 459 } 460 461 #menu-header li { 462 float: left; 463 list-style-type: none; 464 display: block; 465 margin-right: 20px; 466 position: relative; 467 padding: 0; 468 } 469 470 #menu-header a { 471 color: #333; 472 text-decoration: none; 473 } 474 475 #menu-header a:hover { 476 color: #C32364; 477 text-decoration: underline; 478 } 479 480 481 /* Begin Images 482 ------------------------------------- */ 483 484 p img { 485 padding: 0; 486 max-width: 100%; 487 } 488 489 .entry img { 490 padding: 5px; 491 height: auto; 492 } 493 494 .rssicon { 495 vertical-align: middle; 496 border: 0; 497 padding-right: 5px; 498 } 499 500 img.centered { 501 display: block; 502 margin-left: auto; 503 margin-right: auto; 504 } 505 506 img.alignright { 507 padding-left: 10px; 508 display: inline; 509 } 510 511 img.alignleft { 512 padding-right: 10px; 513 display: inline; 514 } 515 516 .thumb { 517 float: left !important; 518 margin: 10px 5px 0 0; 519 } 520 521 .alignright { 522 float: right; 523 } 524 525 .alignleft { 526 float: left 527 } 528 529 530 /* Begin Lists 531 ------------------------------------- */ 532 533 .entry ol { 534 padding: 0 0 0 35px; 535 margin: 0; 536 } 537 538 .entry ol li { 539 margin: 0; 540 padding: 0; 541 } 542 543 .postmetadata ul, 544 .postmetadata li { 545 display: inline; 546 list-style-type: none; 547 list-style-image: none; 548 } 549 550 #sidebar ul, 551 #sidebar ul ol { 552 margin: 0; 553 padding: 0; 554 } 555 556 #sidebar ul li { 557 list-style-type: none; 558 list-style-image: none; 559 margin-bottom: 15px; 560 } 561 562 #sidebar ul p, 563 #sidebar ul select { 564 margin: 5px 0 8px; 565 } 566 567 #sidebar ul ul, 568 #sidebar ul ol { 569 margin: 5px 0 0 10px; 570 } 571 572 #sidebar ul ul ul, 573 #sidebar ul ol { 574 margin: 0 0 0 10px; 575 } 576 577 ol li, 578 #sidebar ul ol li { 579 list-style: decimal outside; 580 } 581 582 #sidebar ul ul li, 583 #sidebar ul ol li { 584 margin: 3px 0 0; 585 padding: 3px 0; 586 border-bottom: 1px solid #eee; 587 } 588 589 590 /* Begin Form Elements 591 ------------------------------------- */ 592 593 .header-search { 594 float: right; 595 596 } 597 .header-search-mobile { 598 display:none; 599 } 600 601 602 input { 603 border-radius: 5px; 604 } 605 606 #searchform {} 607 608 .search-field { 609 border: 1px solid #999; 610 padding: 7px; 611 margin: 15px 0; 612 min-width: 200px; 613 max-width: 90%; 614 } 615 616 .search-submit { 617 cursor: pointer; 618 background: #C32364; 619 border: 1px solid #C32364; 620 color: #fff; 621 font-weight: bold; 622 padding: 7px; 623 text-transform: uppercase; 624 } 625 626 #searchsubmit:hover { 627 background: #ac2925; 628 } 629 1138 margin: 20px 0 0; 1139 font-size: 0.95em; 1140 } 1141 1142 /* Footer widgets: up to three columns on a very light tint of the header 1143 colour, so they read as part of the footer. The box is only printed 1144 when a footer area has widgets, so with none the tint disappears too. */ 1145 .footer-widgets { 1146 display: grid; 1147 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); 1148 gap: 20px 30px; 1149 padding: 22px 25px 25px; 1150 background: var(--qp-footer-tint); 1151 line-height: 1.45; 1152 } 1153 1154 .footer-widgets .widget { 1155 margin: 0 0 18px; 1156 } 1157 1158 .footer-widgets .widget:last-child { 1159 margin-bottom: 0; 1160 } 1161 1162 .footer-widgets ul, 1163 .footer-widgets ol { 1164 list-style: none; 1165 margin: 0; 1166 padding: 0; 1167 } 1168 1169 .footer-widgets li { 1170 margin: 0 0 4px; 1171 } 1172 1173 .footer-widgets ul ul { 1174 margin: 4px 0 0 12px; 1175 } 1176 1177 .footer-widgets p { 1178 margin: 0 0 8px; 1179 } 1180 1181 .footer-widgets .wp-block-latest-comments { 1182 font-size: inherit; 1183 padding: 0; 1184 } 1185 1186 /* The dark band at the bottom, in the header's colour */ 1187 .site-info { 1188 padding: 15px 20px 20px; 1189 background: var(--qp-footer); 1190 color: var(--qp-on-brand); 1191 text-align: center; 1192 } 1193 1194 .site-info p { 1195 margin: 3px 0; 1196 } 1197 1198 .site-info a { 1199 color: var(--qp-on-brand); 1200 text-decoration: underline; 1201 text-decoration-color: color-mix(in srgb, var(--qp-on-brand) 45%, transparent); 1202 text-underline-offset: 3px; 1203 } 1204 1205 .site-info a:hover { 1206 text-decoration-color: var(--qp-on-brand); 1207 } 1208 1209 .footer-menu ul { 1210 list-style: none; 1211 margin: 0 0 10px; 1212 padding: 0; 1213 display: flex; 1214 flex-wrap: wrap; 1215 justify-content: center; 1216 gap: 5px 18px; 1217 } 1218 1219 /* Social links in the footer menu show as small white icons */ 1220 .footer-menu .qp-social a { 1221 display: inline-flex; 1222 padding: 4px; 1223 border-radius: 6px; 1224 text-decoration: none; 1225 } 1226 1227 .footer-menu .qp-social a:hover { 1228 background: color-mix(in srgb, var(--qp-on-brand) 15%, transparent); 1229 } 1230 1231 .qp-icon { 1232 display: block; 1233 width: 20px; 1234 height: 20px; 1235 fill: currentColor; 1236 } 1237 1238 .credits { 1239 opacity: 0.8; 1240 } 1241 1242 1243 /* 12. Accessibility 1244 ------------------------------------- */ 1245 1246 /* Hidden on screen but read aloud by screen readers */ 630 1247 .screen-reader-text { 631 display: none; 632 } 633 634 select { 635 width: 130px; 636 } 637 638 .formbutton { 639 cursor: pointer; 640 } 641 642 #commentform input { 643 width: 170px; 644 padding: 5px; 645 margin: 5px 5px 1px 0; 646 border: 1px solid #DDD; 647 } 648 649 #commentform textarea { 650 width: 90%; 651 padding: 5px; 652 border: 1px solid #DDD; 653 } 654 655 #respond:after { 656 content: "."; 657 display: block; 658 height: 0; 659 clear: both; 660 visibility: hidden; 661 } 662 663 #commentform #submit { 664 background: #3276b1; 665 padding: 10px; 666 color: #fff; 667 margin: 0; 668 border: 0px; 669 font-size: 0.9em; 670 text-transform: uppercase; 671 border-radius: 8px; 672 -moz-border-radius: 8px; 673 } 674 675 #commentform #submit:hover { 676 background: #C32364; 677 } 678 679 680 /* Begin Comments 681 ------------------------------------- */ 682 .comments { 683 clear: both; 684 } 685 686 .alt { 687 margin: 0; 688 padding: 10px; 689 } 690 691 .commentlist { 692 padding: 0; 693 margin: 0; 694 text-align: justify; 695 } 696 697 .commentlist li { 698 margin: 15px 0 10px; 699 padding: 5px 5px 10px 10px; 700 list-style: none; 701 } 702 703 .commentlist li ul li { 704 margin-right: -5px; 705 margin-left: 10px; 706 } 707 708 .commentlist p { 709 margin: 10px 5px 10px 0; 710 } 711 712 #commentform p { 713 margin: 5px 0; 714 } 715 716 .nocomments { 717 text-align: center; 718 margin: 0; 719 padding: 0; 720 display: none; 721 } 722 723 .commentmetadata { 724 margin: 0; 725 font-size: 0.9em; 726 display: block; 727 } 728 729 img.avatar { 730 float: left; 731 margin: 0; 732 padding: 0 4px 0 0; 733 vertical-align: middle; 734 } 735 736 #respond { 737 margin-bottom: 20px; 738 } 739 740 #reply-title a { 741 color: #06c !important; 742 } 743 744 .bypostauthor { 745 background: #F5FAFA !important; 746 } 747 748 ol.commentlist li div.comment-meta { 749 font-size: 9px; 750 margin-bottom: 10px; 751 } 752 753 ol.commentlist li div.comment-meta a { 754 color: #999 !important; 755 } 756 757 ol.commentlist li div.comment-meta a:hover { 758 color: #06c !important; 759 text-decoration: underline; 760 } 761 762 ol.commentlist li p { 763 font-size: 1em; 764 margin: 0 0 1em; 765 } 766 767 ol.commentlist li ul { 768 font-size: 1em; 769 margin: 0; 770 } 771 772 ol.commentlist li ul li { 773 font-size: 1em; 774 list-style: square; 775 margin: 0; 776 } 777 778 ol.commentlist li ol li { 779 font-size: 1em; 780 margin: 0; 781 list-style: upper-roman; 782 } 783 784 ol.commentlist li div.reply { 785 font-size: 1em; 786 } 787 788 ol.commentlist li div.reply a { 789 text-decoration: none; 790 padding: 5px; 791 } 792 793 ol.commentlist li ul.children { 794 list-style: none; 795 margin: 1em 0 0; 796 text-indent: 0; 797 } 798 799 ol.commentlist { 800 list-style: none; 801 margin: 0 0 1em; 802 padding: 0; 803 text-indent: 0; 804 } 805 806 ol.commentlist li.comment { 807 padding: 1em; 808 border-radius: 8px; 809 -moz-border-radius: 8px; 810 } 811 812 ol.commentlist li.even { 813 background: #fff; 814 } 815 816 ol.commentlist li.odd { 817 background: #f9f9f9; 818 } 819 820 ol.commentlist li ul.children li.depth-2 { 821 list-style: none; 822 border-left: 1px solid #ccc; 823 margin: 0 0 .25em .25em; 824 } 825 826 ol.commentlist li ul.children li.depth-3 { 827 list-style: none; 828 border-left: 1px solid #ccc; 829 margin: 0 0 .25em .25em; 830 } 831 832 ol.commentlist li ul.children li.depth-4 { 833 list-style: none; 834 border-left: 1px solid #ccc; 835 margin: 0 0 .25em .25em; 836 } 837 838 ol.commentlist li ul.children li.depth-5 { 839 list-style: none; 840 border-left: 1px solid #ccc; 841 margin: 0 0 .25em .25em; 842 } 843 844 .commentlist table td { 845 background: #FFF; 846 border: 1px solid #CCC; 847 padding: 10px; 848 } 849 850 dl, 851 dt, 852 dd { 853 list-style: none; 854 padding: 0; 855 margin: 0 ; 856 outline: 0; 857 vertical-align: baseline; 858 } 859 860 dt { 861 font-weight: bold; 862 padding-top: 5px; 863 } 864 865 dd { 866 padding-bottom: 15px; 867 } 868 869 870 /* Begin Sidebar 871 ------------------------------------- */ 872 873 #xxxsidebar { 874 padding: 10px 40px 10px 0; 875 float: right; 876 width: 360px; 877 background: #fff; 878 font-size: 1.2em; 879 line-height: 1.6em; 880 overflow: hidden; 881 } 882 883 #adbox { 884 padding: 5px; 885 margin: 0 0; 886 background: #ffffff; 887 overflow: hidden; 888 } 889 890 #sidebar_low { 891 clear: both; 892 } 893 894 #xxxl_sidebar { 895 width: 170px; 896 float: left; 897 margin: 0 0 10px 0; 898 padding: 10px; 899 background: #fff; 900 overflow: hidden; 901 } 902 903 #xxxr_sidebar { 904 width: 140px; 905 float: right; 906 padding: 10px; 907 margin: 0 0 10px 0; 908 background: #fff; 909 overflow: hidden; 910 } 911 912 #sidebar form { 913 margin: 0; 914 } 915 916 .emptybox { 917 border: 2px solid #CCC; 918 background-color: #fff; 919 padding: 5px; 920 text-align: center; 921 text-transform: uppercase; 922 } 923 924 /* Begin Tags & Classes 925 ------------------------------------- */ 926 927 acronym, 928 abbr, 929 span.caps { 930 cursor: help; 931 } 932 933 acronym, 934 abbr { 935 border-bottom: 1px dashed #999; 936 } 937 938 blockquote { 939 margin: 15px 30px 0 10px; 940 padding-left: 20px; 941 border-left: 5px solid #85B8E3; 942 } 943 944 blockquote cite { 945 margin: 5px 0 0; 946 display: block; 947 } 948 949 .center { 950 text-align: center; 951 } 952 953 .hidden { 954 display: none; 955 } 956 957 hr { 958 display: none; 959 } 960 961 a img { 962 border: none; 963 } 964 965 .navigation { 966 display: block; 967 text-align: center; 968 margin-top: 10px; 969 margin-bottom: 20px; 970 font-weight: bold; 971 font-size: 1em; 972 } 973 974 .mainnav a { 975 background: #C32364; 976 color: #FFF !important; 977 padding: 10px; 978 border-radius: 8px; 979 -moz-border-radius: 8px; 980 } 981 982 .mainnav a:hover { 983 background: #AC2925; 984 } 985 986 987 /* Captions 988 ------------------------------------- */ 989 990 .aligncenter, 991 div.aligncenter { 992 display: block; 993 margin-left: auto; 994 margin-right: auto; 995 } 996 997 .wp-caption { 998 text-align: center; 999 padding-top: 4px; 1000 margin: 10px; 1001 -moz-border-radius: 3px; 1002 -khtml-border-radius: 3px; 1003 -webkit-border-radius: 3px; 1004 border-radius: 3px; 1005 max-width: 100%; 1006 } 1007 1008 .wp-caption img { 1009 margin: 0; 1010 padding: 5px; 1011 border: 0 none; 1012 } 1013 1014 .wp-caption p.wp-caption-text { 1015 font-size: 11px; 1016 line-height: 17px; 1017 padding: 0 4px 5px; 1018 margin: 0; 1019 } 1020 1021 #content .gallery { 1022 margin: 0 auto 18px; 1023 } 1024 1025 #content .gallery .gallery-item { 1026 float: left; 1027 margin-top: 5px; 1028 text-align: center; 1029 width: 33%; 1030 } 1031 1032 #content .gallery img { 1033 border: 0px solid #cfcfcf; 1034 } 1035 1036 #content .gallery .gallery-caption { 1037 color: #888; 1038 font-size: 11px; 1039 margin: 0 0 12px; 1040 } 1041 1042 #content .gallery dl { 1043 margin: 0; 1044 } 1045 1046 #content .gallery img { 1047 border: 0px solid #f1f1f1; 1048 } 1049 1050 #content .gallery br+br { 1051 display: none; 1052 } 1053 1054 #content .attachment img { 1055 /* single attachment images should be centered */ 1056 display: block; 1057 margin: 0 auto; 1058 } 1059 1060 1061 /* Responsive Design 1062 ------------------------------------- */ 1063 1064 @media screen and (max-width: 800px) { 1065 body { 1066 background: #FFF; 1067 } 1068 body.custom-background { 1069 background-color: #FFF !important; 1070 } 1071 #page { 1072 width: 100%; 1073 border: 0; 1074 } 1075 #menu-header { 1076 margin: 0; 1077 } 1078 } 1079 1080 @media screen and (max-width: 600px) { 1081 .header-search { 1082 display:none; 1083 } 1084 .header-search-mobile { 1085 float: none; 1086 display:block; 1087 margin: 5px 0; 1088 } 1089 } 1248 border: 0; 1249 clip: rect(1px, 1px, 1px, 1px); 1250 clip-path: inset(50%); 1251 height: 1px; 1252 width: 1px; 1253 margin: -1px; 1254 overflow: hidden; 1255 padding: 0; 1256 position: absolute !important; 1257 word-wrap: normal !important; 1258 } 1259 1260 /* The Skip to content link appears when reached with the Tab key */ 1261 .skip-link:focus { 1262 clip: auto; 1263 clip-path: none; 1264 height: auto; 1265 width: auto; 1266 margin: 0; 1267 top: 10px; 1268 left: 10px; 1269 z-index: 100000; 1270 padding: 10px 15px; 1271 background: var(--qp-bg); 1272 color: var(--qp-link); 1273 font-weight: bold; 1274 box-shadow: 0 0 4px rgba(0, 0, 0, 0.3); 1275 } 1276 1277 a:focus-visible, 1278 button:focus-visible { 1279 outline: 2px solid var(--qp-accent); 1280 outline-offset: 2px; 1281 } 1282 1283 1284 /* 13. Phones and tablets 1285 ------------------------------------- */ 1286 1287 @media (max-width: 820px) { 1288 1289 .row { 1290 grid-template-columns: 1fr; 1291 grid-template-areas: 1292 "content" 1293 "sidebar"; 1294 } 1295 1296 /* Title on top, search under it */ 1297 #header { 1298 flex-direction: column; 1299 align-items: stretch; 1300 padding: 18px 16px; 1301 } 1302 1303 .header-search { 1304 flex: none; 1305 } 1306 1307 .main-menu { 1308 padding: 8px 16px; 1309 } 1310 1311 .main-menu ul { 1312 gap: 4px 16px; 1313 } 1314 1315 .column { 1316 padding: 20px 16px; 1317 } 1318 1319 #sidebar { 1320 border-top: 4px solid var(--qp-menu); 1321 } 1322 1323 body, 1324 body.custom-background { 1325 background: var(--qp-bg) !important; 1326 } 1327 1328 /* 16px fields stop iPhones zooming in when someone taps to type */ 1329 input, 1330 select, 1331 textarea { 1332 font-size: 16px; 1333 } 1334 1335 .gallery { 1336 grid-template-columns: repeat(2, 1fr); 1337 } 1338 } 1339 1340 @media (max-width: 480px) { 1341 1342 .sidebar-split { 1343 grid-template-columns: 1fr; 1344 } 1345 1346 .alignleft, 1347 .alignright { 1348 float: none; 1349 margin: 10px 0; 1350 } 1351 1352 .post-thumb { 1353 float: right; 1354 margin: 5px 0 10px 15px; 1355 } 1356 1357 .post-thumb img { 1358 width: 80px; 1359 } 1360 } 1361 1362 1363 /* 14. Print 1364 Printing a post gives clean text: no menu, sidebar, widgets or comment form. 1365 ------------------------------------- */ 1366 1367 @media print { 1368 1369 body { 1370 color: #000; 1371 background: #fff; 1372 font-size: 12pt; 1373 } 1374 1375 #page { 1376 max-width: none; 1377 box-shadow: none; 1378 } 1379 1380 .row { 1381 display: block; 1382 } 1383 1384 #header { 1385 display: block; 1386 padding: 0 0 10px; 1387 background: none; 1388 color: #000; 1389 border-bottom: 1px solid #000; 1390 } 1391 1392 .site-title a, 1393 .description { 1394 color: #000; 1395 } 1396 1397 #content { 1398 padding: 0; 1399 } 1400 1401 .header-search, 1402 .main-menu, 1403 #sidebar, 1404 .after-post, 1405 .footer-widgets, 1406 .footer-menu, 1407 .post-nav, 1408 .pagination, 1409 .comment-respond, 1410 .reply, 1411 .skip-link, 1412 .credits { 1413 display: none; 1414 } 1415 1416 .site-info { 1417 background: none; 1418 color: #000; 1419 } 1420 1421 a { 1422 color: #000; 1423 } 1424 1425 /* Show where links in the post go */ 1426 .entry a[href^="http"]::after { 1427 content: " (" attr(href) ")"; 1428 font-size: 0.85em; 1429 word-break: break-all; 1430 } 1431 1432 img, 1433 figure, 1434 pre, 1435 blockquote { 1436 break-inside: avoid; 1437 } 1438 1439 h1, 1440 h2, 1441 h3 { 1442 break-after: avoid; 1443 } 1444 }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)