Files
roi-theme/Assets/Css/style.css
FrankZamora c6450211a7 fix: Rename Assets/css to Assets/Css, Assets/js to Assets/Js in git
Windows case-insensitive but Linux case-sensitive.
Git was tracking lowercase, causing 404s on server.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 12:13:24 -06:00

796 lines
19 KiB
CSS

/**
* ROI Theme - Main Stylesheet
*
* RESPONSABILIDAD: Estilos principales del tema
* - Variables CSS específicas del tema (:root en este archivo)
* - Estilos base de elementos HTML (body, a, h1-h6, code, etc.)
* - Layout general
* - Componentes principales
*
* IMPORTANTE: Este es el archivo PRINCIPAL de estilos
* - fonts.css: SOLO variables de fuentes
* - variables.css: SOLO variables de colores/espaciados/etc
* - style.css: Aplica variables a elementos HTML (este archivo)
*
* @package ROI_Theme
* @since 1.0.0
*/
/* ========================================
❌ NO AGREGAR CSS DE COMPONENTES AQUÍ
========================================
IMPORTANTE: Este archivo style.css es para estilos GLOBALES del tema únicamente.
El CSS de componentes individuales DEBE ir en archivos separados en:
wp-content/themes/roi-theme/assets/css/[nombre-componente].css
Ejemplos de componentes con archivos individuales:
- CTA Box Sidebar → cta-box-sidebar.css
- Share Buttons → social-share.css
- Related Posts → related-posts.css
- TOC → toc.css
- Pagination → pagination.css
- Hero Section → hero.css
- Footer Contact Form → footer-contact.css
SIN EXCEPCIONES: TODOS los componentes deben tener su propio archivo CSS.
======================================== */
/* ========================================
❌ SHARE BUTTONS - NO AGREGAR CSS AQUÍ
========================================
El CSS de Share Buttons DEBE estar en:
wp-content/themes/roi-theme/assets/css/social-share.css
Este archivo ya existe y está correctamente enqueued.
Ver: inc/enqueue-scripts.php líneas 405-421
======================================== */
/* ========================================
❌ CTA A/B TESTING - NO AGREGAR CSS AQUÍ
========================================
El CSS de CTA A/B Testing DEBE estar en:
wp-content/themes/roi-theme/assets/css/cta.css
Este archivo ya existe y está correctamente enqueued.
Ver: inc/enqueue-scripts.php líneas 443-477
======================================== */
/* ========================================
❌ RELATED POSTS - NO AGREGAR CSS AQUÍ
========================================
El CSS de Related Posts DEBE estar en:
wp-content/themes/roi-theme/assets/css/related-posts.css
Este archivo ya existe y está correctamente enqueued.
Ver: inc/enqueue-scripts.php líneas 148-156
======================================== */
/* ========================================
❌ PAGINATION - NO AGREGAR CSS AQUÍ
========================================
El CSS de Pagination DEBE estar en:
wp-content/themes/roi-theme/assets/css/pagination.css
Este archivo ya existe y está correctamente enqueued.
Ver: inc/enqueue-scripts.php líneas 129-136
======================================== */
/* ========================================
❌ FOOTER CONTACT FORM - NO AGREGAR CSS AQUÍ
========================================
El CSS de Footer Contact Form DEBE estar en:
wp-content/themes/roi-theme/assets/css/footer-contact.css
Este archivo ya existe y está correctamente enqueued.
Ver: inc/enqueue-scripts.php líneas 506-517
======================================== */
/* ==========================================================================
CSS Variables
========================================================================== */
:root {
/* Typography - Poppins como fuente principal (loaded via Google Fonts) */
--font-primary: 'Poppins', sans-serif;
--font-secondary: 'Poppins', sans-serif;
--font-headings: 'Poppins', sans-serif;
--font-code: "Consolas", "Monaco", "Courier New", Courier, monospace;
/* Font Sizes - Fluid typography scale */
--font-size-xs: 0.75rem; /* 12px */
--font-size-sm: 0.875rem; /* 14px */
--font-size-base: 1rem; /* 16px */
--font-size-lg: 1.125rem; /* 18px */
--font-size-xl: 1.25rem; /* 20px */
--font-size-2xl: 1.5rem; /* 24px */
--font-size-3xl: 1.875rem; /* 30px */
--font-size-4xl: 2.25rem; /* 36px */
/* Line Heights */
--line-height-none: 1;
--line-height-tight: 1.25;
--line-height-normal: 1.5;
--line-height-relaxed: 1.75;
--line-height-loose: 2;
/* Font Weights */
--font-weight-light: 300;
--font-weight-normal: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
/* Colors - WCAG AA compliant (minimum 4.5:1 contrast ratio) */
--color-primary: #0056b3; /* Contrast ratio 7.53:1 against white */
--color-secondary: #5a6268; /* Contrast ratio 7.04:1 against white */
--color-success: #1e7e34; /* Contrast ratio 5.91:1 against white */
--color-danger: #c81e1e; /* Contrast ratio 6.12:1 against white */
--color-warning: #856404; /* Contrast ratio 7.51:1 against white */
--color-info: #117a8b; /* Contrast ratio 5.34:1 against white */
--color-light: #f8f9fa;
--color-dark: #212529;
--color-text: #212529; /* Contrast ratio 15.52:1 against white */
--color-bg: #ffffff;
/* APU Template Colors (from roi-theme-template/css/style.css) */
--color-navy-dark: #0E2337;
--color-navy-primary: #1e3a5f;
--color-navy-light: #2c5282;
--color-orange-primary: #FF8600;
--color-orange-hover: #FF6B35;
--color-orange-light: #FFB800;
/* Neutral colors (for forms, borders, backgrounds) */
--color-neutral-50: #f9fafb;
--color-neutral-100: #e9ecef;
--color-neutral-600: #6c757d;
--color-neutral-700: #495057;
/* Spacing */
--spacing-xs: 0.25rem;
--spacing-sm: 0.5rem;
--spacing-md: 1rem;
--spacing-lg: 1.5rem;
--spacing-xl: 2rem;
--spacing-xxl: 3rem;
/* Header specific variables */
--header-height: 70px;
--header-bg: #ffffff;
--header-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
/* Z-index scale */
--z-header: 1000;
--z-mobile-menu: 999;
--z-overlay: 998;
}
/* ==========================================================================
Reset & Base Styles
========================================================================== */
* {
box-sizing: border-box;
}
html {
font-size: 16px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* ==========================================================================
Base Styles - Elementos HTML Globales
========================================================================== */
body {
margin: 0;
padding: 0;
font-family: var(--font-primary);
font-size: 1rem;
line-height: 1.6;
color: var(--color-text);
background-color: var(--color-bg);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Links globales */
a {
color: var(--color-blue-light);
transition: color var(--transition-base, 0.3s ease);
text-decoration: none;
}
a:hover {
color: var(--color-cyan-primary);
}
/* Código y preformateado */
code, pre, kbd, samp {
font-family: var(--font-code);
font-size: 0.9em;
}
/* ==========================================================================
Typography
========================================================================== */
/* ELIMINADO: Estilos globales h1-h6 (líneas 110-123) - NO están en template */
/* Template usa SOLO estilos Bootstrap default para headings */
p {
margin-top: 0;
margin-bottom: 1rem;
}
a {
color: var(--color-primary);
text-decoration: none;
transition: color 0.3s ease;
}
a:hover {
color: #003d82; /* Darker blue for better contrast - 9.52:1 */
text-decoration: underline;
}
a:focus {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
img {
max-width: 100%;
height: auto;
display: block;
}
/* ==========================================================================
Screen Reader Text
========================================================================== */
.screen-reader-text {
position: absolute;
left: -10000px;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
white-space: nowrap;
}
.screen-reader-text:focus {
position: fixed;
top: 0;
left: 0;
width: auto;
height: auto;
padding: 1rem;
background: #000;
color: #fff;
z-index: 100000;
clip: auto;
clip-path: none;
}
/* ==========================================================================
Skip Link
========================================================================== */
.skip-link {
position: absolute;
top: -40px;
left: 0;
background: #000;
color: #fff;
padding: 0.5rem 1rem;
z-index: 100000;
text-decoration: none;
}
.skip-link:focus {
top: 0;
outline: 2px solid #fff;
outline-offset: 2px;
}
/* ==========================================================================
Site Structure
========================================================================== */
.site {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.site-main {
flex-grow: 1;
}
/* ==========================================================================
Content Wrapper
========================================================================== */
.content-wrapper {
max-width: 1200px;
margin: 0 auto;
padding: var(--spacing-xl);
display: grid;
grid-template-columns: 1fr;
gap: var(--spacing-xl);
}
@media (min-width: 768px) {
.content-wrapper {
grid-template-columns: 2fr 1fr;
}
/* Full width when no sidebar */
.no-sidebar .content-wrapper {
grid-template-columns: 1fr;
}
}
#primary {
min-width: 0;
}
/* ==========================================================================
Single Post & Page Styles
========================================================================== */
.post-thumbnail {
margin-bottom: var(--spacing-xl);
overflow: hidden;
border-radius: 8px;
}
.post-thumbnail img {
width: 100%;
height: auto;
display: block;
}
.entry-header {
margin-bottom: var(--spacing-xl);
}
.entry-title {
margin-bottom: var(--spacing-md);
color: var(--color-dark);
}
.entry-categories {
display: flex;
gap: var(--spacing-sm);
flex-wrap: wrap;
margin-bottom: var(--spacing-md);
}
.category-badge {
display: inline-block;
padding: var(--spacing-xs) var(--spacing-sm);
background-color: var(--color-primary);
color: #fff;
font-size: 0.875rem;
font-weight: 600;
border-radius: 4px;
text-decoration: none;
transition: background-color 0.3s ease;
}
.category-badge:hover {
background-color: #003d82; /* Darker for better contrast */
text-decoration: none;
}
.entry-meta {
display: flex;
flex-wrap: wrap;
gap: var(--spacing-md);
font-size: 0.875rem;
color: var(--color-secondary);
margin-bottom: var(--spacing-lg);
}
.entry-meta time {
display: block;
}
.entry-meta .updated {
display: block;
margin-top: var(--spacing-xs);
font-size: 0.8125rem;
}
.entry-content {
line-height: 1.8;
margin-bottom: var(--spacing-xl);
}
.entry-content > * + * {
margin-top: var(--spacing-md);
}
.entry-content img {
border-radius: 4px;
margin: var(--spacing-lg) 0;
}
.entry-footer {
padding-top: var(--spacing-lg);
border-top: 1px solid #e9ecef;
margin-top: var(--spacing-xl);
}
.tags-links {
display: flex;
flex-wrap: wrap;
gap: var(--spacing-sm);
align-items: center;
margin-bottom: var(--spacing-md);
}
.tags-label {
font-weight: 600;
color: var(--color-dark);
}
.tags-list a {
display: inline-block;
padding: var(--spacing-xs) var(--spacing-sm);
background-color: var(--color-light);
color: var(--color-dark);
font-size: 0.875rem;
border-radius: 4px;
text-decoration: none;
transition: background-color 0.3s ease;
}
.tags-list a:hover {
background-color: #e2e6ea;
text-decoration: none;
}
.edit-link a {
color: var(--color-secondary);
font-size: 0.875rem;
}
/* ==========================================================================
Archive Styles
========================================================================== */
.page-header {
margin-bottom: var(--spacing-xxl);
padding-bottom: var(--spacing-lg);
border-bottom: 2px solid var(--color-primary);
}
.page-title {
margin-bottom: var(--spacing-md);
color: var(--color-dark);
}
.archive-description {
color: var(--color-secondary);
font-size: 1.125rem;
line-height: 1.6;
}
.archive-posts {
display: grid;
gap: var(--spacing-xxl);
margin-bottom: var(--spacing-xxl);
}
.archive-posts article {
display: grid;
gap: var(--spacing-lg);
}
@media (min-width: 768px) {
.archive-posts article {
grid-template-columns: 300px 1fr;
}
}
.archive-posts .post-thumbnail {
margin-bottom: 0;
}
.archive-posts .entry-summary {
color: var(--color-text);
line-height: 1.6;
}
.read-more-link {
display: inline-flex;
align-items: center;
gap: var(--spacing-xs);
font-weight: 600;
color: var(--color-primary);
text-decoration: none;
margin-top: var(--spacing-md);
}
.read-more-link:hover {
text-decoration: underline;
}
.read-more-icon {
transition: transform 0.3s ease;
}
.read-more-link:hover .read-more-icon {
transform: translateX(4px);
}
/* ==========================================================================
Pagination
========================================================================== */
.pagination,
.posts-pagination {
margin-top: var(--spacing-xxl);
margin-bottom: var(--spacing-xxl);
}
.nav-links {
display: flex;
justify-content: center;
gap: var(--spacing-sm);
flex-wrap: wrap;
}
.nav-links .page-numbers {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 44px;
min-height: 44px;
padding: var(--spacing-xs) var(--spacing-sm);
border: 1px solid #dee2e6;
border-radius: 4px;
color: var(--color-primary);
text-decoration: none;
transition: all 0.3s ease;
}
.nav-links .page-numbers:hover {
background-color: var(--color-primary);
color: #fff;
border-color: var(--color-primary);
text-decoration: none;
}
.nav-links .page-numbers.current {
background-color: var(--color-primary);
color: #fff;
border-color: var(--color-primary);
}
.nav-links .page-numbers.dots {
border: none;
}
/* ==========================================================================
Post Navigation
========================================================================== */
.post-navigation {
margin-top: var(--spacing-xxl);
padding-top: var(--spacing-xl);
border-top: 1px solid #e9ecef;
}
.post-navigation .nav-links {
display: grid;
gap: var(--spacing-lg);
}
@media (min-width: 768px) {
.post-navigation .nav-links {
grid-template-columns: 1fr 1fr;
}
}
.post-navigation a {
display: block;
padding: var(--spacing-lg);
border: 1px solid #dee2e6;
border-radius: 4px;
text-decoration: none;
transition: all 0.3s ease;
}
.post-navigation a:hover {
border-color: var(--color-primary);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
text-decoration: none;
}
.nav-subtitle {
display: block;
font-size: 0.875rem;
color: var(--color-secondary);
margin-bottom: var(--spacing-xs);
}
.nav-title {
display: block;
font-weight: 600;
color: var(--color-dark);
}
/* ==========================================================================
404 Error Page
========================================================================== */
.error-404 {
text-align: center;
max-width: 800px;
margin: 0 auto;
padding: var(--spacing-xxl) var(--spacing-lg);
}
.error-404 .page-header {
border-bottom: none;
margin-bottom: var(--spacing-xl);
}
.error-404 .page-title {
font-size: 3rem;
color: var(--color-primary);
}
.error-message {
font-size: 1.125rem;
color: var(--color-secondary);
margin-bottom: var(--spacing-xxl);
}
.error-actions {
text-align: left;
}
.error-actions h2,
.error-actions h3 {
margin-top: var(--spacing-xl);
margin-bottom: var(--spacing-md);
}
.error-suggestions,
.recent-posts-list,
.categories-list {
list-style: none;
padding: 0;
margin: 0;
}
.error-suggestions li,
.recent-posts-list li,
.categories-list li {
padding: var(--spacing-sm) 0;
border-bottom: 1px solid #e9ecef;
}
.error-suggestions li:last-child,
.recent-posts-list li:last-child,
.categories-list li:last-child {
border-bottom: none;
}
.category-count {
color: var(--color-secondary);
font-size: 0.875rem;
margin-left: var(--spacing-xs);
}
.recent-posts-section,
.categories-section {
margin-top: var(--spacing-xl);
}
/* ==========================================================================
Front Page
========================================================================== */
.front-page .hero-section {
margin-bottom: var(--spacing-xxl);
border-radius: 8px;
overflow: hidden;
}
.front-page .hero-section img {
width: 100%;
height: auto;
max-height: 500px;
object-fit: cover;
}
/* ==========================================================================
Page Links (Paginated Posts)
========================================================================== */
.page-links {
margin-top: var(--spacing-xl);
padding-top: var(--spacing-lg);
border-top: 1px solid #e9ecef;
font-weight: 600;
}
.page-links a {
display: inline-block;
margin: 0 var(--spacing-xs);
padding: var(--spacing-xs) var(--spacing-sm);
border: 1px solid #dee2e6;
border-radius: 4px;
text-decoration: none;
}
.page-links a:hover {
background-color: var(--color-primary);
color: #fff;
border-color: var(--color-primary);
text-decoration: none;
}
/* ==========================================================================
Responsive Media
========================================================================== */
@media (max-width: 767px) {
h1 { font-size: 2rem; }
h2 { font-size: 1.75rem; }
h3 { font-size: 1.5rem; }
h4 { font-size: 1.25rem; }
.content-wrapper {
padding: var(--spacing-md);
grid-template-columns: 1fr;
}
.archive-posts article {
grid-template-columns: 1fr;
}
.error-404 .page-title {
font-size: 2rem;
}
}
/* ========================================
✅ COMPONENTES MOVIDOS A ARCHIVOS INDIVIDUALES
========================================
Los siguientes componentes fueron movidos a sus archivos CSS individuales:
- TOP NOTIFICATION BAR → notification-bar.css (registrado en enqueue-scripts.php línea 171)
- NAVBAR → navbar.css (registrado en enqueue-scripts.php línea 180)
- BOTÓN LET'S TALK → buttons.css (registrado en enqueue-scripts.php línea 189)
- HERO SECTION → hero.css y hero-section.css (ya registrados)
- FEATURED IMAGE → featured-image.css (pendiente crear si es necesario)
- POST CONTENT → post-content.css (ya registrado línea 141)
Issue #121 - Limpieza masiva de style.css
Commit: ARQUITECTURA: Mover componentes de style.css a archivos individuales
======================================== */