/* Scrollbar — adapts to theme */
::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}
::-webkit-scrollbar-track {
    background: #f1f5f9;
}
::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
    background: #94a3b8;
}

.dark ::-webkit-scrollbar-track {
    background: #1e293b;
}
.dark ::-webkit-scrollbar-thumb {
    background: #475569;
}
.dark ::-webkit-scrollbar-thumb:hover {
    background: #64748b;
}

/* Table row hover */
tbody tr {
    transition: background-color 0.15s ease;
}

/* Alpine.js cloak */
[x-cloak] {
    display: none !important;
}

/* Smooth transitions for sidebar */
aside {
    transition: width 0.3s ease;
}

/* Focus styles */
input:focus, select:focus, textarea:focus {
    outline: none;
    border-color: #3b82f6;
    box-shadow: 0 0 0 1px #3b82f6;
}

/* Animate pulse for blocked indicators */
@keyframes pulse-dot {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
}
.animate-pulse {
    animation: pulse-dot 2s ease-in-out infinite;
}

/* Status badge base */
.status-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 500;
}

/* Chart container */
canvas {
    max-width: 100%;
}

/* Print styles */
@media print {
    aside { display: none; }
    main { margin: 0; padding: 0; }
}
