.ride-card { position: relative; border-radius: 16px !important; transition: all 0.3s ease; cursor: pointer; overflow: visible; &:hover { transform: translateY(-4px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12) !important; } &--offer { border-left: 4px solid #4caf50 !important; } &--request { border-left: 4px solid #f44336 !important; } &--featured { background: linear-gradient(135deg, #fff9c4 0%, #fff 30%); border-color: #ffc107 !important; } &--compact { .ride-card__header { padding: 12px; } .ride-card__route { padding: 8px 12px; } .ride-card__footer { padding: 8px 12px; } } // Type Badge &__type-badge { position: absolute; top: -8px; left: 16px; display: flex; align-items: center; gap: 4px; background: white; padding: 4px 12px; border-radius: 20px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); z-index: 1; } &__type-icon { font-size: 12px; } &__type-label { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; } &__status { top: 8px !important; right: 8px !important; } // Header &__header { display: flex; justify-content: space-between; align-items: flex-start; padding: 16px; padding-top: 20px; } &__user { display: flex; align-items: center; gap: 12px; cursor: pointer; &:hover .ride-card__user-name { color: var(--q-primary); } } &__avatar { background: linear-gradient(135deg, var(--q-primary), var(--q-secondary)); color: white; font-weight: 600; font-size: 14px; } &__user-info { display: flex; flex-direction: column; } &__user-name { font-weight: 600; font-size: 15px; transition: color 0.2s ease; } &__user-rating { display: flex; align-items: center; gap: 4px; font-size: 13px; color: var(--q-grey); } &__datetime { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--q-grey-7); background: rgba(0, 0, 0, 0.04); padding: 6px 12px; border-radius: 20px; } // Route &__route { padding: 16px; } &__route-visual { display: flex; flex-direction: column; gap: 0; } &__location { display: flex; align-items: center; gap: 12px; &--start { .ride-card__location-dot { background: #4caf50; } } &--end { .ride-card__location-dot { background: #f44336; } } } &__location-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; position: relative; &::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 20px; height: 20px; border-radius: 50%; background: inherit; opacity: 0.2; } } &__location-info { display: flex; flex-direction: column; flex: 1; } &__location-city { font-weight: 600; font-size: 16px; } &__location-time { font-size: 12px; color: var(--q-grey); } &__route-line { display: flex; align-items: center; padding-left: 5px; margin: 4px 0; min-height: 24px; } &__route-line-inner { width: 2px; height: 100%; min-height: 24px; background: repeating-linear-gradient( to bottom, var(--q-grey-4) 0px, var(--q-grey-4) 4px, transparent 4px, transparent 8px ); } &__waypoints-indicator { display: flex; align-items: center; gap: 4px; margin-left: 12px; font-size: 12px; color: var(--q-primary); cursor: pointer; padding: 4px 8px; border-radius: 12px; transition: background 0.2s ease; &:hover { background: rgba(var(--q-primary-rgb), 0.1); } } &__waypoints-list { margin-top: 8px; padding-left: 24px; display: flex; flex-direction: column; gap: 4px; } &__waypoint { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--q-grey-7); } // Info &__info { padding: 12px 16px; } &__info-grid { display: flex; flex-wrap: wrap; gap: 16px; } &__info-item { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--q-grey-8); } &__preferences { display: flex; align-items: center; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--q-grey-4); } &__pref-icon { font-size: 16px; cursor: help; } // Footer &__footer { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: rgba(0, 0, 0, 0.02); } &__contribution { display: flex; flex-direction: column; } &__price { font-size: 20px; font-weight: 700; color: var(--q-primary); } &__price-label { font-size: 11px; color: var(--q-grey); } &__price-free { font-size: 16px; font-weight: 600; color: #4caf50; } &__contrib-types { display: flex; flex-wrap: wrap; gap: 4px; } } // Expand animation .expand-enter-active, .expand-leave-active { transition: all 0.3s ease; overflow: hidden; } .expand-enter-from, .expand-leave-to { opacity: 0; max-height: 0; } .expand-enter-to, .expand-leave-from { max-height: 200px; } // Dark mode .body--dark { .ride-card { &__type-badge { background: #2d2d2d; } &__datetime { background: rgba(255, 255, 255, 0.08); } &__footer { background: rgba(255, 255, 255, 0.04); } &--featured { background: linear-gradient(135deg, rgba(255, 193, 7, 0.15) 0%, transparent 30%); } } }