at development 8.1 kB view raw
1/* 2 * Lumina/Peonies 3 * Copyright (C) 2018-2026 MLC 'Strawmelonjuice' Bloeiman and contributors. 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU Affero General Public License as published 7 * by the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Affero General Public License for more details. 14 * 15 * You should have received a copy of the GNU Affero General Public License 16 * along with this program. If not, see <https://www.gnu.org/licenses/>. 17 */ 18 19@import "tailwindcss"; 20 21@source "./src/**/*.gleam"; 22 23@font-face { 24 /* The Josefin Sans is used for: 25 * Menu items 26 */ 27 font-family: "Josefin Sans"; 28 src: url(/assets/fonts/Josefin_Sans/JosefinSans-VariableFont_wght.ttf); 29} 30 31@font-face { 32 /* The Syne Font is used for: 33 * Main theme 34 */ 35 font-family: "Vend Sans"; 36 src: url(/assets/fonts/Vend_Sans/VendSans-VariableFont_wght.ttf); 37} 38 39@font-face { 40 /* The Gantari font is used for: 41 * 'Lumina' name typography 42 */ 43 font-family: "Gantari"; 44 src: url(/assets/fonts/Gantari/Gantari-VariableFont_wght.ttf); 45} 46 47@font-face { 48 /* The Elms sans is used for: 49 * (User-generated) Content on pages, form input fields. 50 */ 51 font-family: "Elms Sans"; 52 src: url(/assets/fonts/Elms_Sans/ElmsSans-VariableFont_wght.ttf); 53} 54 55@font-face { 56 /* The DM Mono font is used for: 57 * Code blocks and monospaced text 58 */ 59 font-family: "DM Mono"; 60 src: url(/assets/fonts/DM_Mono/DMMono-Regular.ttf); 61} 62 63@theme { 64 --font-sans: "Vend Sans"; 65 --font-logo: "Gantari"; 66 --font-content: "Elms Sans"; 67 --font-menuitems: "Josefin Sans"; 68 --font-script: "DM Mono"; 69} 70 71@plugin "daisyui" { 72} 73 74@plugin "daisyui/theme" { 75 name: "lumina-light"; 76 default: true; 77 prefersdark: false; 78 color-scheme: "light"; 79 --color-base-100: oklch(96% 0.044 156.743); 80 --color-base-200: oklch(97% 0.071 103.193); 81 --color-base-300: oklch(94% 0.028 342.258); 82 --color-base-content: oklch(51% 0.096 186.391); 83 --color-primary: oklch(87% 0.15 154.449); 84 --color-primary-content: oklch(30% 0.056 229.695); 85 --color-secondary: oklch(51% 0.253 323.949); 86 --color-secondary-content: oklch(94% 0.028 342.258); 87 --color-accent: oklch(80% 0.114 19.571); 88 --color-accent-content: oklch(44% 0.043 257.281); 89 --color-neutral: oklch(98% 0.003 247.858); 90 --color-neutral-content: oklch(12% 0.042 264.695); 91 --color-info: oklch(85% 0.138 181.071); 92 --color-info-content: oklch(29% 0.066 243.157); 93 --color-success: oklch(76% 0.233 130.85); 94 --color-success-content: oklch(37% 0.077 168.94); 95 --color-warning: oklch(70% 0.213 47.604); 96 --color-warning-content: oklch(27% 0.077 45.635); 97 --color-error: oklch(63% 0.237 25.331); 98 --color-error-content: oklch(27% 0.105 12.094); 99 --radius-selector: 0.75rem; 100 --radius-field: 1.25rem; 101 --radius-box: 1.5rem; 102 --size-selector: 0.25rem; 103 --size-field: 0.25rem; 104 --border: 1px; 105 --depth: 1; 106 --noise: 0; 107 /* --spacing: 0.5rem; */ 108} 109 110@plugin "daisyui/theme" { 111 name: "lumina-dark"; 112 default: false; 113 prefersdark: true; 114 color-scheme: "dark"; 115 116 --color-base-100: oklch(14% 0.02 156.743); 117 /* Darker background */ 118 --color-base-200: oklch(20% 0.03 103.193); 119 --color-base-300: oklch(25% 0.02 342.258); 120 --color-base-content: oklch(85% 0.08 186.391); 121 /* Brighter text */ 122 --color-primary: oklch(50% 0.15 154.449); 123 /* Stronger primary */ 124 --color-primary-content: oklch(88% 0.09 229.695); 125 /* Brighter */ 126 --color-secondary: oklch(38% 0.23 323.949); 127 --color-secondary-content: oklch(90% 0.05 342.258); 128 /* Higher contrast */ 129 --color-accent: oklch(55% 0.12 19.571); 130 --color-accent-content: oklch(87% 0.07 257.281); 131 --color-neutral: oklch(12% 0.01 247.858); 132 /* Darker neutral */ 133 --color-neutral-content: oklch(88% 0.06 264.695); 134 /* Higher contrast */ 135 --color-info: oklch(55% 0.14 181.071); 136 --color-info-content: oklch(90% 0.08 243.157); 137 --color-success: oklch(42% 0.22 130.85); 138 --color-success-content: oklch(85% 0.09 168.94); 139 --color-warning: oklch(50% 0.2 47.604); 140 --color-warning-content: oklch(88% 0.08 45.635); 141 --color-error: oklch(45% 0.23 25.331); 142 --color-error-content: oklch(90% 0.11 12.094); 143 --radius-selector: 0.75rem; 144 --radius-field: 1.25rem; 145 --radius-box: 1.5rem; 146 --size-selector: 0.25rem; 147 --size-field: 0.25rem; 148 --border: 1px; 149 --depth: 1; 150 --noise: 0; 151 /* --spacing: 0.5rem; */ 152} 153 154@layer base { 155 html { 156 /* HTML overflow hidden */ 157 overflow: clip; 158 } 159 160 * { 161 /* By default, none is selectable, selectable stuff gets 'text-select' class so tailwind re-enables it there. */ 162 -webkit-user-select: none; 163 user-select: none; 164 } 165 166 /*Pride month banner*/ 167 body:has(.monthclass-6) main::before { 168 margin: 0; 169 content: "Happy Pride Month! 💖🏳️‍🌈"; 170 justify-content: center; 171 align-items: center; 172 height: 1.4em; 173 color: black; 174 width: 100vw; 175 border-radius: 0; 176 display: inline-flex; 177 background-image: linear-gradient( 178 to right, 179 rgb(237, 34, 36), 180 rgb(243, 91, 34), 181 rgb(249, 150, 33), 182 rgb(245, 193, 30), 183 rgb(241, 235, 27) 27%, 184 rgb(241, 235, 27), 185 rgb(241, 235, 27) 33%, 186 rgb(99, 199, 32), 187 rgb(12, 155, 73), 188 rgb(33, 135, 141), 189 rgb(57, 84, 165), 190 rgb(97, 55, 155), 191 rgb(147, 40, 142) 192 ); 193 } 194 195 body:has(.monthclass-6) { 196 --bs: 300% 100%; 197 } 198 199 body:has(.monthclass-6) main:hover::before { 200 animation: prideBannerAnimation 10s linear infinite; 201 } 202 203 @keyframes prideBannerAnimation { 204 0% { 205 } 206 207 25% { 208 background-position: 0 0; 209 background-size: var(--bs); 210 background-repeat: repeat; 211 } 212 213 30% { 214 background-position: 50% 0; 215 content: "Protect LGBTQ+ Rights! 🏳️‍🌈✊"; 216 background-size: var(--bs); 217 background-repeat: repeat; 218 } 219 220 50% { 221 background-position: 100% 0; 222 content: "Protect LGBTQ+ Rights! 🏳️‍🌈✊"; 223 background-size: var(--bs); 224 background-repeat: repeat; 225 } 226 227 75% { 228 background-position: 0 0; 229 background-size: var(--bs); 230 background-repeat: repeat; 231 } 232 233 80% { 234 background-position: 50% 0; 235 content: "Protect LGBTQ+ Rights! 🏳️‍🌈 ✊"; 236 background-size: var(--bs); 237 background-repeat: repeat; 238 } 239 240 100% { 241 } 242 } 243 244 body:has(.monthclass-6):active main::before { 245 animation: none; 246 animation-delay: 3s; 247 animation-duration: 999s; 248 animation-name: transrights; 249 animation-iteration-count: 1; 250 animation-timing-function: ease-in-out; 251 } 252 253 @keyframes transrights { 254 0% { 255 content: "Protect trans Rights! ✊ 🩵🩷🤍🩷🩵"; 256 background-image: linear-gradient( 257 to right, 258 rgb(85, 205, 252), 259 rgb(179, 157, 233), 260 rgb(247, 168, 184), 261 rgb(246, 216, 221), 262 rgb(255, 255, 255) 45%, 263 rgb(255, 255, 255), 264 rgb(255, 255, 255) 55%, 265 rgb(246, 216, 221), 266 rgb(247, 168, 184), 267 rgb(179, 157, 233), 268 rgb(85, 205, 252) 269 ); 270 } 271 } 272 273 /*29th of februari is nonexistent in non-leap years*/ 274 body:has(.dayclass-29.monthclass-2) main::before { 275 margin-top: 0.8em; 276 margin-bottom: 0.8em; 277 content: "[This day does not exist]"; 278 justify-content: center; 279 align-items: center; 280 height: 2.4em; 281 flex: none; 282 color: yellow; 283 width: 100%; 284 display: inline-flex; 285 background-color: black; 286 text-shadow: 22px 4px 2px rgba(255, 255, 0, 0.6); 287 box-shadow: 2px 2px 10px 8px #3d3a3a; 288 animation-name: glitched; 289 animation-duration: 3s; 290 animation-iteration-count: infinite; 291 animation-timing-function: linear; 292 animation-direction: alternate; 293 } 294 295 @keyframes glitched { 296 0% { 297 transform: skew(-20deg); 298 left: -4px; 299 } 300 301 10% { 302 transform: skew(-20deg); 303 left: -4px; 304 } 305 306 11% { 307 transform: skew(0deg); 308 left: 2px; 309 } 310 311 50% { 312 transform: skew(0deg); 313 } 314 315 51% { 316 transform: skew(10deg); 317 } 318 319 59% { 320 transform: skew(10deg); 321 } 322 323 60% { 324 transform: skew(0deg); 325 } 326 327 100% { 328 transform: skew(0deg); 329 } 330 } 331 .lg\:freeroam { 332 @media (width >= 64rem) { 333 left: var(--left); 334 top: var(--top); 335 transform: var(--transform); 336 position: absolute; 337 } 338 } 339}