/* 
Fecha: 2025-12-29
Path: /var/www/oberdomo/app-client/css/dark.css
Descripción: CSS tema oscuro - Refinamientos visuales y ajustes específicos
             Mejoras de contraste y efectos para modo oscuro
*/

/* === BODY Y BACKGROUND === */
body {
    background-color: var(--color-bg-dark);
    color: var(--color-text-primary);
}

/* === MEJORAS DE CONTRASTE === */
.card {
    background-color: var(--color-bg-light);
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.5),
                0 1px 3px rgba(0, 0, 0, 0.3);
}

.card:hover {
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.6),
                0 4px 6px rgba(0, 0, 0, 0.4);
}

/* === HEADER MEJORADO === */
.app-header {
    background: linear-gradient(180deg, 
                rgba(13, 13, 13, 0.98) 0%, 
                rgba(13, 13, 13, 0.95) 100%);
    backdrop-filter: blur(20px) saturate(180%);
    box-shadow: 0 1px 0 var(--color-border),
                0 4px 12px rgba(0, 0, 0, 0.4);
}

/* === SIDEBAR MEJORADO === */
.app-sidebar {
    background: linear-gradient(180deg, 
                var(--color-bg-darker) 0%, 
                rgba(13, 13, 13, 0.98) 100%);
    box-shadow: 2px 0 12px rgba(0, 0, 0, 0.5);
}

/* === EFECTOS DE BRILLO === */
.btn-primary {
    position: relative;
    overflow: hidden;
}

.btn-primary::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(255, 255, 255, 0.2),
        transparent
    );
    transition: left 0.5s;
}

.btn-primary:hover::before {
    left: 100%;
}

/* === INPUTS EN DARK MODE === */
input:not([type="checkbox"]):not([type="radio"]),
textarea,
select {
    background-color: var(--color-bg-darker);
    border-color: var(--color-border);
    color: var(--color-text-primary);
}

input:focus,
textarea:focus,
select:focus {
    background-color: var(--color-bg-dark);
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-alpha),
                0 0 12px rgba(132, 200, 20, 0.2);
}

input::placeholder,
textarea::placeholder {
    color: var(--color-text-tertiary);
}

/* === GLASSMORPHISM EFFECTS === */
.auth-card {
    background: rgba(42, 42, 42, 0.8);
    backdrop-filter: blur(20px) saturate(180%);
    border: 1px solid rgba(255, 255, 255, 0.1);
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.7),
                0 0 0 1px rgba(255, 255, 255, 0.05);
}

/* === HOVER EFFECTS === */
.nav-item {
    position: relative;
    transition: all var(--transition-base);
}

.nav-item::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 0;
    height: 60%;
    background: var(--color-primary);
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    transition: width var(--transition-fast);
}

.nav-item.active::before {
    width: 4px;
}

.nav-item:hover:not(.active) {
    background-color: rgba(132, 200, 20, 0.05);
}

/* === DEVICE CARDS (preparado para Fase 3) === */
.device-card {
    background-color: var(--color-bg-light);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: var(--spacing-lg);
    transition: all var(--transition-base);
    cursor: pointer;
}

.device-card:hover {
    border-color: var(--color-primary);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.6),
                0 0 0 1px var(--color-primary-alpha);
    transform: translateY(-2px);
}

.device-card.active {
    background: linear-gradient(135deg, 
                rgba(132, 200, 20, 0.15) 0%, 
                rgba(132, 200, 20, 0.05) 100%);
    border-color: var(--color-primary);
}

/* === STATUS INDICATORS === */
.status-dot {
    position: relative;
}

.status-dot::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100%;
    height: 100%;
    border-radius: var(--radius-full);
    opacity: 0;
}

.connection-status.online .status-dot::after {
    animation: statusPulse 2s ease-in-out infinite;
}

@keyframes statusPulse {
    0%, 100% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(1);
    }
    50% {
        opacity: 0.5;
        transform: translate(-50%, -50%) scale(2);
        background-color: var(--color-online);
    }
}

/* === SCROLLBAR DARK === */
* {
    scrollbar-width: thin;
    scrollbar-color: var(--color-border) var(--color-bg-darker);
}

::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

::-webkit-scrollbar-track {
    background: var(--color-bg-darker);
    border-radius: var(--radius-full);
}

::-webkit-scrollbar-thumb {
    background: var(--color-border);
    border-radius: var(--radius-full);
    border: 2px solid var(--color-bg-darker);
}

::-webkit-scrollbar-thumb:hover {
    background: var(--color-border-light);
}

::-webkit-scrollbar-thumb:active {
    background: var(--color-primary);
}

/* === SELECTION GLOW === */
::selection {
    background-color: var(--color-primary);
    color: var(--color-bg-dark);
    text-shadow: none;
}

::-moz-selection {
    background-color: var(--color-primary);
    color: var(--color-bg-dark);
    text-shadow: none;
}

/* === FOCUS VISIBLE === */
*:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

button:focus-visible,
a:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* === LOADING STATES === */
.loading-shimmer {
    background: linear-gradient(
        90deg,
        var(--color-bg-light) 0%,
        var(--color-bg-lighter) 50%,
        var(--color-bg-light) 100%
    );
    background-size: 200% 100%;
    animation: shimmer 1.5s ease-in-out infinite;
}

@keyframes shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

/* === ERROR/WARNING STATES === */
.form-error {
    background: linear-gradient(
        135deg,
        rgba(239, 83, 80, 0.15) 0%,
        rgba(239, 83, 80, 0.05) 100%
    );
    border-left: 4px solid var(--color-error);
}

.form-success {
    background: linear-gradient(
        135deg,
        rgba(132, 200, 20, 0.15) 0%,
        rgba(132, 200, 20, 0.05) 100%
    );
    border-left: 4px solid var(--color-primary);
}

/* === TOOLTIPS (preparado) === */
[data-tooltip] {
    position: relative;
}

[data-tooltip]::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(-8px);
    padding: var(--spacing-sm) var(--spacing-md);
    background-color: var(--color-bg-darker);
    color: var(--color-text-primary);
    font-size: var(--font-size-sm);
    white-space: nowrap;
    border-radius: var(--radius-md);
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--transition-base);
    box-shadow: var(--shadow-lg);
    border: 1px solid var(--color-border);
}

[data-tooltip]:hover::after {
    opacity: 1;
}

/* === MOBILE OPTIMIZATIONS === */
@media (max-width: 768px) {
    .card {
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
    }
    
    .auth-card {
        background: var(--color-bg-light);
        backdrop-filter: none;
    }
}

/* === HIGH CONTRAST MODE === */
@media (prefers-contrast: high) {
    .card {
        border: 2px solid var(--color-border);
    }
    
    .btn-primary {
        border: 2px solid var(--color-primary-dark);
    }
    
    input:focus,
    textarea:focus {
        border-width: 2px;
    }
}

/* === REDUCED MOTION === */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}
