commit b8ce07158c1872c1f718d8015f89313ed07327e5 Author: Marco Antonio Vivas Date: Fri Sep 12 21:24:58 2025 -0300 Initial commit diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/README.md b/README.md new file mode 100644 index 0000000..92e8d5e --- /dev/null +++ b/README.md @@ -0,0 +1,123 @@ +# NewSTC - Tema WordPress para Notícias Corporativas + +`NewSTC` é um tema moderno, limpo e responsivo para WordPress, projetado especificamente para portais de notícias corporativas, intranets e sites de comunicação interna. Com um design focado na legibilidade e na experiência do usuário, o tema oferece funcionalidades avançadas para destacar conteúdo e facilitar o acesso à informação. + +**Versão:** 1.0 +**Autor:** Marco Antonio Vivas + +--- + +## ✨ Funcionalidades Principais + +* **Design Moderno e Responsivo:** Layout adaptável para uma visualização perfeita em desktops, tablets e celulares. +* **Página Inicial Configurável:** Seções pré-definidas para herói, notícias em destaque, últimas notícias e acesso rápido. +* **Botões de Acesso Rápido Gerenciáveis:** Crie, edite, ordene e remova os botões de atalho da página inicial diretamente pelo painel do WordPress, através de um Custom Post Type dedicado. +* **Notícias em Destaque por Categoria:** Destaque posts na página inicial simplesmente adicionando-os à categoria "Destaque". +* **Layout de Post Otimizado:** Página de post com design focado no conteúdo, sem distrações, com tempo de leitura estimado e botões de compartilhamento social e impressão. +* **Áreas de Widgets:** Múltiplas áreas para widgets, incluindo uma sidebar principal e três colunas no rodapé. +* **Menus Configuráveis:** Duas localizações de menu: um principal no cabeçalho e um secundário no rodapé. +* **Otimizado para SEO:** Estrutura de código limpa e adição de Schema Markup (JSON-LD) para artigos, melhorando a visibilidade nos motores de busca. +* **Performance:** Otimizações como remoção de emojis e lazy loading para imagens. + +--- + +## 🚀 Instalação + +1. Faça o download do arquivo `.zip` do tema. +2. No painel do WordPress, navegue até **Aparência > Temas**. +3. Clique em **Adicionar novo** e depois em **Enviar tema**. +4. Selecione o arquivo `.zip` que você baixou e clique em **Instalar agora**. +5. Após a instalação, clique em **Ativar**. + +--- + +## ⚙️ Configuração do Tema + +Após ativar o tema, siga estes passos para configurar seu site. + +### 1. Configurar a Página Inicial + +O tema `NewSTC` foi projetado para usar uma página inicial estática. + +1. Crie uma nova página em **Páginas > Adicionar nova** e dê a ela o título de "Início" (ou como preferir). +2. Crie outra página chamada "Blog" ou "Notícias" para ser a página de listagem dos posts. +3. Vá para **Configurações > Leitura**. +4. Em "Sua página inicial exibe", selecione **Uma página estática**. +5. Para "Página inicial", selecione a página "Início" que você criou. +6. Para "Página de posts", selecione a página "Blog" ou "Notícias". +7. Salve as alterações. + +### 2. Menus + +O tema possui duas localizações de menu: + +* **Menu Principal:** Exibido no cabeçalho. +* **Menu do Rodapé:** Exibido no rodapé do site. + +Vá para **Aparência > Menus** para criar seus menus e atribuí-los às suas respectivas localizações. + +### 3. Notícias em Destaque + +A seção "Notícias em Destaque" na página inicial exibe os posts de uma categoria específica. + +1. Vá para **Posts > Categorias**. +2. Crie uma nova categoria com o nome **Destaque**. O slug (URL amigável) deve ser `destaque`. +3. Para que um post apareça nesta seção, basta atribuir a ele a categoria "Destaque". Os 2 posts mais recentes desta categoria serão exibidos. + +### 4. Botões de Acesso Rápido (Home) + +Os botões de atalho na página inicial são gerenciados através de um tipo de post personalizado chamado "Acesso Rápido". + +1. No menu lateral do painel, clique em **Acesso Rápido > Adicionar Novo**. +2. **Título:** Será o título do botão (ex: "Últimas Notícias"). +3. **Editor de Conteúdo:** O texto que você inserir aqui será a descrição curta do botão. +4. **Caixa "Detalhes do Botão"**: + * **Ícone:** Insira a classe do ícone desejado do Font Awesome (ex: `fas fa-newspaper`). + * **Link do Botão:** Insira a URL de destino para onde o botão deve levar. +5. **Caixa "Atributos da página" (na barra lateral direita)**: + * Use o campo **Ordem** para definir a posição do botão (0 para o primeiro, 1 para o segundo, e assim por diante). +6. Clique em **Publicar**. + +Você pode adicionar, editar ou remover quantos botões desejar. + +### 5. Widgets + +O tema oferece 4 áreas de widgets: + +* **Sidebar Principal:** Aparece ao lado do conteúdo em páginas de arquivo (como o blog). +* **Rodapé - Coluna 1, 2 e 3:** Permitem adicionar conteúdo em três colunas no rodapé do site. + +Vá para **Aparência > Widgets** para adicionar e configurar os widgets. + +### 6. Informações de Contato e Redes Sociais + +As informações de contato (telefone, e-mail) e os links para redes sociais exibidos no topo e no rodapé podem ser configurados através do **Personalizador** do WordPress. + +1. Vá para **Aparência > Personalizar**. +2. Procure pelas seções correspondentes para inserir suas informações. + +*(Nota: Se as seções não existirem, elas precisam ser criadas no arquivo `functions.php` usando a API do Customizer).* + +--- + +## 🧱 Dependências + +O tema utiliza as seguintes bibliotecas externas: + +* **Google Fonts:** Para as fontes `Inter` e `Plus Jakarta Sans`. +* **Font Awesome:** Para os ícones utilizados em todo o site. + +Esses recursos são carregados automaticamente pelo tema. + +--- + +## 📄 Licença + +Este tema é licenciado sob a **GNU General Public License v2.0** ou posterior. +Você pode encontrar o texto completo da licença em: http://www.gnu.org/licenses/gpl-2.0.html + +--- + +## 👨‍💻 Créditos + +Desenvolvido e mantido por **Marco Antonio Vivas**. \ No newline at end of file diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..bc71364 --- /dev/null +++ b/footer.php @@ -0,0 +1,71 @@ + + + + + + + + + \ No newline at end of file diff --git a/front-page.php b/front-page.php new file mode 100644 index 0000000..4566290 --- /dev/null +++ b/front-page.php @@ -0,0 +1,188 @@ + + +
+
+
+
+

+

+ +
+
+
+ +
+
+
+ 'quick_access_button', + 'posts_per_page' => -1, // Mostra todos os botões + 'orderby' => 'menu_order', + 'order' => 'ASC' + )); + + if ($buttons_query->have_posts()) : + while ($buttons_query->have_posts()) : $buttons_query->the_post(); + $icon = get_post_meta(get_the_ID(), '_button_icon', true); + $link = get_post_meta(get_the_ID(), '_button_link', true); + ?> + + +
+ +

+
+
+ +
+
+
+ + + +
+
+

+
+ 6, + 'ignore_sticky_posts' => 1 + ); + + $latest_query = new WP_Query($latest_args); + + if ($latest_query->have_posts()) : + while ($latest_query->have_posts()) : $latest_query->the_post(); + ?> +
> +
+ + + + + +
+
+
+

+
+ + +
+
+
+ +
+
+ +
+
+
+ +

+ +
+
+ +
+
+
+
+ + __('Menu Principal', 'newstc'), + 'footer' => __('Menu do Rodapé', 'newstc'), + )); + + // Suporte a widgets + add_theme_support('widgets'); + add_theme_support('widgets-block-editor'); + + // Suporte a logo personalizada + add_theme_support('custom-logo', array( + 'height' => 60, + 'width' => 200, + 'flex-height' => true, + 'flex-width' => true, + )); + + // Suporte a wide alignment no editor + add_theme_support('align-wide'); + + // Suporte a estilos do editor + add_theme_support('editor-styles'); + add_editor_style('assets/css/editor-style.css'); + + // Suporte a core block patterns + add_theme_support('core-block-patterns'); + + // Remover estilos padrão da galeria + add_filter('use_default_gallery_style', '__return_false'); + } +endif; +add_action('after_setup_theme', 'newstc_setup'); + +// Enfileirar scripts e estilos +function newstc_scripts() { + // Estilo principal + wp_enqueue_style('newstc-style', get_stylesheet_uri(), array(), NEWSTC_VERSION); + + // Google Fonts + wp_enqueue_style('newstc-google-fonts', 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap', array(), null); + + // Font Awesome + wp_enqueue_style('newstc-font-awesome', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css', array(), '6.4.0'); + + // Script principal + wp_enqueue_script('newstc-script', NEWSTC_TEMPLATE_URI . '/assets/js/main.js', array(), NEWSTC_VERSION, true); + + // Adiciona dados para scripts + wp_localize_script('newstc-script', 'newstc_ajax', array( + 'ajax_url' => admin_url('admin-ajax.php'), + 'nonce' => wp_create_nonce('newstc_nonce') + )); +} +add_action('wp_enqueue_scripts', 'newstc_scripts'); + +// Registrar áreas de widgets +function newstc_widgets_init() { + register_sidebar(array( + 'name' => __('Sidebar Principal', 'newstc'), + 'id' => 'sidebar-1', + 'description' => __('Widgets que aparecem na sidebar principal.', 'newstc'), + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + )); + + register_sidebar(array( + 'name' => __('Rodapé - Coluna 1', 'newstc'), + 'id' => 'footer-1', + 'description' => __('Widgets que aparecem na primeira coluna do rodapé.', 'newstc'), + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + )); + + register_sidebar(array( + 'name' => __('Rodapé - Coluna 2', 'newstc'), + 'id' => 'footer-2', + 'description' => __('Widgets que aparecem na segunda coluna do rodapé.', 'newstc'), + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + )); + + register_sidebar(array( + 'name' => __('Rodapé - Coluna 3', 'newstc'), + 'id' => 'footer-3', + 'description' => __('Widgets que aparecem na terceira coluna do rodapé.', 'newstc'), + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + )); +} +add_action('widgets_init', 'newstc_widgets_init'); + +// Funções personalizadas +function newstc_post_meta() { + $reading_time = newstc_reading_time(); + + echo '
'; + echo ''; + echo ' ' . esc_html($reading_time) . ''; + echo '
'; +} + +function newstc_reading_time() { + $content = get_post_field('post_content', get_the_ID()); + $word_count = str_word_count(strip_tags($content)); + $reading_time = ceil($word_count / 200); // Média de 200 palavras por minuto + + if ($reading_time < 1) { + return __('Menos de 1 min de leitura', 'newstc'); + } + + $time_string = sprintf(_n('%s min de leitura', '%s min de leitura', $reading_time, 'newstc'), $reading_time); + return $time_string; +} + +function newstc_quick_access_buttons() { + $buttons = array( + array( + 'icon' => 'fas fa-newspaper', + 'title' => __('Notícias', 'newstc'), + 'description' => __('Acesse todas as notícias da empresa', 'newstc'), + 'link' => get_permalink(get_option('page_for_posts')) + ), + array( + 'icon' => 'fas fa-calendar-alt', + 'title' => __('Eventos', 'newstc'), + 'description' => __('Confira nosso calendário de eventos', 'newstc'), + 'link' => '#calendar' + ), + array( + 'icon' => 'fas fa-users', + 'title' => __('Equipe', 'newstc'), + 'description' => __('Conheça nossa equipe de colaboradores', 'newstc'), + 'link' => '#team' + ), + array( + 'icon' => 'fas fa-info-circle', + 'title' => __('Sobre', 'newstc'), + 'description' => __('Saiba mais sobre nossa empresa', 'newstc'), + 'link' => '#about' + ) + ); + + echo '
'; + echo '
'; + echo ''; + echo '
'; + echo '
'; +} + +// Função para botões de compartilhamento social +function newstc_social_share() { + $post_url = urlencode(get_permalink()); + $post_title = urlencode(get_the_title()); + + $social_links = [ + 'facebook' => 'https://www.facebook.com/sharer/sharer.php?u=' . $post_url, + 'twitter' => 'https://twitter.com/intent/tweet?text=' . $post_title . '&url=' . $post_url, + 'linkedin' => 'https://www.linkedin.com/shareArticle?mini=true&url=' . $post_url . '&title=' . $post_title, + 'whatsapp' => 'https://api.whatsapp.com/send?text=' . $post_title . ' ' . $post_url, + ]; + + echo '
'; + echo ''; + echo '
'; +} + +// Shortcodes personalizados +function newstc_calendar_shortcode($atts) { + $atts = shortcode_atts(array( + 'show_title' => true, + 'show_navigation' => true + ), $atts); + + ob_start(); + ?> +
+ +

+ + +
+ 5, + 'show_title' => true + ), $atts); + + ob_start(); + ?> +
+ +

+ + +
+ is_main_query()) { + if ($query->is_home() || $query->is_front_page()) { + $query->set('posts_per_page', 6); + } + } +} +add_action('pre_get_posts', 'newstc_optimize_queries'); + +// Adicionar suporte a WebP +function newstc_webp_support($mimes) { + $mimes['webp'] = 'image/webp'; + return $mimes; +} +add_filter('mime_types', 'newstc_webp_support'); + +// Customizar a pesquisa +function newstc_search_filter($query) { + if ($query->is_search && !is_admin()) { + $query->set('post_type', 'post'); + } + return $query; +} +add_filter('pre_get_posts', 'newstc_search_filter'); + +// Adicionar suporte a lazy loading para imagens +function newstc_lazy_load_images($content) { + if (is_feed() || is_admin()) { + return $content; + } + + $content = preg_replace_callback('/]+/', function($matches) { + $img = $matches[0]; + + // Skip if already has lazy loading + if (strpos($img, 'loading=') !== false) { + return $img; + } + + // Add loading="lazy" attribute + $img = preg_replace('//i', '', $img); + + return $img; + }, $content); + + return $content; +} +add_filter('the_content', 'newstc_lazy_load_images'); + +// Adicionar schema markup para melhor SEO +function newstc_schema_markup() { + if (is_single()) { + $schema = array( + '@context' => 'https://schema.org', + '@type' => 'NewsArticle', + 'headline' => get_the_title(), + 'datePublished' => get_the_date('c'), + 'dateModified' => get_the_modified_date('c'), + 'author' => array( + '@type' => 'Person', + 'name' => get_the_author() + ), + 'publisher' => array( + '@type' => 'Organization', + 'name' => get_bloginfo('name'), + 'logo' => array( + '@type' => 'ImageObject', + 'url' => wp_get_attachment_url(get_theme_mod('custom_logo')) + ) + ) + ); + + if (has_post_thumbnail()) { + $schema['image'] = array( + '@type' => 'ImageObject', + 'url' => get_the_post_thumbnail_url(), + 'width' => 1200, + 'height' => 630 + ); + } + + echo ''; + } +} +add_action('wp_head', 'newstc_schema_markup'); + +/** + * Custom Post Type para Botões de Acesso Rápido. + */ +function newstc_register_quick_access_cpt() { + $labels = array( + 'name' => _x( 'Botões de Acesso Rápido', 'Post Type General Name', 'newstc' ), + 'singular_name' => _x( 'Botão de Acesso Rápido', 'Post Type Singular Name', 'newstc' ), + 'menu_name' => __( 'Acesso Rápido', 'newstc' ), + 'name_admin_bar' => __( 'Botão de Acesso Rápido', 'newstc' ), + 'archives' => __( 'Arquivos de Botões', 'newstc' ), + 'attributes' => __( 'Atributos do Botão', 'newstc' ), + 'parent_item_colon' => __( 'Botão Pai:', 'newstc' ), + 'all_items' => __( 'Todos os Botões', 'newstc' ), + 'add_new_item' => __( 'Adicionar Novo Botão', 'newstc' ), + 'add_new' => __( 'Adicionar Novo', 'newstc' ), + 'new_item' => __( 'Novo Botão', 'newstc' ), + 'edit_item' => __( 'Editar Botão', 'newstc' ), + 'update_item' => __( 'Atualizar Botão', 'newstc' ), + 'view_item' => __( 'Ver Botão', 'newstc' ), + 'view_items' => __( 'Ver Botões', 'newstc' ), + 'search_items' => __( 'Procurar Botão', 'newstc' ), + ); + $args = array( + 'label' => __( 'Botão de Acesso Rápido', 'newstc' ), + 'description' => __( 'Botões para a seção de acesso rápido na home.', 'newstc' ), + 'labels' => $labels, + 'supports' => array( 'title', 'editor', 'page-attributes' ), + 'hierarchical' => false, + 'public' => false, + 'show_ui' => true, + 'show_in_menu' => true, + 'menu_position' => 20, + 'menu_icon' => 'dashicons-screenoptions', + 'show_in_admin_bar' => true, + 'show_in_nav_menus' => false, + 'can_export' => true, + 'has_archive' => false, + 'exclude_from_search' => true, + 'publicly_queryable' => false, + 'capability_type' => 'page', + ); + register_post_type( 'quick_access_button', $args ); +} +add_action( 'init', 'newstc_register_quick_access_cpt', 0 ); + +/** + * Meta Box para campos extras dos botões. + */ +function newstc_quick_access_meta_box() { + add_meta_box( 'quick_access_details', __( 'Detalhes do Botão', 'newstc' ), 'newstc_quick_access_meta_box_callback', 'quick_access_button' ); +} +add_action( 'add_meta_boxes', 'newstc_quick_access_meta_box' ); + +function newstc_quick_access_meta_box_callback( $post ) { + wp_nonce_field( 'newstc_save_quick_access_meta', 'newstc_quick_access_nonce' ); + $icon = get_post_meta( $post->ID, '_button_icon', true ); + $link = get_post_meta( $post->ID, '_button_link', true ); + ?> +

+ + + Font Awesome' ); ?> +

+

+ + +

+ + +> + + + + + + + +> + +
+ + +
+ \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..26ec208 --- /dev/null +++ b/index.php @@ -0,0 +1,78 @@ + + +
+
+
+

+ +

+ + +
+ +
> +
+ + + + + +
+
+
+

+ +
+
+ +
+
+ +
+
+
+ +
+ + ' ' . esc_html__( 'Anterior', 'newstc' ), + 'next_text' => esc_html__( 'Próximo', 'newstc' ) . ' ', + ) + ); + else : + ?> +

+ +
+
+
+ + + + + + + NewSTC - Layout Dividido + + + + + + + + + +
+ +
+ +
+ + +
+
+
+

Notícias Corporativas

+

Mantenha-se atualizado com as últimas notícias e informações da empresa

+ +
+
+
+ + + + + +
+
+

Últimas Notícias

+
+ + + + + + + + +
+ +
+
+
+ + +
+ + +
+
+ + +
+
+
+ + + + \ No newline at end of file diff --git a/page.php b/page.php new file mode 100644 index 0000000..295e93f --- /dev/null +++ b/page.php @@ -0,0 +1,34 @@ + + +
+
+ +
> +
+

+
+ +
+ +
+ +
+ +
+
+ + + + \ No newline at end of file diff --git a/single.php b/single.php new file mode 100644 index 0000000..3390281 --- /dev/null +++ b/single.php @@ -0,0 +1,81 @@ + + +
+
+ +
> + + +
+ +
+ + +
+
+ term_id ) ) . '" class="post-category">' . esc_html( $categories[0]->name ) . ''; + } + ?> +

+ +
+ +
+ +
+ +
+ + + + + +
+
+
+ +
+ ' ' . esc_html__( 'Post Anterior', 'newstc' ) . ' %title', + 'next_text' => '' . esc_html__( 'Próximo Post', 'newstc' ) . ' %title', + ) + ); + ?> +
+ + + +
+
+ +') no-repeat; + background-position: 100% 0; + background-size: 50% 100%; +} + +.hero-content { + position: relative; + z-index: 2; + max-width: 650px; +} + +.hero-content h1 { + font-size: 3.5rem; + line-height: 1.1; + margin-bottom: var(--spacing-lg); + color: var(--white); +} + +.hero-content p { + font-size: 1.25rem; + margin-bottom: var(--spacing-xl); + color: var(--gray-100); + opacity: 0.9; +} + +.hero-cta { + display: flex; + gap: var(--spacing-md); + flex-wrap: wrap; +} + +/* Quick Access Buttons */ +.quick-access { + background-color: var(--white); + padding: var(--spacing-xl) 0; + box-shadow: var(--shadow-md); + position: relative; + z-index: 10; +} + +.quick-access-buttons { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: var(--spacing-lg); +} + +.quick-access-button { + display: flex; + flex-direction: column; + align-items: center; + padding: var(--spacing-lg); + background: var(--white); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); + transition: var(--transition-base); + text-align: center; + border: 1px solid var(--gray-100); +} + +.quick-access-button:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-lg); + border-color: var(--primary-light); +} + +.quick-access-icon { + width: 60px; + height: 60px; + display: flex; + align-items: center; + justify-content: center; + background: var(--primary-extra-light); + border-radius: var(--radius-xl); + margin-bottom: var(--spacing-md); + color: var(--primary); + font-size: 1.5rem; +} + +.quick-access-title { + font-size: 1.25rem; + font-weight: 600; + margin-bottom: var(--spacing-sm); + color: var(--gray-800); +} + +.quick-access-description { + color: var(--gray-600); + margin-bottom: var(--spacing-md); + font-size: 0.95rem; +} + +/* Featured News */ +.featured-news { + padding: var(--spacing-3xl) 0; + background-color: var(--gray-50); +} + +.featured-news-container { + display: grid; + grid-template-columns: 2fr 1fr; + gap: var(--spacing-2xl); + align-items: start; +} + +.featured-news-grid { + display: grid; + grid-template-columns: 1fr; + gap: var(--spacing-xl); +} + +.featured-news-item { + background: var(--white); + border-radius: var(--radius-xl); + overflow: hidden; + box-shadow: var(--shadow-lg); + transition: var(--transition-base); + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--spacing-lg); +} + +.featured-news-item:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-xl); +} + +.featured-thumbnail { + position: relative; + overflow: hidden; +} + +.featured-thumbnail img { + width: 100%; + height: 100%; + object-fit: cover; + transition: var(--transition-smooth); +} + +.featured-news-item:hover .featured-thumbnail img { + transform: scale(1.05); +} + +.featured-badge { + position: absolute; + top: var(--spacing-md); + left: var(--spacing-md); + background: var(--accent); + color: var(--white); + padding: 0.5rem 1rem; + border-radius: var(--radius-md); + font-size: 0.875rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.featured-content { + padding: var(--spacing-xl); + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.featured-header { + margin-bottom: var(--spacing-lg); +} + +.featured-title { + font-size: 1.75rem; + line-height: 1.3; + margin-bottom: var(--spacing-md); +} + +.featured-title a { + color: var(--gray-900); + transition: var(--transition-base); +} + +.featured-title a:hover { + color: var(--primary); +} + +.featured-excerpt { + color: var(--gray-600); + margin-bottom: var(--spacing-lg); + line-height: 1.6; +} + +.featured-footer { + margin-top: auto; +} + +/* Sidebar */ +.sidebar { + display: flex; + flex-direction: column; + gap: var(--spacing-2xl); + position: sticky; + top: var(--spacing-xl); + height: fit-content; +} + +.sidebar-widget { + background: var(--white); + border-radius: var(--radius-lg); + padding: var(--spacing-lg); + box-shadow: var(--shadow-sm); + border: 1px solid var(--gray-200); + transition: var(--transition-base); +} + +.sidebar-widget:hover { + box-shadow: var(--shadow-lg); +} + +.widget-title { + font-size: 1.5rem; + padding-bottom: var(--spacing-sm); + border-bottom: 1px solid var(--gray-200); + color: var(--gray-800); +} + +/* Calendário Widget */ +.calendar-widget { + background: linear-gradient(145deg, var(--white) 0%, var(--gray-50) 100%); + border: 1px solid var(--gray-200); +} + +.calendar-container { + border-radius: var(--radius-lg); + overflow: hidden; +} + +/* Events Widget */ +.events-list { + display: flex; + flex-direction: column; + gap: var(--spacing-md); +} + +.event-item { + display: flex; + gap: var(--spacing-md); + padding: var(--spacing-lg); + background: var(--gray-50); + border-radius: var(--radius-lg); + transition: var(--transition-base); + border: 1px solid var(--gray-200); +} + +.event-item:hover { + background: var(--white); + transform: translateY(-4px); + box-shadow: var(--shadow-lg); + border-color: var(--primary-light); +} + +.event-date { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-width: 60px; + background: var(--primary-extra-light); + color: var(--primary-dark); + border-radius: var(--radius-md); + padding: var(--spacing-sm); + text-align: center; +} + +.event-day { + font-size: 1.5rem; + font-weight: 700; + line-height: 1; +} + +.event-month { + font-size: 0.875rem; + font-weight: 600; + text-transform: uppercase; +} + +.event-content { + flex: 1; +} + +.event-title { + font-size: 1.1rem; + font-weight: 600; + margin-bottom: var(--spacing-xs); + color: var(--gray-800); +} + +.event-time { + font-size: 0.875rem; + color: var(--gray-600); + display: flex; + align-items: center; + gap: var(--spacing-xs); +} + +/* Latest News */ +.latest-news { + padding: var(--spacing-3xl) 0; + background: var(--white); +} + +.news-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); + gap: var(--spacing-xl); + margin-bottom: var(--spacing-2xl); +} + +.news-card { + background: var(--white); + border-radius: var(--radius-lg); + overflow: hidden; + box-shadow: var(--shadow-sm); + transition: var(--transition-base); + display: flex; + flex-direction: column; + border: 1px solid var(--gray-200); +} + +.news-card:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +.news-thumbnail { + position: relative; + overflow: hidden; + aspect-ratio: 16/9; +} + +.news-thumbnail img { + width: 100%; + height: 100%; + object-fit: cover; + transition: var(--transition-smooth); +} + +.news-card:hover .news-thumbnail img { + transform: scale(1.05); +} + +.news-content { + padding: var(--spacing-lg); + flex: 1; + display: flex; + flex-direction: column; +} + +.news-header { + margin-bottom: var(--spacing-md); +} + +.news-title { + font-size: 1.25rem; + line-height: 1.4; + margin-bottom: var(--spacing-sm); +} + +.news-title a { + color: var(--gray-900); + transition: var(--transition-base); +} + +.news-title a:hover { + color: var(--primary); +} + +.news-meta { + display: flex; + gap: var(--spacing-md); + font-size: 0.875rem; + color: var(--gray-500); +} + +.news-meta span { + display: flex; + align-items: center; + gap: var(--spacing-xs); +} + +.news-excerpt { + color: var(--gray-600); + margin-bottom: var(--spacing-lg); + line-height: 1.6; + flex: 1; +} + +.news-footer { + margin-top: auto; +} + +.view-all { + text-align: center; +} + +/* Footer */ +.site-footer { + background: var(--gray-900); + color: var(--gray-400); + padding: var(--spacing-3xl) 0 var(--spacing-xl); + margin-top: var(--spacing-3xl); /* Adiciona espaço acima do rodapé */ +} + +.footer-widgets { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: var(--spacing-2xl); + margin-bottom: var(--spacing-2xl); +} + +.footer-widget { + display: flex; + flex-direction: column; +} + +.footer-widget-title { + color: var(--white); + font-size: 1.25rem; + margin-bottom: var(--spacing-lg); + position: relative; + padding-bottom: var(--spacing-sm); +} + +.footer-widget-title::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 40px; + height: 2px; + background: var(--primary); +} + +.footer-menu { + display: flex; + flex-direction: column; + gap: var(--spacing-sm); +} + +.footer-menu a { + color: var(--gray-400); + transition: var(--transition-base); + display: flex; + align-items: center; + gap: var(--spacing-xs); +} + +.footer-menu a:hover { + color: var(--primary-light); + transform: translateX(4px); +} + +.footer-contact { + display: flex; + flex-direction: column; + gap: var(--spacing-md); +} + +.footer-contact-item { + display: flex; + align-items: center; + gap: var(--spacing-md); + color: var(--gray-400); +} + +.footer-contact-icon { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + background: var(--gray-800); + border-radius: var(--radius-md); + color: var(--primary); + flex-shrink: 0; +} + +.footer-bottom { + border-top: 1px solid var(--gray-800); + padding-top: var(--spacing-xl); + text-align: center; + color: var(--gray-500); + font-size: 0.875rem; +} + +/* Adiciona margem à sidebar quando ela não está na front-page */ +.site-main + .sidebar { + margin-left: var(--spacing-2xl); +} + +/*-------------------------------------------------------------- +# Single Post Layout +--------------------------------------------------------------*/ +.single-post-container { + padding: var(--spacing-2xl) 0; +} + +.post-content-area { + max-width: 840px; + margin: 0 auto var(--spacing-2xl) auto; + background: var(--white); + border-radius: var(--radius-xl); + box-shadow: var(--shadow-lg); + overflow: hidden; +} + +.post-featured-image { + max-height: 450px; + overflow: hidden; +} + +.post-featured-image img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.post-content-wrapper { + padding: var(--spacing-2xl) var(--spacing-2xl); +} + +.entry-header { + margin-bottom: var(--spacing-xl); + text-align: center; +} + +.post-category { + display: inline-block; + background: var(--primary-extra-light); + color: var(--primary); + padding: 0.5rem 1.25rem; + border-radius: 999px; + font-size: 0.875rem; + font-weight: 600; + margin-bottom: var(--spacing-md); + transition: var(--transition-base); +} + +.post-category:hover { + background: var(--primary-light); + color: var(--primary-dark); +} + +.entry-title { + font-size: 2.75rem; + line-height: 1.2; + color: var(--gray-900); + margin-bottom: var(--spacing-lg); +} + +.post-meta { + display: flex; + justify-content: center; + gap: var(--spacing-lg); + font-size: 0.9rem; + color: var(--gray-500); +} + +.post-meta span { + display: flex; + align-items: center; + gap: var(--spacing-sm); +} + +.entry-content { + font-size: 1.1rem; + line-height: 1.8; + color: var(--gray-800); +} + +.entry-content p { + margin-bottom: 1.5em; + text-align: justify; /* Justifica o texto conforme solicitado */ +} + +.entry-content h2, +.entry-content h3, +.entry-content h4 { + margin-top: 2em; + margin-bottom: 1em; + line-height: 1.3; + color: var(--gray-900); +} + +.entry-content ul, +.entry-content ol { + margin-bottom: 1.5em; + padding-left: 1.5em; +} + +.entry-content li { + margin-bottom: 0.5em; +} + +.entry-content blockquote { + border-left: 4px solid var(--primary); + padding-left: 1.5em; + margin: 2em 0; + font-style: italic; + font-size: 1.2rem; + color: var(--gray-600); +} + +.entry-footer { + margin-top: var(--spacing-2xl); + padding-top: var(--spacing-lg); + border-top: 1px solid var(--gray-200); + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: var(--spacing-lg); +} + +.post-tags { + font-size: 0.9rem; +} + +.post-tags .tags-label { + font-weight: 600; + color: var(--gray-800); + margin-right: var(--spacing-sm); +} + +.post-tags a { + display: inline-block; + background: var(--gray-100); + color: var(--gray-700); + padding: 0.3rem 0.8rem; + border-radius: var(--radius-sm); + margin: 0.2rem; + transition: var(--transition-base); +} + +.post-tags a:hover { + background: var(--primary); + color: var(--white); +} + +.post-share { + display: flex; + align-items: center; + gap: var(--spacing-md); +} + +.share-label { + font-weight: 600; + color: var(--gray-800); + font-size: 0.9rem; +} + +.share-buttons { + display: flex; + gap: var(--spacing-sm); +} + +.share-btn { + width: 40px; + height: 40px; + border-radius: 50%; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--white); + font-size: 1rem; + transition: var(--transition-base); + border: none; + cursor: pointer; +} + +.share-btn:hover { + transform: translateY(-3px); + opacity: 0.8; +} + +.share-btn.facebook { background: #1877F2; } +.share-btn.twitter { background: #1DA1F2; } +.share-btn.linkedin { background: #0A66C2; } +.share-btn.whatsapp { background: #25D366; } +.share-btn.print-btn { background: var(--secondary); } + +/* Post Navigation */ +.post-navigation-container { + max-width: 840px; + margin: 0 auto var(--spacing-2xl) auto; +} + +.post-navigation { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--spacing-lg); +} + +.nav-links { + display: contents; /* Permite que os filhos diretos se tornem itens do grid */ +} + +.nav-previous, +.nav-next { + display: flex; +} + +.nav-previous a, +.nav-next a { + display: flex; + flex-direction: column; + padding: var(--spacing-lg); + border: 1px solid var(--gray-200); + border-radius: var(--radius-lg); + background: var(--white); + box-shadow: var(--shadow-sm); + transition: var(--transition-base); + width: 100%; +} + +.nav-previous a:hover, +.nav-next a:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-md); + border-color: var(--primary-light); + color: var(--primary); +} + +.nav-subtitle { + font-size: 0.875rem; + font-weight: 500; + color: var(--gray-500); + margin-bottom: var(--spacing-sm); + display: flex; + align-items: center; + gap: var(--spacing-sm); +} + +.nav-title { + font-weight: 600; + color: var(--gray-800); +} + +/* Responsividade */ +@media (max-width: 1024px) { + :root { + --container-width: 100%; + } + + .featured-news-container { + grid-template-columns: 1fr; + gap: var(--spacing-2xl); + } + + .featured-news-item { + grid-template-columns: 1fr; + } + + .hero-content h1 { + font-size: 2.5rem; + } + + .entry-title { + font-size: 2.25rem; + } +} + +@media (max-width: 768px) { + .menu-toggle { + display: block; + } + + .primary-menu { + display: none; + position: absolute; + top: 100%; + left: 0; + right: 0; + background: var(--white); + flex-direction: column; + padding: var(--spacing-lg); + box-shadow: var(--shadow-lg); + gap: var(--spacing-md); + } + + .primary-menu.active { + display: flex; + } + + .hero-cta { + flex-direction: column; + align-items: stretch; + } + + .featured-news-grid, + .news-grid { + grid-template-columns: 1fr; + } + + .top-bar .container { + flex-direction: column; + gap: var(--spacing-sm); + } + + .top-bar-contact { + flex-wrap: wrap; + justify-content: center; + gap: var(--spacing-md); + } + + .main-header .container { + flex-direction: column; + gap: var(--spacing-md); + } + + .site-branding { + flex-direction: column; + text-align: center; + gap: var(--spacing-sm); + } + + .entry-footer { + flex-direction: column; + align-items: center; + } + + .post-navigation { + grid-template-columns: 1fr; + } +} + +@media (max-width: 480px) { + .featured-content, + .news-content { + padding: var(--spacing-md); + } + + .featured-title { + font-size: 1.5rem; + } + + .hero-content h1 { + font-size: 2rem; + } + + .section-title { + font-size: 1.75rem; + } + + .quick-access-buttons { + grid-template-columns: 1fr; + } +} + +/* Utilitários */ +.text-center { + text-align: center; +} + +.mb-0 { + margin-bottom: 0; +} + +.mt-0 { + margin-top: 0; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +/* Animações */ +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.fade-in { + animation: fadeIn 0.6s ease-out forwards; +} + +/* Estados de loading */ +.loading { + opacity: 0.7; + pointer-events: none; +} + +.loading::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + width: 20px; + height: 20px; + margin: -10px 0 0 -10px; + border: 2px solid var(--gray-300); + border-radius: 50%; + border-top-color: var(--primary); + animation: spin 0.8s ease infinite; +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} \ No newline at end of file