style.css (5609B)
1 * { 2 margin: 0; 3 padding: 0; 4 box-sizing: border-box; 5 } 6 7 :root { 8 --bg: #0d0d0d; 9 --bg-alt: #161616; 10 --fg: #c0c0c0; 11 --fg-dim: #606060; 12 --accent: #d7af5f; 13 --accent-dim: #a68a3d; 14 --cyan: #5fafaf; 15 --blue: #5f87d7; 16 --light-blue: #5fafff; 17 --yellow: #d7af5f; 18 --magenta: #af5faf; 19 --red: #d75f5f; 20 --border: #333; 21 --selection: #3d3520; 22 } 23 24 @font-face { 25 font-family: "JetBrains Mono"; 26 src: url("https://cdn.jsdelivr.net/npm/@fontsource/jetbrains-mono@5.0.18/files/jetbrains-mono-latin-400-normal.woff2") 27 format("woff2"); 28 font-weight: 400; 29 } 30 31 body { 32 background: var(--bg); 33 color: var(--fg); 34 font-family: "JetBrains Mono", "SF Mono", "Fira Code", monospace; 35 font-size: 14px; 36 line-height: 1.5; 37 min-height: 100vh; 38 overflow: hidden; 39 } 40 41 ::-webkit-scrollbar { 42 width: 8px; 43 } 44 45 ::-webkit-scrollbar-track { 46 background: var(--bg); 47 } 48 49 ::-webkit-scrollbar-thumb { 50 background: var(--fg-dim); 51 border-radius: 4px; 52 } 53 54 ::-webkit-scrollbar-thumb:hover { 55 background: var(--fg); 56 } 57 58 a { 59 color: var(--light-blue); 60 text-decoration: none; 61 } 62 63 a:hover { 64 opacity: 0.8; 65 } 66 67 #app { 68 display: flex; 69 flex-direction: column; 70 height: 100vh; 71 opacity: 0; 72 } 73 74 #app.ready { 75 opacity: 1; 76 } 77 78 #content { 79 flex: 1; 80 overflow-y: auto; 81 padding: 24px; 82 } 83 84 /* Header / Tabs */ 85 #tabs { 86 display: flex; 87 align-items: center; 88 gap: 4px; 89 background: var(--bg-alt); 90 border-bottom: 1px solid var(--border); 91 padding: 0 12px; 92 height: 36px; 93 position: sticky; 94 top: 0; 95 z-index: 100; 96 user-select: none; 97 } 98 99 #tabs * { 100 user-select: none; 101 } 102 103 .tab-nav { 104 display: flex; 105 align-items: center; 106 gap: 4px; 107 } 108 109 .tab { 110 padding: 6px 12px; 111 color: var(--fg-dim); 112 cursor: pointer; 113 border-bottom: 2px solid transparent; 114 transition: color 0.15s, border-color 0.15s; 115 } 116 117 .tab:hover { 118 color: var(--fg); 119 } 120 121 .tab.active { 122 color: var(--accent); 123 border-bottom-color: var(--accent); 124 } 125 126 .tab-spacer { 127 flex: 1; 128 } 129 130 .status { 131 display: flex; 132 align-items: center; 133 gap: 8px; 134 color: var(--fg-dim); 135 font-size: 11px; 136 margin-right: 8px; 137 } 138 139 .dpad { 140 display: inline-flex; 141 flex-direction: column; 142 align-items: center; 143 gap: 1px; 144 font-size: 8px; 145 line-height: 1; 146 } 147 148 .dpad-row { 149 display: flex; 150 gap: 1px; 151 } 152 153 .dpad-key { 154 width: 12px; 155 height: 10px; 156 display: flex; 157 align-items: center; 158 justify-content: center; 159 background: var(--border); 160 border-radius: 2px; 161 color: var(--fg); 162 } 163 164 /* Footer / Status Bar */ 165 #statusbar { 166 display: flex; 167 align-items: center; 168 background: var(--bg-alt); 169 border-top: 1px solid var(--border); 170 padding: 0 12px; 171 height: 24px; 172 font-size: 12px; 173 position: sticky; 174 bottom: 0; 175 z-index: 100; 176 } 177 178 #statusbar .time { 179 color: var(--cyan); 180 } 181 182 #statusbar .spacer { 183 flex: 1; 184 } 185 186 #statusbar .wakatime { 187 color: var(--magenta); 188 text-decoration: none; 189 } 190 191 #statusbar .wakatime:hover { 192 opacity: 0.8; 193 } 194 195 /* Boot Animation */ 196 #boot-overlay { 197 position: fixed; 198 top: 0; 199 left: 0; 200 width: 100vw; 201 height: 100vh; 202 background: var(--bg); 203 z-index: 9999; 204 display: flex; 205 align-items: center; 206 justify-content: center; 207 overflow: hidden; 208 } 209 210 #boot-overlay.fade-out { 211 animation: bootFadeOut 0.3s ease-out forwards; 212 } 213 214 .boot-terminal { 215 text-align: center; 216 } 217 218 .boot-text { 219 display: flex; 220 flex-direction: column; 221 gap: 8px; 222 } 223 224 .boot-title { 225 font-family: "JetBrains Mono", "SF Mono", monospace; 226 font-size: 32px; 227 font-weight: 600; 228 color: var(--accent); 229 letter-spacing: -0.5px; 230 } 231 232 .boot-subtitle { 233 font-family: "JetBrains Mono", "SF Mono", monospace; 234 font-size: 14px; 235 color: var(--fg-dim); 236 letter-spacing: 0.5px; 237 } 238 239 @keyframes bootFadeOut { 240 0% { opacity: 1; } 241 100% { opacity: 0; } 242 } 243 244 #app.boot-reveal { 245 animation: revealContent 0.5s ease-out; 246 } 247 248 @keyframes revealContent { 249 0% { opacity: 0; transform: translateY(15px); } 250 100% { opacity: 1; transform: translateY(0); } 251 } 252 253 /* Help Overlay */ 254 #help-overlay { 255 position: fixed; 256 top: 0; 257 left: 0; 258 width: 100vw; 259 height: 100vh; 260 background: rgba(0, 0, 0, 0.8); 261 z-index: 9998; 262 display: flex; 263 align-items: center; 264 justify-content: center; 265 opacity: 0; 266 visibility: hidden; 267 transition: opacity 0.2s, visibility 0.2s; 268 } 269 270 #help-overlay.visible { 271 opacity: 1; 272 visibility: visible; 273 } 274 275 .help-modal { 276 background: var(--bg); 277 border: 1px solid var(--border); 278 padding: 20px 24px; 279 min-width: 280px; 280 max-width: 90vw; 281 } 282 283 .help-header { 284 display: flex; 285 justify-content: space-between; 286 align-items: center; 287 margin-bottom: 16px; 288 padding-bottom: 12px; 289 border-bottom: 1px solid var(--border); 290 } 291 292 .help-title { 293 color: var(--accent); 294 font-weight: 600; 295 } 296 297 .help-close { 298 color: var(--fg-dim); 299 font-size: 11px; 300 } 301 302 .help-content { 303 display: flex; 304 flex-direction: column; 305 gap: 8px; 306 } 307 308 .help-row { 309 display: flex; 310 justify-content: space-between; 311 align-items: center; 312 gap: 24px; 313 } 314 315 .help-key { 316 color: var(--cyan); 317 font-family: "JetBrains Mono", monospace; 318 font-size: 12px; 319 min-width: 60px; 320 } 321 322 .help-desc { 323 color: var(--fg); 324 font-size: 13px; 325 } 326 327 /* Mobile */ 328 @media (max-width: 768px) { 329 body { 330 font-size: 13px; 331 overflow-y: auto; 332 } 333 334 #app { 335 min-height: 100vh; 336 height: auto; 337 } 338 339 #tabs { 340 flex-wrap: wrap; 341 height: auto; 342 min-height: 36px; 343 padding: 8px 12px; 344 gap: 8px; 345 } 346 347 .tab-nav { 348 width: 100%; 349 justify-content: space-between; 350 gap: 0; 351 } 352 353 .tab { 354 padding: 6px 8px; 355 font-size: 12px; 356 flex: 1; 357 text-align: center; 358 } 359 360 .tab-spacer, 361 .status { 362 display: none; 363 } 364 365 .help-modal { 366 padding: 16px 20px; 367 min-width: 260px; 368 } 369 }