an independent Bluesky client using Constellation, PDS Queries, and other services reddwarf.app
frontend spa bluesky reddwarf microcosm client app
99
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 1e8e6b789e568003a15ef32a0038f10224a3767b 280 lines 7.0 kB view raw
1@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Roboto:ital,wght@0,100..900;1,100..900&family=Spectral+SC:wght@500&display=swap'); 2@import "tailwindcss"; 3 4/* @theme { 5 --color-gray-50: oklch(0.984 0.005 220.000); 6 --color-gray-100: oklch(0.968 0.010 220.000); 7 --color-gray-200: oklch(0.929 0.020 222.000); 8 --color-gray-300: oklch(0.869 0.035 220.000); 9 --color-gray-400: oklch(0.704 0.060 218.000); 10 --color-gray-500: oklch(0.554 0.070 218.000); 11 --color-gray-600: oklch(0.446 0.065 218.000); 12 --color-gray-700: oklch(0.372 0.060 218.000); 13 --color-gray-800: oklch(0.279 0.055 220.000); 14 --color-gray-900: oklch(0.208 0.050 222.000); 15 --color-gray-950: oklch(0.129 0.050 222.000); 16} */ 17 18:root { 19 --safe-hue: var(--tw-gray-hue, 28) 20} 21 22@theme { 23 --color-gray-50: oklch(0.984 0.012 var(--safe-hue)); 24 --color-gray-100: oklch(0.968 0.017 var(--safe-hue)); 25 --color-gray-200: oklch(0.929 0.025 var(--safe-hue)); 26 --color-gray-300: oklch(0.869 0.035 var(--safe-hue)); 27 --color-gray-400: oklch(0.704 0.05 var(--safe-hue)); 28 --color-gray-500: oklch(0.554 0.06 var(--safe-hue)); 29 --color-gray-600: oklch(0.446 0.058 var(--safe-hue)); 30 --color-gray-700: oklch(0.372 0.058 var(--safe-hue)); 31 --color-gray-800: oklch(0.279 0.055 var(--safe-hue)); 32 --color-gray-900: oklch(0.208 0.055 var(--safe-hue)); 33 --color-gray-950: oklch(0.129 0.055 var(--safe-hue)); 34} 35 36@layer base { 37 html { 38 color-scheme: light dark; 39 } 40 41 * { 42 @apply border-gray-200 dark:border-gray-800; 43 } 44 45 html, 46 body { 47 @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; 48 } 49 50 .using-mouse * { 51 outline: none !important; 52 } 53} 54 55.gutter{ 56 scrollbar-gutter: stable both-edges; 57} 58 59@media (width >= 64rem /* 1024px */) { 60 html:not(:has(.disablegutter)), 61 body:not(:has(.disablegutter)) { 62 scrollbar-gutter: stable both-edges !important; 63 } 64 html:has(.disablescroll), 65 body:has(.disablescroll) { 66 scrollbar-width: none; 67 overflow-y: hidden; 68 } 69} 70 71.lightbox:has(+.lightbox-sidebar){ 72 opacity: 0; 73} 74 75.scroll-thin { 76 scrollbar-width: thin; 77 /*scrollbar-gutter: stable both-edges !important;*/ 78} 79 80.scroll-none { 81 scrollbar-width: none; 82} 83 84.dangerousFediContent { 85 & a[href]{ 86 text-decoration: none; 87 color: rgb(29, 122, 242); 88 word-break: break-all; 89 } 90} 91 92.font-inter { 93 font-family: "Inter", sans-serif; 94} 95.font-roboto { 96 font-family: "Roboto", sans-serif; 97} 98 99:root { 100 --header-bg-light: color-mix(in srgb, var(--color-white) calc(var(--is-top) * 100%), var(--color-gray-50)); 101 --header-bg-dark: color-mix(in srgb, var(--color-gray-950) calc(var(--is-top) * 100%), var(--color-gray-900)); 102} 103 104:root { 105 --header-bg: var(--header-bg-light); 106} 107@media (prefers-color-scheme: dark) { 108 :root { 109 --header-bg: var(--header-bg-dark); 110 } 111} 112 113:root { 114 --shadow-opacity: calc(1 - var(--is-top)); 115 --tw-shadow-header: 0 2px 8px hsl(0 0% 0% / calc(var(--shadow-opacity) * 0.15)); 116} 117 118 119/* m3 input */ 120:root { 121 --m3input-radius: 6px; 122 --m3input-border-width: .0625rem; 123 --m3input-font-size: 16px; 124 --m3input-transition: 150ms cubic-bezier(.2, .8, .2, 1); 125 /* light theme */ 126 --m3input-bg: var(--color-gray-50); 127 --m3input-border-color: var(--color-gray-400); 128 --m3input-label-color: var(--color-gray-500); 129 --m3input-text-color: var(--color-gray-900); 130 --m3input-focus-color: var(--color-gray-600); 131} 132 133@media (prefers-color-scheme: dark) { 134 :root { 135 --m3input-bg: var(--color-gray-950); 136 --m3input-border-color: var(--color-gray-700); 137 --m3input-label-color: var(--color-gray-400); 138 --m3input-text-color: var(--color-gray-50); 139 --m3input-focus-color: var(--color-gray-400); 140 } 141} 142 143/* reset page *//* 144html, 145body { 146 background: var(--m3input-bg); 147 margin: 0; 148 padding: 1rem; 149 color: var(--m3input-text-color); 150 font-family: system-ui, sans-serif; 151 font-size: var(--m3input-font-size); 152}*/ 153 154/* base wrapper */ 155.m3input-field.m3input-label.m3input-border { 156 position: relative; 157 display: inline-block; 158 width: 100%; 159 /*max-width: 400px;*/ 160} 161 162/* size variants */ 163.m3input-field.size-sm { 164 --m3input-h: 40px; 165} 166 167.m3input-field.size-md { 168 --m3input-h: 48px; 169} 170 171.m3input-field.size-lg { 172 --m3input-h: 56px; 173} 174 175.m3input-field.size-xl { 176 --m3input-h: 64px; 177} 178 179.m3input-field.m3input-label.m3input-border:not(.size-sm):not(.size-md):not(.size-lg):not(.size-xl) { 180 --m3input-h: 48px; 181} 182 183/* outlined input */ 184.m3input-field.m3input-label.m3input-border input { 185 width: 100%; 186 height: var(--m3input-h); 187 border: var(--m3input-border-width) solid var(--m3input-border-color); 188 border-radius: var(--m3input-radius); 189 background: var(--m3input-bg); 190 color: var(--m3input-text-color); 191 font-size: var(--m3input-font-size); 192 padding: 0 12px; 193 box-sizing: border-box; 194 outline: none; 195 transition: border-color var(--m3input-transition), box-shadow var(--m3input-transition); 196} 197 198/* focus ring */ 199.m3input-field.m3input-label.m3input-border input:focus { 200 /*border-color: var(--m3input-focus-color);*/ 201 border-color: var(--m3input-focus-color); 202 box-shadow: 0 0 0 1px var(--m3input-focus-color); 203 /*box-shadow: 0 0 0 2px color-mix(in srgb, var(--focus-color) 20%, transparent);*/ 204} 205 206/* label */ 207.m3input-field.m3input-label.m3input-border label { 208 position: absolute; 209 left: 12px; 210 top: 50%; 211 transform: translateY(-50%); 212 background: var(--m3input-bg); 213 padding: 0 .25em; 214 color: var(--m3input-label-color); 215 pointer-events: none; 216 transition: all var(--m3input-transition); 217} 218 219/* float on focus or when filled */ 220.m3input-field.m3input-label.m3input-border input:focus+label, 221.m3input-field.m3input-label.m3input-border input:not(:placeholder-shown)+label { 222 top: 0; 223 transform: translateY(-50%) scale(.78); 224 left: 0; 225 color: var(--m3input-focus-color); 226} 227 228/* placeholder trick */ 229.m3input-field.m3input-label.m3input-border input::placeholder { 230 color: transparent; 231} 232 233/* radix i love you but like cmon man */ 234body[data-scroll-locked]{ 235 margin-left: var(--removed-body-scroll-bar-size) !important; 236} 237 238/* radix tabs */ 239 240.m3tab[data-radix-collection-item] { 241 flex: 1; 242 display: flex; 243 padding: 12px 8px; 244 align-items: center; 245 justify-content: center; 246 color: var(--color-gray-500); 247 font-weight: 500; 248 &:hover { 249 background-color: var(--color-gray-100); 250 cursor: pointer; 251 } 252 &[aria-selected="true"] { 253 color: var(--color-gray-950); 254 &::before{ 255 content: ""; 256 position: absolute; 257 width: min(80px, 80%); 258 border-radius: 99px 99px 0px 0px ; 259 height: 3px; 260 bottom: 0; 261 background-color: var(--color-gray-400); 262 } 263 } 264} 265 266@media (prefers-color-scheme: dark) { 267 .m3tab[data-radix-collection-item] { 268 color: var(--color-gray-400); 269 &:hover { 270 background-color: var(--color-gray-900); 271 cursor: pointer; 272 } 273 &[aria-selected="true"] { 274 color: var(--color-gray-50); 275 &::before{ 276 background-color: var(--color-gray-500); 277 } 278 } 279 } 280}