github.com/pelicanplatform/pelican@v1.0.5/web_ui/frontend/app/page.module.css (about)

     1  /***************************************************************
     2   *
     3   * Copyright (C) 2023, Pelican Project, Morgridge Institute for Research
     4   *
     5   * Licensed under the Apache License, Version 2.0 (the "License"); you
     6   * may not use this file except in compliance with the License.  You may
     7   * obtain a copy of the License at
     8   *
     9   *    http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   ***************************************************************/
    18  
    19  .main {
    20    display: flex;
    21    flex-direction: column;
    22    justify-content: space-between;
    23    align-items: center;
    24    padding: 6rem;
    25    min-height: 100vh;
    26  }
    27  
    28  .description {
    29    display: inherit;
    30    justify-content: inherit;
    31    align-items: inherit;
    32    font-size: 0.85rem;
    33    max-width: var(--max-width);
    34    width: 100%;
    35    z-index: 2;
    36    font-family: var(--font-mono);
    37  }
    38  
    39  .description a {
    40    display: flex;
    41    justify-content: center;
    42    align-items: center;
    43    gap: 0.5rem;
    44  }
    45  
    46  .description p {
    47    position: relative;
    48    margin: 0;
    49    padding: 1rem;
    50    background-color: rgba(var(--callout-rgb), 0.5);
    51    border: 1px solid rgba(var(--callout-border-rgb), 0.3);
    52    border-radius: var(--border-radius);
    53  }
    54  
    55  .code {
    56    font-weight: 700;
    57    font-family: var(--font-mono);
    58  }
    59  
    60  .grid {
    61    display: grid;
    62    grid-template-columns: repeat(4, minmax(25%, auto));
    63    width: var(--max-width);
    64    max-width: 100%;
    65  }
    66  
    67  .card {
    68    padding: 1rem 1.2rem;
    69    border-radius: var(--border-radius);
    70    background: rgba(var(--card-rgb), 0);
    71    border: 1px solid rgba(var(--card-border-rgb), 0);
    72    transition: background 200ms, border 200ms;
    73  }
    74  
    75  .card span {
    76    display: inline-block;
    77    transition: transform 200ms;
    78  }
    79  
    80  .card h2 {
    81    font-weight: 600;
    82    margin-bottom: 0.7rem;
    83  }
    84  
    85  .card p {
    86    margin: 0;
    87    opacity: 0.6;
    88    font-size: 0.9rem;
    89    line-height: 1.5;
    90    max-width: 30ch;
    91  }
    92  
    93  .header::before {
    94    background: conic-gradient( from 180deg at 80% 80%, #16abff 0deg, #0885ff 55deg, #54d6ff 120deg, #0071ff 160deg, #0071ff 360deg );
    95    opacity: 20%;
    96    transition: opacity .5s ease-out;
    97    z-index: -1;
    98    filter: blur(20px);
    99    content: "";
   100    position: absolute;
   101    top: 0; left: 0;
   102    width: 120%; height: 120%;
   103    margin-left: -5%;
   104    margin-top: -1%;
   105  }
   106  
   107  .header::after {
   108    z-index: -2;
   109    content: "";
   110    position: absolute;
   111    top: 0; left: 0;
   112    width: 120%; height: 120%;
   113    margin-left: -5%;
   114    margin-top: -1%;
   115    background-color: white;
   116    transition: opacity .5s ease-out;
   117    opacity: 98%
   118  }
   119  
   120  .headerScrolled::after {
   121    opacity: 0%;
   122    transition: opacity 1s ease-out;
   123  }
   124  
   125  .center::after {
   126    background: var(--primary-glow);
   127    width: 240px;
   128    height: 180px;
   129    z-index: -1;
   130  }
   131  
   132  .center::before,
   133  .center::after {
   134    content: '';
   135    left: 50%;
   136    position: absolute;
   137    filter: blur(45px);
   138    transform: translateZ(0);
   139  }
   140  
   141  .logo {
   142    position: relative;
   143  }
   144  /* Enable hover only on non-touch devices */
   145  @media (hover: hover) and (pointer: fine) {
   146    .card:hover {
   147      background: rgba(var(--card-rgb), 0.1);
   148      border: 1px solid rgba(var(--card-border-rgb), 0.15);
   149    }
   150  
   151    .card:hover span {
   152      transform: translateX(4px);
   153    }
   154  }
   155  
   156  @media (prefers-reduced-motion) {
   157    .card:hover span {
   158      transform: none;
   159    }
   160  }
   161  
   162  /* Mobile */
   163  @media (max-width: 700px) {
   164    .content {
   165      padding: 4rem;
   166    }
   167  
   168    .grid {
   169      grid-template-columns: 1fr;
   170      margin-bottom: 120px;
   171      max-width: 320px;
   172      text-align: center;
   173    }
   174  
   175    .card {
   176      padding: 1rem 2.5rem;
   177    }
   178  
   179    .card h2 {
   180      margin-bottom: 0.5rem;
   181    }
   182  
   183    .center {
   184      padding: 8rem 0 6rem;
   185    }
   186  
   187    .center::before {
   188      transform: none;
   189      height: 300px;
   190    }
   191  
   192    .description {
   193      font-size: 0.8rem;
   194    }
   195  
   196    .description a {
   197      padding: 1rem;
   198    }
   199  
   200    .description p,
   201    .description div {
   202      display: flex;
   203      justify-content: center;
   204      position: fixed;
   205      width: 100%;
   206    }
   207  
   208    .description p {
   209      align-items: center;
   210      inset: 0 0 auto;
   211      padding: 2rem 1rem 1.4rem;
   212      border-radius: 0;
   213      border: none;
   214      border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25);
   215      background: linear-gradient(
   216              to bottom,
   217              rgba(var(--background-start-rgb), 1),
   218              rgba(var(--callout-rgb), 0.5)
   219      );
   220      background-clip: padding-box;
   221      backdrop-filter: blur(24px);
   222    }
   223  
   224    .description div {
   225      align-items: flex-end;
   226      pointer-events: none;
   227      inset: auto 0 0;
   228      padding: 2rem;
   229      height: 200px;
   230      background: linear-gradient(
   231              to bottom,
   232              transparent 0%,
   233              rgb(var(--background-end-rgb)) 40%
   234      );
   235      z-index: 1;
   236    }
   237  }
   238  
   239  .bgWrap {
   240    position: absolute;
   241    top: 0;
   242    left: 0;
   243    height: 100vh;
   244    width: 100vw;
   245    overflow: hidden;
   246    z-index: -1;
   247  }
   248  
   249  .bgText {
   250    margin: 0;
   251    font-size: 2rem;
   252    line-height: 3rem;
   253    text-align: center;
   254    padding-top: 40vh;
   255    text-shadow: 1px 1px 1px #3c5c5e;
   256  }
   257  
   258  /* Tablet and Smaller Desktop */
   259  @media (min-width: 701px) and (max-width: 1120px) {
   260    .grid {
   261      grid-template-columns: repeat(2, 50%);
   262    }
   263  }
   264  
   265  @keyframes rotate {
   266    from {
   267      transform: rotate(360deg);
   268    }
   269    to {
   270      transform: rotate(0deg);
   271    }
   272  }