Todos los componentes del NIVEL 2 ya están implementados correctamente: - ✅ Notification Bar (#49) - ✅ Navbar (#50) - ✅ Hero Section (#51) - ✅ Sidebar (#52) - ✅ Footer (#53) Solo se actualizó notification-bar.css para usar variables CSS. Próximo paso: NIVEL 3 (Refinamientos visuales) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
253 lines
5.0 KiB
CSS
253 lines
5.0 KiB
CSS
/**
|
|
* Top Notification Bar Styles
|
|
* Issue #39
|
|
*
|
|
* Barra de notificación fija en la parte superior del sitio
|
|
* para anunciar actualizaciones importantes o promociones.
|
|
*
|
|
* @package Apus_Theme
|
|
* @since 1.0.0
|
|
*/
|
|
|
|
/* ============================================
|
|
NOTIFICATION BAR BASE STYLES
|
|
============================================ */
|
|
|
|
.top-notification-bar {
|
|
background-color: var(--color-slate-gray);
|
|
height: 40px;
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
z-index: var(--z-navbar);
|
|
color: var(--color-white);
|
|
font-size: var(--font-size-sm);
|
|
animation: slideDown var(--transition-base) ease;
|
|
display: flex;
|
|
align-items: center;
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
|
|
/* ============================================
|
|
ANIMATION
|
|
============================================ */
|
|
|
|
@keyframes slideDown {
|
|
from {
|
|
transform: translateY(-100%);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translateY(0);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
/* ============================================
|
|
TEXT STYLES
|
|
============================================ */
|
|
|
|
.notification-text {
|
|
font-size: 0.875rem;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.text-highlight {
|
|
color: #61c7cd;
|
|
font-weight: 600;
|
|
margin-right: 0.25rem;
|
|
}
|
|
|
|
/* ============================================
|
|
LINK STYLES
|
|
============================================ */
|
|
|
|
.notification-link {
|
|
color: #61c7cd;
|
|
text-decoration: none;
|
|
font-weight: 500;
|
|
transition: all 0.2s ease;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.notification-link:hover {
|
|
text-decoration: underline;
|
|
color: #4db8c4;
|
|
}
|
|
|
|
.notification-link:focus {
|
|
outline: 2px solid #61c7cd;
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
/* ============================================
|
|
ICON STYLES
|
|
============================================ */
|
|
|
|
.top-notification-bar .bi-megaphone-fill {
|
|
color: #61c7cd;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
/* ============================================
|
|
CLOSE BUTTON
|
|
============================================ */
|
|
|
|
.btn-close-notification {
|
|
background: transparent;
|
|
border: none;
|
|
color: rgba(255, 255, 255, 0.8);
|
|
cursor: pointer;
|
|
padding: 0.5rem;
|
|
font-size: 0.75rem;
|
|
position: absolute;
|
|
right: 1rem;
|
|
transition: all 0.2s ease;
|
|
line-height: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.btn-close-notification:hover {
|
|
color: #ffffff;
|
|
transform: scale(1.1);
|
|
}
|
|
|
|
.btn-close-notification:focus {
|
|
outline: 2px solid #61c7cd;
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.btn-close-notification .bi-x-lg {
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
/* ============================================
|
|
NAVBAR ADJUSTMENT
|
|
============================================ */
|
|
|
|
/* Ajustar navbar cuando notification bar está visible */
|
|
body:not(.notification-dismissed) .navbar {
|
|
top: 40px;
|
|
position: sticky;
|
|
}
|
|
|
|
/* Asegurar que el navbar no se solape cuando la barra está cerrada */
|
|
body.notification-dismissed .navbar {
|
|
top: 0;
|
|
}
|
|
|
|
/* ============================================
|
|
RESPONSIVE STYLES
|
|
============================================ */
|
|
|
|
/* Tablets y pantallas pequeñas */
|
|
@media (max-width: 991px) {
|
|
.top-notification-bar {
|
|
font-size: 0.8125rem;
|
|
height: 36px;
|
|
}
|
|
|
|
.notification-text {
|
|
font-size: 0.8125rem;
|
|
}
|
|
|
|
.btn-close-notification {
|
|
right: 0.75rem;
|
|
}
|
|
|
|
body:not(.notification-dismissed) .navbar {
|
|
top: 36px;
|
|
}
|
|
}
|
|
|
|
/* Móviles */
|
|
@media (max-width: 767px) {
|
|
.top-notification-bar {
|
|
font-size: 0.8rem;
|
|
height: 40px;
|
|
padding: 0 0.5rem;
|
|
}
|
|
|
|
.top-notification-bar .container-fluid {
|
|
padding: 0 0.5rem;
|
|
}
|
|
|
|
.notification-text {
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.top-notification-bar .bi-megaphone-fill {
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
.btn-close-notification {
|
|
right: 0.5rem;
|
|
padding: 0.25rem;
|
|
}
|
|
|
|
.notification-link {
|
|
font-size: 0.8rem;
|
|
}
|
|
}
|
|
|
|
/* Pantallas muy pequeñas */
|
|
@media (max-width: 480px) {
|
|
.top-notification-bar {
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.notification-text {
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.text-highlight {
|
|
margin-right: 0.15rem;
|
|
}
|
|
|
|
.notification-link {
|
|
font-size: 0.75rem;
|
|
margin-left: 0.25rem !important;
|
|
}
|
|
}
|
|
|
|
/* ============================================
|
|
ACCESSIBILITY
|
|
============================================ */
|
|
|
|
/* Modo de alto contraste */
|
|
@media (prefers-contrast: high) {
|
|
.top-notification-bar {
|
|
border-bottom: 2px solid #ffffff;
|
|
}
|
|
|
|
.text-highlight,
|
|
.notification-link {
|
|
color: #ffffff;
|
|
font-weight: 700;
|
|
}
|
|
}
|
|
|
|
/* Reducción de movimiento */
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.top-notification-bar {
|
|
animation: none;
|
|
}
|
|
|
|
.btn-close-notification:hover {
|
|
transform: none;
|
|
}
|
|
}
|
|
|
|
/* ============================================
|
|
PRINT STYLES
|
|
============================================ */
|
|
|
|
@media print {
|
|
.top-notification-bar {
|
|
display: none;
|
|
}
|
|
}
|