
 /**
  * Ride card specific
  *//* Floating Refresh Button */
.refresh-icon {
    position: fixed;
    right: 30px;
    top: 20%;
    transform: translateY(-50%);
    background: green;
    color: white;
    padding: 10px;
    border-radius: 50%;
    cursor: pointer;
}

/* Sidebar Tab (Vertical Text) */
.sidebar-tab {
    position: fixed;
    right: 30px;
    top: 50%;
    transform: translateY(-50%) rotate(270deg);
    transform-origin: right top;
    background: #444;
    color: white;
    padding: 5px 15px;
    cursor: pointer;
    font-size: 12px;
    font-weight: bold;
    border-radius: 5px 5px 0 0;
}

/* Sidebar Content (Hidden by Default) */
.side-content {
    position: fixed;
    right: 30px;
    top: 40px;
    width: 250px;
    height: 100%;
    display: none;
    overflow: auto;
    padding: 10px;
    background: #eee;
    box-shadow: -2px 0 5px rgba(0, 0, 0, 0.3);
}

/* Show Sidebar Content with Animation */
.w3-animate-right {
    animation: slideInRight 0.3s forwards;
}

.w3-animate-fading {
    animation: fadeOut 0.3s forwards;
}

/* Close Button for Sidebar */
.close-btn {
    font-size: 18px;
    font-weight: bold;
    cursor: pointer;
    text-align: right;
    padding: 5px;
    background: #aaa;
    color: white;
}

.zw-td-lister-info{
    border-top: 1px solid gray;
}
.zw-address-suggestion.highlighted {
  background-color: #cce7ff !important;
  font-weight: bold;
  border-left: 3px solid #2196F3;
}
.zw-suggestion-list {
    max-height: 100px;
    overflow-y: auto;
    border-top: 1px solid #ccc;
}
.ride-card {
  margin: 1rem 0;
  padding: 1rem;
  transition: all 0.3s ease;
}

.new-ride-highlight {
  animation: highlightPulse 5s ease-out;
}

@keyframes highlightPulse {
  0% { background-color: #ffffcc; }
  100% { background-color: white; }
}

.removing {
  opacity: 0;
  transform: translateX(100%);
}

.accept-btn {
  transition: transform 0.2s;
}

.accept-btn:hover {
  transform: scale(1.05);
}
/* Added status indicators */
.ride-card.accepted,.ride-card.ride-card.accepted  {
  border-left: 4px solid #4CAF50;
}
.ride-card.state-requested  {
  border-left: 4px solid yellow;
}
.action-btn {
  transition: all 0.2s ease;
  min-width: 120px;
}

.w3-red.action-btn:hover {
  background-color: #ff4444 !important;
}

.w3-green.action-btn:hover {
  background-color: #45a049 !important;
}
/* show data source */
.data-freshness {
    margin-left: 5px;
    font-size: 0.8em;
    border-radius: 3px;
    padding: 2px 5px;
}
.data-freshness.fresh {
    background-color: #4CAF50;
    color: white;
}
.data-freshness.cached {
    background-color: #FFC107;
    color: black;
}
.data-timestamp {
    color: #757575;
    font-style: italic;
}

/* Timeline styling */
.data-timeline {
    border-left: 2px solid #ddd;
    margin: 15px 0 15px 25px;
    padding-left: 20px;
}

.timeline-item {
    position: relative;
    margin-bottom: 15px;
}

.timeline-dot {
    position: absolute;
    left: -30px;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #ddd;
    top: 3px;
}

.timeline-item.active .timeline-dot {
    background: #2196F3;
    box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.2);
}

.timeline-content {
    font-size: 0.8em;
    color: #616161;
}

/* Refresh indicator */
.refresh-indicator {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(to right, #2196F3, #4CAF50);
    transform-origin: left;
    transform: scaleX(0);
    transition: transform 0.3s ease;
    z-index: 1000;
}
/* network status */
.network-status {
    position: fixed;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    padding: 8px 16px;
    border-radius: 20px;
    color: white;
    font-size: 14px;
    z-index: 1000;
    animation: slideUp 0.3s ease;
}

.network-status.online {
    background: #4CAF50;
}

.network-status.offline {
    background: #F44336;
}

.network-status.fade-out {
    animation: fadeOut 0.5s ease forwards;
}

@keyframes slideUp {
    from { bottom: -50px; opacity: 0; }
    to { bottom: 20px; opacity: 1; }
}

@keyframes fadeOut {
    to { opacity: 0; }
}
/*-------    -----*/
/* Dashboard State Components */
.dashboard-state-container {
    margin-bottom: 15px;
}

.state-card {
    transition: all 0.3s ease;
    height: 100%;
    display: flex;
    flex-direction: column;
}

.state-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}

.state-value {
    margin: 10px 0;
}

.state-timestamp {
    color: #757575;
    font-style: italic;
}

.freshness-badge {
    margin-left: 5px;
    font-size: 0.7em;
    padding: 2px 5px;
    border-radius: 3px;
}

.freshness-badge.fresh {
    background-color: #4CAF50;
    color: white;
}

.freshness-badge.cached {
    background-color: #FFC107;
    color: black;
}

.loading-indicator {
    height: 40px;
    margin: 10px auto;
    width: 80%;
    position: relative;
}

.loading-bar {
    height: 100%;
    width: 0%;
    background-color: #2196F3;
    border-radius: 4px;
    animation: loadingAnimation 1.5s infinite;
}

@keyframes loadingAnimation {
    0% { width: 0%; opacity: 0.6; }
    50% { width: 100%; opacity: 1; }
    100% { width: 0%; opacity: 0.6; }
}/* State indicators */
.ride-card.state-available {
  border-left: 4px solid #2196F3; /* Blue */
}

.ride-card.state-accepted {
  border-left: 4px solid #4CAF50; /* Green */
}

.ride-card.state-in_progress {
  border-left: 4px solid #FFC107; /* Amber */
}

.ride-card.state-completed {
  border-left: 4px solid #9E9E9E; /* Grey */
}

.ride-card.state-cancelled {
  border-left: 4px solid #F44336; /* Red */
  opacity: 0.6;
}

/* Action button transitions */
.ride-card button {
  transition: all 0.3s ease;
  margin: 2px;
}

.ride-card button:hover {
  transform: scale(1.05);
  box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}


/*  PAYMENTS */
.payment-status .pending { background: orange; }
.payment-status-pending { background: red; }
.payment-status .partial { background: #fff3cd; }
.payment-status .completed { background: #d4edda; }
.payment-status .processing { background: yellowgreen;
.payment-status .refunded { background: #ff4136; }
.payment-status .failed { background: #f8d7da; }.zw-map-ride-new{
    min-height:300px; 
     
}

