minimal.css (4079B)
1 /* 2 BSD Zero Clause License 3 4 Copyright (c) 2026 Brook Jeynes <me@brookjeynes.dev> 5 6 Permission to use, copy, modify, and/or distribute this software for any 7 purpose with or without fee is hereby granted. 8 9 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 10 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 12 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 14 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 *, 19 *::before, 20 *::after { 21 box-sizing: border-box; 22 } 23 24 :root { 25 --primary: #4070a0; 26 --text: #1a1a1a; 27 --secondary: #808080; 28 --off-white: #f7f7f7; 29 --light-gray: #e8e8e8; 30 --dark-gray: #c0c0c0; 31 --red: #a05050; 32 --green: #5a9060; 33 } 34 35 body { 36 font-family: 'Georgia', serif; 37 font-size: 16px; 38 color: var(--text); 39 margin: 0; 40 padding: 0.5rem 1.5rem; 41 max-width: 900px; 42 margin-left: auto; 43 margin-right: auto; 44 } 45 46 h1 { 47 font-size: 32px; 48 font-weight: normal; 49 line-height: 40px; 50 margin-top: 40px; 51 } 52 53 h2 { 54 font-size: 16px; 55 font-weight: bold; 56 margin-top: 24px; 57 } 58 59 a, 60 a:visited { 61 color: inherit; 62 text-decoration-thickness: 1px; 63 text-underline-offset: 3px; 64 65 &:hover { 66 color: var(--primary); 67 } 68 } 69 70 footer[role="contentinfo"] { 71 margin: 2rem 0; 72 font-size: 75%; 73 color: var(--secondary); 74 } 75 76 button { 77 font: inherit; 78 cursor: pointer; 79 background: none; 80 border: none; 81 padding: 0; 82 color: inherit; 83 84 &:disabled { 85 opacity: 0.35; 86 cursor: default; 87 } 88 89 &:hover:not(:disabled) { 90 text-decoration: underline; 91 text-decoration-thickness: 1px; 92 text-underline-offset: 3px; 93 } 94 95 &:focus-visible { 96 outline: 2px solid var(--primary); 97 outline-offset: 2px; 98 } 99 100 &.-primary { 101 font-weight: bold; 102 } 103 104 &.-secondary { 105 color: var(--secondary); 106 } 107 } 108 109 .section-label { 110 font-size: 14px; 111 font-weight: bold; 112 113 &.-muted { 114 color: var(--secondary); 115 } 116 } 117 118 .alert-box { 119 font-size: 14px; 120 121 &.-error { 122 color: var(--red); 123 } 124 125 &.-success { 126 color: var(--green); 127 } 128 129 &.-info { 130 color: var(--primary); 131 } 132 } 133 134 select { 135 font: inherit; 136 border: none; 137 border-bottom: 1px solid var(--dark-gray); 138 background: none; 139 padding: 2px 0; 140 cursor: pointer; 141 142 &:focus { 143 outline: none; 144 border-bottom-color: var(--primary); 145 } 146 147 &:focus-visible { 148 outline: 2px solid var(--primary); 149 outline-offset: 2px; 150 border-bottom-color: transparent; 151 } 152 } 153 154 input { 155 156 &[type="radio"], 157 &[type="checkbox"] { 158 cursor: pointer; 159 } 160 161 &:focus-visible { 162 outline: 2px solid var(--primary); 163 outline-offset: 2px; 164 } 165 166 &[type="text"], 167 &[type="email"], 168 &[type="password"], 169 &[type="search"], 170 &[type="tel"], 171 &[type="url"], 172 &[type="number"] { 173 font: inherit; 174 border: none; 175 border-bottom: 1px solid var(--dark-gray); 176 background: none; 177 padding: 2px 0; 178 179 &:focus { 180 outline: none; 181 border-bottom-color: var(--primary); 182 } 183 } 184 } 185 186 fieldset { 187 border: none; 188 padding: 0; 189 margin: 12px 0; 190 } 191 192 legend { 193 font-weight: bold; 194 padding: 0; 195 margin-bottom: 8px; 196 } 197 198 hr { 199 margin: 20px 0; 200 border: none; 201 border-top: 1px solid var(--light-gray); 202 } 203 204 label { 205 & input { 206 margin: 8px 0; 207 } 208 } 209 210 header[role="banner"] { 211 display: flex; 212 align-items: center; 213 justify-content: space-between; 214 gap: 15px; 215 } 216 217 nav { 218 219 ol, 220 ul { 221 display: flex; 222 gap: 15px; 223 list-style: none; 224 } 225 226 a { 227 text-decoration: none; 228 } 229 230 a[aria-selected="true"] { 231 text-decoration: underline; 232 text-decoration-thickness: 1px; 233 text-underline-offset: 3px; 234 } 235 } 236 237 [role="tablist"] { 238 display: flex; 239 gap: 15px; 240 241 [role="tab"][aria-selected="true"] { 242 text-decoration: underline; 243 text-decoration-thickness: 1px; 244 text-underline-offset: 3px; 245 } 246 } 247 248 table { 249 border-collapse: separate; 250 border: 2px solid var(--dark-gray); 251 text-align: left; 252 } 253 254 thead { 255 background-color: var(--off-white); 256 257 th { 258 border: 1px solid var(--dark-gray); 259 } 260 } 261 262 th, 263 td { 264 padding: 0.1rem 0.5rem; 265 } 266 267 tbody>tr:nth-of-type(even) { 268 background-color: var(--light-gray); 269 }