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 }