<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<div class="not-found-page">
  <div class="not-found-page__content">
    <div class="not-found-page__title">
      <img class="not-found-page__title-img" src="./assets/hot-found/logo.svg" alt="logo">
      <h3 class="not-found-page__title-text">Material Admin</h3>
    </div>

    <mat-card class="not-found-page__card">
      <mat-card-content class="not-found-page__content">
        <h1 class="not-found-page__card-title">404</h1>
        <p class="not-found-page__card-sub-title">Oops. Looks like the page you're looking for no longer exists</p>
        <p class="not-found-page__card-sub-title-second">But we're here to bring you back to safety</p>
        <button class="not-found-page__card-button" mat-raised-button color="primary"
                [routerLink]="routes.OVERVIEW">Back to Home
        </button>
      </mat-card-content>
    </mat-card>
  </div>
</div>
