/**
 * Sarah's Bookings - Dashboard Styles
 * Styles for dashboard pages, authentication forms, and related components
 */

/* -----------------------------
 * Table of Contents
 * -----------------------------
 * 1. Authentication Pages
 *    1.1 Auth Container
 *    1.2 Auth Forms
 *    1.3 Password Strength
 *    1.4 User Type Selection
 * 2. Dashboard Layout
 *    2.1 Header
 *    2.2 Sidebar
 *    2.3 Content Area
 * 3. Dashboard Components
 *    3.1 Stats Cards
 *    3.2 Quick Actions
 *    3.3 Section Styles
 *    3.4 Tables
 *    3.5 Cards
 * 4. User Dashboard Specific
 * 5. Business Dashboard Specific
 * 6. Admin Dashboard Specific
 * 7. Context Menus and Modals
 * 8. Responsive Adaptations
 * 9. Logout Success Alert
 * -----------------------------
 */

/* -----------------------------
 * 1. Authentication Pages
 * -----------------------------
 */

/* 1.1 Auth Container */
.auth-page {
    min-height: 100vh;
    background-color: var(--color-gray-100);
    display: flex;
    align-items: center;
    justify-content: center;
}

.auth-container {
    display: flex;
    width: 100%;
    max-width: 1000px;
    min-height: 600px;
    background-color: var(--color-white);
    border-radius: var(--border-radius-lg);
    box-shadow: var(--shadow-lg);
    overflow: hidden;
}

.auth-card {
    flex: 1;
    padding: var(--spacing-xl);
    display: flex;
    flex-direction: column;
}

.auth-info {
    flex: 1;
    background-color: var(--color-primary);
    color: var(--color-white);
    padding: var(--spacing-xl);
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.auth-info::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(135deg, rgba(52, 152, 219, 0.8) 0%, rgba(41, 128, 185, 0.9) 100%);
    z-index: 1;
}

.auth-info-content {
    position: relative;
    z-index: 2;
}

.auth-header {
    text-align: center;
    margin-bottom: var(--spacing-xl);
}

.auth-logo h1 {
    color: var(--color-primary);
    margin-bottom: var(--spacing-md);
}

.auth-header h2 {
    margin-bottom: var(--spacing-sm);
}

.auth-header p {
    color: var(--color-gray-600);
}

.auth-features {
    margin-top: var(--spacing-lg);
    padding-left: var(--spacing-lg);
}

.auth-features li {
    margin-bottom: var(--spacing-sm);
    position: relative;
}

.auth-features li::before {
    content: '✓';
    position: absolute;
    left: calc(-1 * var(--spacing-lg));
    color: var(--color-white);
}

.auth-steps {
    margin-top: var(--spacing-lg);
    padding-left: var(--spacing-lg);
}

.auth-steps li {
    margin-bottom: var(--spacing-sm);
}

.auth-note {
    margin-top: var(--spacing-lg);
    font-style: italic;
    font-size: var(--font-size-sm);
    opacity: 0.9;
}

/* 1.2 Auth Forms */
.auth-form {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.form-row {
    display: flex;
    gap: var(--spacing-md);
}

.form-row .form-group {
    flex: 1;
}

.input-with-icon {
    position: relative;
}

.input-icon {
    position: absolute;
    right: var(--spacing-sm);
    top: 50%;
    transform: translateY(-50%);
    color: var(--color-gray-500);
    cursor: pointer;
}

.toggle-password:hover {
    color: var(--color-primary);
}

.form-error {
    color: var(--color-error);
    font-size: var(--font-size-sm);
    margin-top: var(--spacing-xs);
    display: none;
}

.input-error {
    border-color: var(--color-error);
}

.input-error:focus {
    box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);
}

.auth-divider {
    position: relative;
    text-align: center;
    margin: var(--spacing-lg) 0;
}

.auth-divider::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    height: 1px;
    background-color: var(--color-gray-300);
}

.auth-divider span {
    position: relative;
    background-color: var(--color-white);
    padding: 0 var(--spacing-sm);
    color: var(--color-gray-600);
    font-size: var(--font-size-sm);
}

.social-login {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.button-social {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
}

.social-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: var(--color-gray-200);
    font-weight: var(--font-weight-bold);
}

.button-google .social-icon {
    color: #DB4437;
}

.button-facebook .social-icon {
    color: #4267B2;
}

.auth-links {
    text-align: right;
    margin-top: var(--spacing-sm);
}

.auth-footer {
    margin-top: var(--spacing-lg);
    text-align: center;
    font-size: var(--font-size-sm);
}

.auth-success {
    text-align: center;
    padding: var(--spacing-xl) 0;
}

.success-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background-color: var(--color-success);
    color: var(--color-white);
    font-size: var(--font-size-2xl);
    margin: 0 auto var(--spacing-lg);
}

/* 1.3 Password Strength */
.password-strength {
    margin-top: var(--spacing-xs);
}

.strength-meter {
    height: 4px;
    background-color: var(--color-gray-300);
    border-radius: var(--border-radius-full);
    overflow: hidden;
    margin-bottom: var(--spacing-xs);
}

.strength-meter-fill {
    height: 100%;
    width: 0;
    border-radius: var(--border-radius-full);
    transition: width var(--transition-normal), background-color var(--transition-normal);
}

.strength-meter-fill[data-strength="0"] {
    width: 20%;
    background-color: var(--color-error);
}

.strength-meter-fill[data-strength="1"] {
    width: 40%;
    background-color: var(--color-error);
}

.strength-meter-fill[data-strength="2"] {
    width: 60%;
    background-color: var(--color-warning);
}

.strength-meter-fill[data-strength="3"] {
    width: 80%;
    background-color: var(--color-info);
}

.strength-meter-fill[data-strength="4"] {
    width: 100%;
    background-color: var(--color-success);
}

.strength-text {
    font-size: var(--font-size-xs);
    color: var(--color-gray-600);
}

/* 1.4 User Type Selection */
.user-type-selector {
    display: flex;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.user-type-option {
    flex: 1;
}

.user-type-option input[type="radio"] {
    display: none;
}

.user-type-label {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--spacing-md);
    border: 2px solid var(--color-gray-300);
    border-radius: var(--border-radius-md);
    cursor: pointer;
    transition: all var(--transition-fast);
}

.user-type-option input[type="radio"]:checked + .user-type-label {
    border-color: var(--color-primary);
    background-color: rgba(52, 152, 219, 0.05);
}

.user-type-icon {
    font-size: var(--font-size-2xl);
    margin-bottom: var(--spacing-sm);
}

.hidden {
    display: none;
}

/* -----------------------------
 * 2. Dashboard Layout
 * -----------------------------
 */

/* 2.1 Header */
.dashboard-page {
    min-height: 100vh;
    background-color: var(--color-gray-100);
    display: flex;
    flex-direction: column;
}

.dashboard-header {
    background-color: var(--color-white);
    box-shadow: var(--shadow-sm);
    position: sticky;
    top: 0;
    z-index: var(--z-index-sticky);
}

.dashboard-header .container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: var(--spacing-md);
    padding-bottom: var(--spacing-md);
}

.header-left {
    display: flex;
    align-items: center;
}

.header-right {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
}

.dashboard-logo h1 {
    font-size: var(--font-size-xl);
    margin-bottom: 0;
    color: var(--color-primary);
}

.admin-badge {
    display: inline-block;
    background-color: var(--color-secondary);
    color: var(--color-white);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    padding: 2px 8px;
    border-radius: var(--border-radius-full);
    margin-left: var(--spacing-sm);
}

.search-bar {
    position: relative;
    width: 300px;
}

.search-bar input {
    width: 100%;
    padding-right: 40px;
}

.search-button {
    position: absolute;
    right: 0;
    top: 0;
    height: 100%;
    background: none;
    border: none;
    padding: 0 var(--spacing-sm);
    color: var(--color-gray-500);
    cursor: pointer;
}

.search-button:hover {
    color: var(--color-primary);
}

.notifications {
    position: relative;
}

.notification-button {
    background: none;
    border: none;
    cursor: pointer;
    position: relative;
    padding: var(--spacing-xs);
}

.notification-icon {
    font-size: var(--font-size-lg);
    color: var(--color-gray-700);
}

.notification-badge {
    position: absolute;
    top: 0;
    right: 0;
    background-color: var(--color-accent);
    color: var(--color-white);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    width: 18px;
    height: 18px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.notification-dropdown {
    position: absolute;
    top: 100%;
    right: 0;
    width: 320px;
    background-color: var(--color-white);
    border-radius: var(--border-radius-md);
    box-shadow: var(--shadow-lg);
    z-index: var(--z-index-dropdown);
    display: none;
    overflow: hidden;
}

.notification-dropdown.active {
    display: block;
}

.notification-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--color-gray-200);
}

.notification-header h3 {
    margin: 0;
    font-size: var(--font-size-md);
}

.mark-all-read {
    background: none;
    border: none;
    color: var(--color-primary);
    font-size: var(--font-size-sm);
    cursor: pointer;
}

.notification-list {
    max-height: 320px;
    overflow-y: auto;
}

.notification-item {
    display: flex;
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--color-gray-200);
    transition: background-color var(--transition-fast);
}

.notification-item:hover {
    background-color: var(--color-gray-100);
}

.notification-item.unread {
    background-color: rgba(52, 152, 219, 0.05);
}

.notification-item .notification-icon {
    margin-right: var(--spacing-sm);
    font-size: var(--font-size-lg);
}

.notification-content {
    flex: 1;
}

.notification-content p {
    margin: 0 0 var(--spacing-xs);
    font-size: var(--font-size-sm);
}

.notification-time {
    font-size: var(--font-size-xs);
    color: var(--color-gray-600);
}

.notification-footer {
    padding: var(--spacing-sm) var(--spacing-md);
    text-align: center;
    border-top: 1px solid var(--color-gray-200);
}

.notification-footer a {
    font-size: var(--font-size-sm);
    color: var(--color-primary);
}

.user-menu {
    position: relative;
}

.user-menu-button {
    display: flex;
    align-items: center;
    background: none;
    border: none;
    cursor: pointer;
    padding: var(--spacing-xs) var(--spacing-sm);
}

.user-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background-color: var(--color-primary);
    color: var(--color-white);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: var(--font-weight-bold);
    margin-right: var(--spacing-sm);
}

.admin-avatar {
    background-color: var(--color-secondary);
}

.user-name {
    margin-right: var(--spacing-xs);
}

.dropdown-arrow {
    font-size: var(--font-size-xs);
    color: var(--color-gray-600);
}

.user-dropdown {
    position: absolute;
    top: 100%;
    right: 0;
    width: 200px;
    background-color: var(--color-white);
    border-radius: var(--border-radius-md);
    box-shadow: var(--shadow-lg);
    z-index: var(--z-index-dropdown);
    display: none;
    overflow: hidden;
}

.user-dropdown.active {
    display: block;
}

.user-dropdown-menu {
    list-style: none;
    padding: 0;
    margin: 0;
}

.user-dropdown-menu li {
    border-bottom: 1px solid var(--color-gray-200);
}

.user-dropdown-menu li:last-child {
    border-bottom: none;
}

.user-dropdown-menu a {
    display: block;
    padding: var(--spacing-sm) var(--spacing-md);
    color: var(--color-gray-800);
    transition: background-color var(--transition-fast);
}

.user-dropdown-menu a:hover {
    background-color: var(--color-gray-100);
    text-decoration: none;
}

.user-dropdown-menu .logout-link {
    color: var(--color-accent);
}

.divider {
    border-top: 1px solid var(--color-gray-300);
    margin: var(--spacing-xs) 0;
}

.business-selector {
    position: relative;
}

.business-selector select {
    padding-right: 30px;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%236c757d' viewBox='0 0 16 16'%3E%3Cpath d='M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: calc(100% - 10px) center;
}

/* 2.2 Sidebar */
.dashboard-container {
    display: flex;
    flex: 1;
}

.dashboard-sidebar {
    width: 250px;
    background-color: var(--color-white);
    box-shadow: var(--shadow-sm);
    display: flex;
    flex-direction: column;
    transition: transform var(--transition-normal);
}

.sidebar-nav {
    flex: 1;
    padding: var(--spacing-md) 0;
}

.nav-menu {
    list-style: none;
    padding: 0;
    margin: 0;
}

.nav-item {
    margin-bottom: var(--spacing-xs);
}

.nav-link {
    display: flex;
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-md);
    color: var(--color-gray-700);
    border-left: 3px solid transparent;
    transition: all var(--transition-fast);
}

.nav-link:hover {
    background-color: var(--color-gray-100);
    color: var(--color-primary);
    text-decoration: none;
}

.nav-item.active .nav-link {
    background-color: rgba(52, 152, 219, 0.05);
    color: var(--color-primary);
    border-left-color: var(--color-primary);
}

.nav-icon {
    margin-right: var(--spacing-sm);
    font-size: var(--font-size-lg);
    width: 24px;
    text-align: center;
}

.nav-text {
    flex: 1;
}

.nav-badge {
    background-color: var(--color-accent);
    color: var(--color-white);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    padding: 2px 6px;
    border-radius: var(--border-radius-full);
}

.sidebar-footer {
    padding: var(--spacing-md);
    border-top: 1px solid var(--color-gray-200);
}

.help-link {
    display: flex;
    align-items: center;
    color: var(--color-gray-600);
    font-size: var(--font-size-sm);
}

.help-link:hover {
    color: var(--color-primary);
    text-decoration: none;
}

.help-icon {
    margin-right: var(--spacing-sm);
    font-size: var(--font-size-md);
}

/* 2.3 Content Area */
.dashboard-content {
    flex: 1;
    padding: var(--spacing-lg);
    overflow-y: auto;
}

.dashboard-welcome {
    margin-bottom: var(--spacing-lg);
}

.dashboard-welcome h2 {
    margin-bottom: var(--spacing-xs);
}

.date-display {
    color: var(--color-gray-600);
    font-size: var(--font-size-md);
}

.dashboard-row {
    display: flex;
    gap: var(--spacing-lg);
    margin-bottom: var(--spacing-lg);
}

.dashboard-row .dashboard-section {
    flex: 1;
}

/* -----------------------------
 * 3. Dashboard Components
 * -----------------------------
 */

/* 3.1 Stats Cards */
.dashboard-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.stat-card {
    background-color: var(--color-white);
    border-radius: var(--border-radius-md);
    padding: var(--spacing-md);
    box-shadow: var(--shadow-sm);
    display: flex;
    align-items: center;
}

.stat-icon {
    width: 48px;
    height: 48px;
    border-radius: var(--border-radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-size-xl);
    margin-right: var(--spacing-md);
}

.stat-icon.upcoming {
    background-color: rgba(52, 152, 219, 0.1);
    color: var(--color-primary);
}

.stat-icon.completed {
    background-color: rgba(39, 174, 96, 0.1);
    color: var(--color-success);
}

.stat-icon.favorites {
    background-color: rgba(243, 156, 18, 0.1);
    color: var(--color-warning);
}

.stat-icon.reviews {
    background-color: rgba(155, 89, 182, 0.1);
    color: #9b59b6;
}

.stat-icon.bookings {
    background-color: rgba(52, 152, 219, 0.1);
    color: var(--color-primary);
}

.stat-icon.revenue {
    background-color: rgba(39, 174, 96, 0.1);
    color: var(--color-success);
}

.stat-icon.users {
    background-color: rgba(52, 152, 219, 0.1);
    color: var(--color-primary);
}

.stat-icon.businesses {
    background-color: rgba(243, 156, 18, 0.1);
    color: var(--color-warning);
}

.stat-content {
    flex: 1;
}

.stat-content h3 {
    font-size: var(--font-size-sm);
    margin-bottom: var(--spacing-xs);
    color: var(--color-gray-600);
}

.stat-value {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-bold);
    margin: 0;
    color: var(--color-gray-800);
}

.stat-change {
    font-size: var(--font-size-xs);
    margin: var(--spacing-xs) 0 0;
}

.stat-change.positive {
    color: var(--color-success);
}

.stat-change.negative {
    color: var(--color-error);
}

/* 3.2 Quick Actions */
.quick-actions {
    display: flex;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
    flex-wrap: wrap;
}

.quick-action-button {
    display: flex;
    align-items: center;
    background-color: var(--color-white);
    border: 1px solid var(--color-gray-300);
    border-radius: var(--border-radius-md);
    padding: var(--spacing-sm) var(--spacing-md);
    cursor: pointer;
    transition: all var(--transition-fast);
}

.quick-action-button:hover {
    background-color: var(--color-gray-100);
    border-color: var(--color-gray-400);
}

.quick-action-icon {
    margin-right: var(--spacing-sm);
    font-size: var(--font-size-lg);
}

/* 3.3 Section Styles */
.dashboard-section {
    background-color: var(--color-white);
    border-radius: var(--border-radius-md);
    box-shadow: var(--shadow-sm);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--spacing-md);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid var(--color-gray-200);
}

.section-header h3 {
    margin: 0;
    font-size: var(--font-size-lg);
}

.view-all {
    font-size: var(--font-size-sm);
    color: var(--color-primary);
}

/* 3.4 Tables */
.data-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0 10px; /* space between rows */
    table-layout: auto;
    font-size: var(--font-size-sm);
}

.data-table th,
.data-table td {
    padding: var(--spacing-md) var(--spacing-lg);
    text-align: left;
    border-bottom: 1px solid var(--color-gray-200);
    background-color: var(--color-white);
    vertical-align: middle;
}

.data-table th {
  white-space: nowrap;
  padding-right: 1.5em;
  position: relative;
  cursor: pointer;
  vertical-align: middle;
}

.data-table th::after {
  position: absolute;
  right: 0.5em;
  top: 50%;
  transform: translateY(-50%);
  font-size: 0.75em;
  pointer-events: none;
}

.data-table th.sortable::after {
    content: '⇅';
    font-size: var(--font-size-xs);
    color: var(--color-gray-500);
    margin-left: var(--spacing-xs);
    position: absolute;
    right: var(--spacing-md);
    top: 50%;
    transform: translateY(-50%);
}

.data-table th.sortable.sorted-asc::after {
    content: '↑';
}

.data-table th.sortable.sorted-desc::after {
    content: '↓';
}

.data-table tr:last-child td {
    border-bottom: none;
}

.data-table tr:hover td {
    background-color: var(--color-gray-100);
}

.data-table td {
    word-wrap: break-word;
    overflow-wrap: break-word;
    white-space: normal;
    text-overflow: ellipsis;
    overflow: hidden;
    max-width: 250px;
}

.table-wrapper {
  border: 1px solid #ddd;
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 24px;
  background-color: #fff;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
  overflow-x: auto;
}

/* Zebra striping */
.data-table tr:nth-child(even) td {
    background-color: var(--color-gray-50);
}

/* Action Buttons */
.action-buttons {
    display: flex;
    gap: var(--spacing-xs);
}

.action-button {
    background: none;
    border: none;
    cursor: pointer;
    padding: var(--spacing-xs);
    border-radius: var(--border-radius-sm);
    transition: background-color var(--transition-fast);
    font-size: var(--font-size-sm);
    color: var(--color-primary);
}

.action-button:hover {
    background-color: var(--color-gray-200);
}

.action-button.edit {
    color: var(--color-info);
}

.action-button.delete {
    color: var(--color-error);
}

/* Sort Buttons */
.data-table th.asc::after {
  content: "▲";
}

.data-table th:not(.asc)::after {
  content: "▼";
}

/* 3.5 Cards */
.booking-cards {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.booking-card {
    display: flex;
    background-color: var(--color-white);
    border: 1px solid var(--color-gray-200);
    border-radius: var(--border-radius-md);
    overflow: hidden;
}

.booking-date {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 80px;
    background-color: var(--color-primary);
    color: var(--color-white);
    padding: var(--spacing-sm);
}

.date-day {
    font-size: var(--font-size-2xl);
    font-weight: var(--font-weight-bold);
    line-height: 1;
}

.date-month {
    font-size: var(--font-size-sm);
    text-transform: uppercase;
}

.booking-details {
    flex: 1;
    padding: var(--spacing-md);
}

.booking-details h4 {
    margin: 0 0 var(--spacing-xs);
}

.booking-service,
.booking-time,
.booking-address {
    margin: 0 0 var(--spacing-xs);
    font-size: var(--font-size-sm);
}

.booking-service {
    color: var(--color-gray-700);
    font-weight: var(--font-weight-medium);
}

.booking-time,
.booking-address {
    color: var(--color-gray-600);
}

.booking-actions {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border-left: 1px solid var(--color-gray-200);
}

.button-sm {
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: var(--font-size-sm);
}

.button-danger {
    color: var(--color-white);
    background-color: var(--color-error);
    border-color: var(--color-error);
}

.button-danger:hover {
    background-color: var(--color-accent-dark);
    border-color: var(--color-accent-dark);
}

.button-success {
    color: var(--color-white);
    background-color: var(--color-success);
    border-color: var(--color-success);
}

.button-success:hover {
    background-color: #219653;
    border-color: #219653;
}

/* -----------------------------
 * 4. User Dashboard Specific
 * -----------------------------
 */
.favorites-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.favorite-item {
    display: flex;
    align-items: center;
    padding: var(--spacing-sm);
    border: 1px solid var(--color-gray-200);
    border-radius: var(--border-radius-md);
}

.favorite-image {
    width: 60px;
    height: 60px;
    border-radius: var(--border-radius-sm);
    overflow: hidden;
    margin-right: var(--spacing-md);
}

.favorite-details {
    flex: 1;
}

.favorite-details h4 {
    margin: 0 0 var(--spacing-xs);
    font-size: var(--font-size-md);
}

.favorite-rating {
    display: flex;
    align-items: center;
    margin-bottom: var(--spacing-xs);
}

.stars {
    color: var(--color-warning);
    margin-right: var(--spacing-xs);
}

.rating-count {
    color: var(--color-gray-600);
    font-size: var(--font-size-sm);
}

.favorite-category {
    color: var(--color-gray-600);
    font-size: var(--font-size-sm);
    margin: 0;
}

.favorite-actions {
    margin-left: var(--spacing-md);
}

.activity-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.activity-item {
    display: flex;
    align-items: flex-start;
    padding: var(--spacing-sm);
    border-bottom: 1px solid var(--color-gray-200);
}

.activity-item:last-child {
    border-bottom: none;
}

.activity-icon {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background-color: var(--color-gray-100);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: var(--spacing-md);
}

.activity-content {
    flex: 1;
}

.activity-content p {
    margin: 0 0 var(--spacing-xs);
    font-size: var(--font-size-sm);
}

.activity-time {
    font-size: var(--font-size-xs);
    color: var(--color-gray-600);
}

.activity-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background-color: var(--color-primary);
    color: var(--color-white);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: var(--font-weight-bold);
    font-size: var(--font-size-sm);
    margin-right: var(--spacing-md);
}

.recommendations-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: var(--spacing-md);
}

/* -----------------------------
 * 5. Business Dashboard Specific
 * -----------------------------
 */
.schedule-timeline {
    border: 1px solid var(--color-gray-200);
    border-radius: var(--border-radius-md);
    overflow: hidden;
}

.timeline-header {
    padding: var(--spacing-sm) var(--spacing-md);
    background-color: var(--color-gray-100);
    border-bottom: 1px solid var(--color-gray-200);
}

.timeline-hours {
    display: flex;
    justify-content: space-between;
    padding-left: 120px;
}

.timeline-hours span {
    font-size: var(--font-size-xs);
    color: var(--color-gray-600);
}

.timeline-staff {
    padding: var(--spacing-sm);
}

.staff-row {
    display: flex;
    margin-bottom: var(--spacing-md);
}

.staff-row:last-child {
    margin-bottom: 0;
}

.staff-info {
    width: 120px;
    padding-right: var(--spacing-md);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.staff-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: var(--color-primary);
    color: var(--color-white);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: var(--font-weight-bold);
    margin-bottom: var(--spacing-xs);
}

.staff-name {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    text-align: center;
}

.staff-timeline {
    flex: 1;
    height: 80px;
    background-color: var(--color-gray-100);
    border-radius: var(--border-radius-sm);
    position: relative;
}

.appointment {
    position: absolute;
    top: 10px;
    height: 60px;
    background-color: var(--color-primary);
    border-radius: var(--border-radius-sm);
    color: var(--color-white);
    padding: var(--spacing-xs);
    overflow: hidden;
    cursor: pointer;
    transition: transform var(--transition-fast);
}

.appointment:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
    z-index: 1;
}

.appointment-content {
    font-size: var(--font-size-xs);
}

.appointment-client {
    font-weight: var(--font-weight-medium);
    margin: 0 0 2px;
}

.appointment-service,
.appointment-time {
    margin: 0 0 2px;
    opacity: 0.9;
}

.performance-metrics {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.metric-card {
    background-color: var(--color-gray-100);
    border-radius: var(--border-radius-md);
    padding: var(--spacing-md);
    text-align: center;
}

.metric-card h4 {
    font-size: var(--font-size-sm);
    margin: 0 0 var(--spacing-sm);
    color: var(--color-gray-600);
}

.metric-value {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-bold);
    margin: 0 0 var(--spacing-xs);
}

.metric-change {
    font-size: var(--font-size-xs);
    margin: 0;
}

.performance-chart {
    height: 200px;
    background-color: var(--color-gray-100);
    border-radius: var(--border-radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
}

.chart-placeholder {
    text-align: center;
    color: var(--color-gray-600);
}

.chart-note {
    font-size: var(--font-size-sm);
    font-style: italic;
    margin-top: var(--spacing-sm);
}

.period-selector {
    display: flex;
    gap: var(--spacing-xs);
}

.period-button {
    background: none;
    border: 1px solid var(--color-gray-300);
    border-radius: var(--border-radius-sm);
    padding: 2px 8px;
    font-size: var(--font-size-xs);
    cursor: pointer;
    transition: all var(--transition-fast);
}

.period-button:hover {
    background-color: var(--color-gray-100);
}

.period-button.active {
    background-color: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-white);
}

.services-table {
    overflow-x: auto;
}

/* -----------------------------
 * 6. Admin Dashboard Specific
 * -----------------------------
 */
.system-metrics {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.progress-bar {
    height: 8px;
    background-color: var(--color-gray-200);
    border-radius: var(--border-radius-full);
    overflow: hidden;
    margin: var(--spacing-sm) 0;
}

.progress-fill {
    height: 100%;
    background-color: var(--color-primary);
    border-radius: var(--border-radius-full);
}

.system-events {
    margin-top: var(--spacing-lg);
}

.event-list {
    list-style: none;
    padding: 0;
    margin: var(--spacing-md) 0 0;
}

.event-item {
    display: flex;
    align-items: center;
    padding: var(--spacing-sm) 0;
    border-bottom: 1px solid var(--color-gray-200);
}

.event-item:last-child {
    border-bottom: none;
}

.event-time {
    width: 80px;
    font-size: var(--font-size-sm);
    color: var(--color-gray-600);
}

.event-type {
    width: 80px;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
    padding: 2px 8px;
    border-radius: var(--border-radius-full);
    text-align: center;
    margin-right: var(--spacing-md);
}

.event-type.backup {
    background-color: rgba(52, 152, 219, 0.1);
    color: var(--color-primary);
}

.event-type.update {
    background-color: rgba(155, 89, 182, 0.1);
    color: #9b59b6;
}

.event-type.alert {
    background-color: rgba(231, 76, 60, 0.1);
    color: var(--color-error);
}

.event-type.security {
    background-color: rgba(243, 156, 18, 0.1);
    color: var(--color-warning);
}

.event-description {
    flex: 1;
    font-size: var(--font-size-sm);
}

.status-indicator {
    display: inline-flex;
    align-items: center;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
}

.status-indicator.online::before {
    content: '';
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: var(--color-success);
    margin-right: var(--spacing-xs);
}

.user-stats,
.business-stats,
.support-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.user-stat-card,
.business-stat-card,
.support-stat-card {
    background-color: var(--color-gray-100);
    border-radius: var(--border-radius-md);
    padding: var(--spacing-md);
    text-align: center;
}

.user-stat-icon,
.business-stat-icon,
.support-stat-icon {
    font-size: var(--font-size-2xl);
    margin-bottom: var(--spacing-sm);
}

.user-stat-content h4,
.business-stat-content h4,
.support-stat-content h4 {
    font-size: var(--font-size-sm);
    margin: 0 0 var(--spacing-xs);
    color: var(--color-gray-600);
}

.user-stat-value,
.business-stat-value,
.support-stat-value {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
    margin: 0;
}

.settings-cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: var(--spacing-md);
}

.settings-card {
    background-color: var(--color-gray-100);
    border-radius: var(--border-radius-md);
    padding: var(--spacing-lg);
    text-align: center;
}

.settings-icon {
    font-size: var(--font-size-2xl);
    margin-bottom: var(--spacing-md);
}

.settings-card h4 {
    margin-bottom: var(--spacing-sm);
}

.settings-card p {
    color: var(--color-gray-600);
    margin-bottom: var(--spacing-md);
    font-size: var(--font-size-sm);
}

/* -----------------------------
 * 7. Context Menus and Modals
 * -----------------------------
 */

/* Context Menu Styles */
.actions-column {
    width: 80px;
    text-align: center;
}

.actions-btn {
    background: none;
    border: none;
    font-size: 18px;
    cursor: pointer;
    padding: 5px 10px;
    border-radius: 4px;
    transition: background-color 0.2s;
}

.actions-btn:hover {
    background-color: var(--color-gray-100);
}

.context-menu {
    position: absolute;
    background: var(--color-white);
    border: 1px solid var(--color-gray-300);
    border-radius: var(--border-radius-md);
    box-shadow: var(--shadow-lg);
    z-index: 1000;
    min-width: 120px;
    display: none;
}

.context-menu-item {
    padding: 8px 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
    border-bottom: 1px solid var(--color-gray-200);
    transition: background-color var(--transition-fast);
}

.context-menu-item:last-child {
    border-bottom: none;
}

.context-menu-item:hover {
    background-color: var(--color-gray-100);
}

.context-menu-item.delete:hover {
    background-color: rgba(231, 76, 60, 0.1);
    color: var(--color-error);
}

/* Modal Styles */
.modal {
    display: none;
    position: fixed;
    z-index: 9999;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0,0,0,0.6);
}

.modal-content {
    background-color: var(--color-white);
    margin: 10% auto;
    padding: var(--spacing-lg);
    border-radius: var(--border-radius-lg);
    width: 90%;
    max-width: 500px;
    position: relative;
    box-shadow: var(--shadow-xl);
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid var(--color-gray-200);
}

.modal-close {
    background: none;
    border: none;
    font-size: 24px;
    cursor: pointer;
    color: var(--color-gray-500);
    transition: color var(--transition-fast);
}

.modal-close:hover {
    color: var(--color-gray-800);
}

.form-group {
    margin-bottom: var(--spacing-md);
}

.form-group label {
    display: block;
    margin-bottom: var(--spacing-xs);
    font-weight: var(--font-weight-medium);
    color: var(--color-gray-700);
}

.form-group input,
.form-group select {
    width: 100%;
    padding: var(--spacing-sm);
    border: 1px solid var(--color-gray-300);
    border-radius: var(--border-radius-md);
    font-size: var(--font-size-sm);
    box-sizing: border-box;
    transition: border-color var(--transition-fast);
}

.form-group input:focus,
.form-group select:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.25);
}

.modal-buttons {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: flex-end;
    margin-top: var(--spacing-lg);
}

.btn {
    padding: var(--spacing-sm) var(--spacing-md);
    border: none;
    border-radius: var(--border-radius-md);
    cursor: pointer;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    transition: all var(--transition-fast);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-primary {
    background-color: var(--color-primary);
    color: var(--color-white);
}

.btn-primary:hover {
    background-color: var(--color-primary-dark);
}

.btn-primary:disabled {
    background-color: var(--color-gray-400);
    cursor: not-allowed;
}

.btn-danger {
    background-color: var(--color-error);
    color: var(--color-white);
}

.btn-danger:hover {
    background-color: var(--color-accent-dark);
}

.btn-danger:disabled {
    background-color: var(--color-gray-400);
    cursor: not-allowed;
}

.btn-secondary {
    background-color: var(--color-gray-500);
    color: var(--color-white);
}

.btn-secondary:hover {
    background-color: var(--color-gray-600);
}

.loading {
    opacity: 0.6;
    pointer-events: none;
}

/* -----------------------------
 * 8. Responsive Adaptations
 * -----------------------------
 */

/* Small devices (landscape phones, 576px and up) */
@media (max-width: 576px) {
    .auth-container {
        flex-direction: column;
        max-width: 100%;
        margin: var(--spacing-md);
    }
    
    .auth-info {
        display: none;
    }
    
    .dashboard-stats {
        grid-template-columns: 1fr;
    }
    
    .dashboard-row {
        flex-direction: column;
    }
    
    .booking-card {
        flex-direction: column;
    }
    
    .booking-date {
        width: 100%;
        flex-direction: row;
        justify-content: center;
        gap: var(--spacing-sm);
    }
    
    .booking-actions {
        flex-direction: row;
        border-left: none;
        border-top: 1px solid var(--color-gray-200);
    }
    
    .search-bar {
        display: none;
    }
    
    .user-name {
        display: none;
    }
    
    .modal-content {
        width: 95%;
        margin: 5% auto;
    }
}

/* Medium devices (tablets, 768px and up) */
@media (max-width: 768px) {
    .dashboard-sidebar {
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        z-index: var(--z-index-fixed);
        transform: translateX(-100%);
    }
    
    .dashboard-sidebar.active {
        transform: translateX(0);
    }
    
    .menu-toggle {
        display: block;
    }
    
    .performance-metrics,
    .user-stats,
    .business-stats,
    .support-stats {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .settings-cards {
        grid-template-columns: 1fr;
    }
}

/* Large devices (desktops, 992px and up) */
@media (min-width: 992px) {
    .menu-toggle {
        display: none;
    }
}


/* -----------------------------
 * 9. Logout Success Alert
 * -----------------------------
 */
.alert-success {
    background-color: #d4edda;
    border: 1px solid #c3e6cb;
    color: #155724;
    padding: 12px 16px;
    border-radius: 6px;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    animation: slideDown 0.3s ease-out;
}

.alert-icon {
    font-size: 16px;
    flex-shrink: 0;
}

.alert-message {
    flex-grow: 1;
}

@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Auto-hide the alert after 5 seconds */
.alert-success.auto-hide {
    animation: slideDown 0.3s ease-out, fadeOut 0.5s ease-out 4.5s forwards;
}

@keyframes fadeOut {
    from {
        opacity: 1;
        transform: translateY(0);
    }
    to {
        opacity: 0;
        transform: translateY(-10px);
    }
}