/* ==========================================
   UTILITY CLASSES
   Common utility classes for cursor, text alignment, and interactions
   ========================================== */

/* Cursor Utilities */
.cursor-pointer {
    cursor: pointer;
}

.cursor-grab {
    cursor: grab;
}

.cursor-grabbing {
    cursor: grabbing;
}

.cursor-not-allowed {
    cursor: not-allowed;
}

/* Text Alignment Utilities */
.text-left {
    text-align: left;
}

.text-center {
    text-align: center;
}

.text-right {
    text-align: right;
}

/* Font Weight Utilities */
.font-weight-normal {
    font-weight: 400;
}

.font-weight-medium {
    font-weight: 500;
}

.font-weight-semibold {
    font-weight: 600;
}

.font-weight-bold {
    font-weight: 700;
}

/* Opacity Utilities (for transitions) */
.opacity-0 {
    opacity: 0;
}

.opacity-50 {
    opacity: 0.5;
}

.opacity-70 {
    opacity: 0.7;
}

.opacity-100 {
    opacity: 1;
}

/* Transition Utilities */
.transition-opacity {
    transition: opacity 0.3s ease;
}

/* Event Item Hover Effects */
.event-item {
    background: var(--panel-bg);
    transform: translateX(0);
    transition: background-color 0.2s ease, transform 0.2s ease;
}

.event-item:hover {
    background: var(--hover-bg);
    transform: translateX(4px);
}

/* ==========================================
   SEMANTIC COLOR UTILITIES
   For applying theme-aware colors to text and icons
   ========================================== */

/* Text Color Utilities */
.text-error {
    color: var(--error);
}

.text-warning {
    color: var(--warning);
}

.text-success {
    color: var(--success);
}

.text-info {
    color: var(--info);
}

/* ==========================================
   ALERT COMPONENTS
   Flexible alert/notification system with severity variants
   ========================================== */

/* Base alert structure */
.alert {
    border-radius: 8px;
    padding: 1rem;
    margin-bottom: 1rem;
}

/* Alert severity variants */
.alert-error {
    background: var(--error-bg);
    border-left: 4px solid var(--error);
}

.alert-warning {
    background: rgba(217, 119, 6, 0.1);
    border-left: 4px solid var(--warning);
}

[data-theme="dark"] .alert-warning {
    background: rgba(251, 191, 36, 0.1);
}

.alert-success {
    background: rgba(5, 150, 105, 0.1);
    border-left: 4px solid var(--success);
}

[data-theme="dark"] .alert-success {
    background: rgba(52, 211, 153, 0.1);
}

.alert-info {
    background: rgba(37, 99, 235, 0.1);
    border-left: 4px solid var(--info);
}

[data-theme="dark"] .alert-info {
    background: rgba(96, 165, 250, 0.1);
}

/* Alert icon styling */
.alert-icon {
    font-size: 1.2em;
    margin-top: 0.125rem;
    flex-shrink: 0;
}

