main.css (7.1 KB)
1 /* custom colors */ 2 :root { 3 --coconut: #ffffff; 4 --licorice: #000000; 5 --wasabi: #ccff00; 6 --eggplant: #7700ff; 7 8 --murk: #8e9918; 9 --tadpole: #27350f; 10 --lilypad: #6f8823; 11 --reed: #4a5d23; 12 13 --pollen: #f4a127; 14 --loam: #5a352b; 15 --chlorophyll: #5aa83b; 16 --terracotta: #b15c2e; 17 18 --wheat: #d2c3a3; 19 --earth: #4a3c31; 20 --pumpkin: #cb7c52; 21 --tobacco: #7d6c55; 22 23 --moss: #20302f; 24 --goat-milk: #d8d3c9; 25 --burl: #231f20; 26 --flame: #c63728; 27 28 --soot: #181a1b; 29 --smoke: #e8e6e3; 30 --ash: #252829; 31 --cinder: #ff5532; 32 33 --blue-raspberry: #0458b3; 34 --cola: #1e1515; 35 --bubblegum: #e11761; 36 --taffy: #eaeaea; 37 38 --muscat: #663399; 39 --cask: #722f37; 40 --bloom: #f8f6ff; 41 } 42 43 /* custom fonts */ 44 @font-face { 45 font-family: BasteleurMoonlight; 46 src: url('fonts/Basteleur-Moonlight.ttf') format('truetype'); 47 } 48 49 /* themes */ 50 :root[data-theme="gak"] { 51 --background: var(--coconut); 52 --text: var(--licorice); 53 --highlight: var(--wasabi); 54 --accent: var(--eggplant); 55 --icon: ''; 56 } 57 58 :root[data-theme="swamp"] { 59 --background: var(--murk); 60 --text: var(--tadpole); 61 --highlight: var(--lilypad); 62 --accent: var(--reed); 63 --icon: '🦠'; 64 } 65 66 :root[data-theme="sunflower"] { 67 --background: var(--pollen); 68 --text: var(--loam); 69 --highlight: var(--chlorophyll); 70 --accent: var(--terracotta); 71 --icon: '🌻'; 72 } 73 74 :root[data-theme="harvest"] { 75 --background: var(--wheat); 76 --text: var(--earth); 77 --highlight: var(--pumpkin); 78 --accent: var(--tobacco); 79 --icon: '🌾'; 80 } 81 82 :root[data-theme="medieval"] { 83 --background: var(--moss); 84 --text: var(--goat-milk); 85 --highlight: var(--burl); 86 --accent: var(--flame); 87 --icon: '⚔️'; 88 & input[type="text"] { 89 font-family: BasteleurMoonlight, Arial, sans-serif; 90 } 91 } 92 93 :root[data-theme="woodstove"] { 94 --background: var(--soot); 95 --text: var(--smoke); 96 --highlight: var(--ash); 97 --accent: var(--cinder); 98 --icon: '🪵'; 99 & input[type="text"] { 100 font-family: BasteleurMoonlight, Arial, sans-serif; 101 } 102 .parent-task { 103 --text: var(--cinder) 104 } 105 } 106 107 :root[data-theme="sugar"] { 108 --background: var(--cola); 109 --text: var(--taffy); 110 --highlight: var(--blue-raspberry); 111 --accent: var(--bubblegum); 112 --icon: '🍬'; 113 114 .checkbox-label { 115 border-radius: 10px; 116 } 117 .active { 118 border-radius: 30px 0px 0px 30px; 119 } 120 .custom-checkbox:checked + .checkbox-label::before { 121 display: none; 122 } 123 & input[type="text"] { 124 text-shadow: 1px 1px 1px var(--cola); 125 } 126 input[type="text"]::selection { 127 color: var(--text); 128 } 129 } 130 131 :root[data-theme="vineyard"] { 132 --background: var(--bloom); 133 --text: var(--cask); 134 --highlight: var(--muscat); 135 --accent: var(--muscat); 136 --icon: '🍇'; 137 & input[type="text"] { 138 font-family: BasteleurMoonlight; 139 } 140 input[type="text"]::selection { 141 background-color: var(--background); 142 color: var(--text); 143 text-shadow: none; 144 } 145 .active { 146 border-radius: 30px 0px 0px 30px; 147 } 148 .active input[type="text"] { 149 color: var(--bloom); 150 text-shadow: 1px 1px 2px black; 151 } 152 .checkbox-label { 153 border-radius: 50%; 154 border: none; 155 background: radial-gradient(circle at 30% 30%, #d4a5d8, #b19cd9, #8a4baf); 156 box-shadow: 157 inset 1px 1px 3px rgba(0,0,0,0.4), 158 inset -1px -1px 2px rgba(255,255,255,0.3), 159 0 1px 2px rgba(0,0,0,0.3); 160 } 161 .custom-checkbox:checked + .checkbox-label { 162 background: radial-gradient(circle at 30% 30%, #b19cd9, #8a4baf, #663399); 163 box-shadow: 164 inset -2px -2px 4px rgba(0,0,0,0.3), 165 inset 1px 1px 2px rgba(255,255,255,0.5), 166 1px 1px 2px rgba(0,0,0,0.6); 167 } 168 .active .custom-checkbox:checked + .checkbox-label { 169 box-shadow: 170 inset -2px -2px 4px rgba(0,0,0,0.3), 171 inset 1px 1px 2px rgba(255,255,255,0.5), 172 3px 3px 6px rgba(0,0,0,0.6); 173 } 174 .custom-checkbox:checked + .checkbox-label::before { 175 display: none; 176 } 177 .custom-checkbox:indeterminate + .checkbox-label::before { 178 content: ''; 179 position: absolute; 180 left: 50%; 181 top: 50%; 182 width: 50%; 183 height: 50%; 184 border-radius: 50%; 185 background: radial-gradient(circle at 30% 30%, #b19cd9, #8a4baf, #663399); 186 box-shadow: 187 inset -1px -1px 2px rgba(0,0,0,0.3), 188 inset 0.5px 0.5px 1px rgba(255,255,255,0.5); 189 transform: translate(-50%, -50%); 190 } 191 scrollbar-color: color-mix(in srgb, var(--muscat) 75%, transparent) color-mix(in srgb, var(--bloom) 75%, transparent); 192 } 193 194 /* interface styling */ 195 @keyframes shake { 196 0% { transform: translateX(0); } 197 20% { transform: translateX(3px); } 198 40% { transform: translateX(-3px); } 199 60% { transform: translateX(3px); } 200 80% { transform: translateX(-3px); } 201 100% { transform: translateX(0); } 202 } 203 .shake { 204 animation: shake 0.25s ease-out; 205 } 206 @keyframes shake-vertical { 207 0% { transform: translateY(0); } 208 20% { transform: translateY(3px); } 209 40% { transform: translateY(-3px); } 210 60% { transform: translateY(3px); } 211 80% { transform: translateY(-3px); } 212 100% { transform: translateY(0); } 213 } 214 .shake-vertical { 215 animation: shake-vertical 0.25s ease-out; 216 } 217 html { 218 scroll-behavior: smooth; 219 overflow-y: scroll; 220 overflow-x: hidden; 221 scrollbar-width: auto; 222 scrollbar-color: color-mix(in srgb, var(--text) 75%, transparent) color-mix(in srgb, var(--background) 75%, transparent); 223 } 224 body { 225 font-family: Arial, sans-serif; 226 max-width: 800px; 227 margin: 0 auto; 228 padding: 0px 20px 20px 20px; 229 background-color: var(--background); 230 color: var(--text); 231 } 232 ul { 233 list-style-type: none; 234 padding-left: 20px; 235 } 236 input[type="text"] { 237 border: none; 238 background: transparent; 239 font-size: 1.17em; 240 font-weight: bold; 241 width: calc(100% - 30px); 242 margin-left: 5px; 243 padding: 5px; 244 color: var(--text); 245 overflow: hidden; 246 text-overflow: ellipsis; 247 white-space: nowrap; 248 } 249 input[type="text"]:focus { 250 outline: none; 251 } 252 input[type="text"]::selection { 253 background-color: var(--accent); 254 color: var(--background); 255 } 256 .task-container { 257 display: flex; 258 align-items: center; 259 margin: 5px 0; 260 padding-left: 11px; 261 padding-top: 4px; 262 padding-bottom: 4px; 263 } 264 .active { 265 background-color: var(--highlight); 266 } 267 .sticky-header { 268 position: sticky; 269 top: 0; 270 background-color: var(--background); 271 z-index: 1; 272 padding-top: 20px; 273 } 274 .parent-task { 275 font-size: 1.5em; 276 font-weight: bold; 277 } 278 #breadcrumbs { 279 font-size: 24px; 280 margin-bottom: 10px; 281 color: var(--text); 282 user-select: none; 283 } 284 .custom-checkbox { 285 display: none; 286 } 287 .checkbox-label { 288 display: inline-block; 289 width: 20px; 290 height: 20px; 291 background-color: var(--background); 292 border: 2px solid var(--accent); 293 position: relative; 294 cursor: pointer; 295 box-sizing: border-box; 296 border-radius: 4px; 297 } 298 .custom-checkbox:checked + .checkbox-label { 299 background-color: var(--accent); 300 } 301 .custom-checkbox:checked + .checkbox-label::before { 302 content: ''; 303 position: absolute; 304 left: 6px; 305 top: 2px; 306 width: 5px; 307 height: 10px; 308 border: solid var(--background); 309 border-width: 0 2px 2px 0; 310 transform: rotate(45deg); 311 box-sizing: border-box; 312 } 313 .custom-checkbox:indeterminate + .checkbox-label::before { 314 content: ''; 315 position: absolute; 316 left: 25%; 317 right: 25%; 318 top: 50%; 319 height: 2px; 320 background-color: var(--accent); 321 transform: translateY(-50%); 322 } 323 324 /* print styles */ 325 @media print { 326 body * { 327 visibility: hidden; 328 } 329 #print-content, #print-content * { 330 visibility: visible; 331 } 332 #print-content { 333 position: absolute; 334 left: 0; 335 top: 0; 336 font-family: monospace; 337 font-size: 12pt; 338 line-height: 1.4; 339 white-space: pre-wrap; 340 color: black; 341 background: white; 342 } 343 #app-container { 344 display: none; 345 } 346 }