|
326 | 326 | --shadow-glow: 0 0 0 3px var(--accent-glow); |
327 | 327 | } |
328 | 328 |
|
| 329 | +/* ─── Bat Dark Theme ─── |
| 330 | + Cold tactical-HUD aesthetic modelled on a cave command console: a |
| 331 | + near-black canvas with a faint blue tint, concentric radar rings |
| 332 | + radiating from an off-centre core glow, and steel-cyan accents over |
| 333 | + gunmetal hairline panels. Crisp small radii give the precise, |
| 334 | + instrument-panel feel. Semantic colours stay distinct (a clearly |
| 335 | + readable teal-green / dim-gold / cold-red) so status meaning survives |
| 336 | + the monochrome treatment. Original name to steer clear of anyone's |
| 337 | + masked-vigilante trademarks. */ |
| 338 | +[data-theme="bat"] { |
| 339 | + --bg-primary: #06080c; |
| 340 | + --bg-secondary: #0a0d13; |
| 341 | + --bg-card: #0e131b; |
| 342 | + --bg-card-hover: #131a25; |
| 343 | + --bg-input: #05070b; |
| 344 | + --bg-tertiary: #0c111a; |
| 345 | + --border: #1b2530; |
| 346 | + --border-light: #2b3a48; |
| 347 | + --text-primary: #cdd6e0; |
| 348 | + --text-secondary: #7e8c9b; |
| 349 | + --text-muted: #4d5965; |
| 350 | + --accent: #4ea7d4; |
| 351 | + --accent-light: #86ccea; |
| 352 | + --accent-glow: rgba(78, 167, 212, 0.18); |
| 353 | + --success: #2fb589; |
| 354 | + --success-bg: rgba(47, 181, 137, 0.10); |
| 355 | + --warning: #d6a649; |
| 356 | + --warning-bg: rgba(214, 166, 73, 0.10); |
| 357 | + --danger: #d75763; |
| 358 | + --danger-bg: rgba(215, 87, 99, 0.12); |
| 359 | + --info: #4ea7d4; |
| 360 | + --info-bg: rgba(78, 167, 212, 0.10); |
| 361 | + --gradient-main: linear-gradient(135deg, #2a6f93 0%, #4ea7d4 50%, #86ccea 100%); |
| 362 | + --gradient-success: linear-gradient(135deg, #1f9a78 0%, #2fb589 100%); |
| 363 | + --gradient-danger: linear-gradient(135deg, #b8404c 0%, #d75763 100%); |
| 364 | + --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5); |
| 365 | + --shadow-md: 0 3px 12px rgba(0, 0, 0, 0.55), 0 0 1px rgba(78, 167, 212, 0.10); |
| 366 | + --shadow-lg: 0 14px 44px rgba(0, 0, 0, 0.70), 0 0 28px rgba(20, 70, 110, 0.18); |
| 367 | + --shadow-glow: 0 0 0 3px var(--accent-glow); |
| 368 | + --radius: 3px; |
| 369 | + --radius-sm: 2px; |
| 370 | + --radius-lg: 5px; |
| 371 | +} |
| 372 | + |
| 373 | +/* Bat — concentric radar rings + off-centre core glow on the canvas. |
| 374 | + The repeating-radial-gradient draws faint 1px steel rings every 82px |
| 375 | + around the core; the two radial-gradients lay a cold central glow and |
| 376 | + an outer vignette over them. Fixed so the rings stay put as you scroll. */ |
| 377 | +[data-theme="bat"] body { |
| 378 | + background: |
| 379 | + radial-gradient(circle at 50% 38%, rgba(40, 110, 150, 0.18) 0%, rgba(20, 60, 90, 0.07) 22%, transparent 46%), |
| 380 | + radial-gradient(ellipse at 50% 50%, rgba(8, 24, 40, 0.55) 0%, transparent 75%), |
| 381 | + repeating-radial-gradient(circle at 50% 38%, |
| 382 | + transparent 0, |
| 383 | + transparent 80px, |
| 384 | + rgba(90, 150, 185, 0.045) 81px, |
| 385 | + rgba(90, 150, 185, 0.045) 82px), |
| 386 | + #06080c; |
| 387 | + background-attachment: fixed; |
| 388 | +} |
| 389 | + |
| 390 | +/* Bat — gunmetal sidebar with a faint cold edge glow */ |
| 391 | +[data-theme="bat"] .sidebar { |
| 392 | + background: rgba(8, 11, 17, 0.94); |
| 393 | + border-right: 1px solid var(--border); |
| 394 | + box-shadow: 2px 0 28px rgba(0, 0, 0, 0.6); |
| 395 | +} |
| 396 | + |
| 397 | +/* Bat — top-bar matches the sidebar tone */ |
| 398 | +[data-theme="bat"] .top-bar { |
| 399 | + background: rgba(7, 10, 15, 0.94); |
| 400 | + border-bottom: 1px solid var(--border); |
| 401 | + box-shadow: 0 2px 20px rgba(0, 0, 0, 0.55); |
| 402 | +} |
| 403 | + |
| 404 | +/* Bat — instrument panels: hairline border, faint inner top highlight */ |
| 405 | +[data-theme="bat"] .card, |
| 406 | +[data-theme="bat"] .stat-card { |
| 407 | + background: rgba(14, 19, 27, 0.82); |
| 408 | + border: 1px solid var(--border); |
| 409 | + box-shadow: |
| 410 | + 0 4px 18px rgba(0, 0, 0, 0.55), |
| 411 | + inset 0 1px 0 rgba(120, 180, 215, 0.05); |
| 412 | +} |
| 413 | + |
| 414 | +[data-theme="bat"] .card:hover, |
| 415 | +[data-theme="bat"] .stat-card:hover { |
| 416 | + border-color: var(--border-light); |
| 417 | + box-shadow: |
| 418 | + 0 8px 28px rgba(0, 0, 0, 0.65), |
| 419 | + inset 0 1px 0 rgba(130, 195, 230, 0.08), |
| 420 | + 0 0 22px rgba(30, 90, 130, 0.16); |
| 421 | +} |
| 422 | + |
| 423 | +/* Bat — subtle cold glow on panel headings for the HUD readout feel */ |
| 424 | +[data-theme="bat"] .card h1, |
| 425 | +[data-theme="bat"] .card h2, |
| 426 | +[data-theme="bat"] .card h3, |
| 427 | +[data-theme="bat"] .card-header h3 { |
| 428 | + text-shadow: 0 0 6px rgba(78, 167, 212, 0.22); |
| 429 | +} |
| 430 | + |
| 431 | +/* Bat — deep modals / dropdowns with steel edge */ |
| 432 | +[data-theme="bat"] .modal-content, |
| 433 | +[data-theme="bat"] .dropdown-menu { |
| 434 | + background: rgba(9, 13, 19, 0.97); |
| 435 | + border: 1px solid var(--border-light); |
| 436 | + box-shadow: |
| 437 | + 0 24px 80px rgba(0, 0, 0, 0.8), |
| 438 | + inset 0 1px 0 rgba(120, 180, 215, 0.06); |
| 439 | +} |
| 440 | + |
| 441 | +/* Bat — recessed form inputs */ |
| 442 | +[data-theme="bat"] .form-control, |
| 443 | +[data-theme="bat"] input, |
| 444 | +[data-theme="bat"] select, |
| 445 | +[data-theme="bat"] textarea { |
| 446 | + background: rgba(5, 7, 11, 0.95); |
| 447 | + border-color: var(--border); |
| 448 | + color: var(--text-primary); |
| 449 | + box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.5); |
| 450 | +} |
| 451 | + |
| 452 | +[data-theme="bat"] .form-control:focus, |
| 453 | +[data-theme="bat"] input:focus, |
| 454 | +[data-theme="bat"] select:focus, |
| 455 | +[data-theme="bat"] textarea:focus { |
| 456 | + border-color: rgba(78, 167, 212, 0.5); |
| 457 | + box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.45), 0 0 0 3px var(--accent-glow); |
| 458 | + outline: none; |
| 459 | +} |
| 460 | + |
| 461 | +/* Bat — primary action: steel-cyan gradient with a cold rim light */ |
| 462 | +[data-theme="bat"] .btn-primary { |
| 463 | + background: linear-gradient(135deg, #2a6f93 0%, #4ea7d4 100%); |
| 464 | + border: 1px solid rgba(120, 195, 230, 0.35); |
| 465 | + box-shadow: 0 3px 14px rgba(0, 60, 100, 0.4), inset 0 1px 0 rgba(160, 215, 240, 0.18); |
| 466 | +} |
| 467 | + |
| 468 | +[data-theme="bat"] .btn-primary:hover { |
| 469 | + background: linear-gradient(135deg, #347fa6 0%, #62b6df 100%); |
| 470 | + box-shadow: 0 5px 20px rgba(0, 80, 130, 0.5), inset 0 1px 0 rgba(180, 225, 245, 0.22); |
| 471 | +} |
| 472 | + |
| 473 | +/* Bat — active nav: steel bar + faint glow */ |
| 474 | +[data-theme="bat"] .nav-item.active { |
| 475 | + background: rgba(30, 80, 110, 0.22); |
| 476 | + box-shadow: inset 3px 0 0 var(--accent), 0 0 14px rgba(20, 70, 110, 0.25); |
| 477 | +} |
| 478 | + |
| 479 | +/* Bat — stat icon ring + log readout */ |
| 480 | +[data-theme="bat"] .stat-icon { |
| 481 | + box-shadow: 0 0 10px rgba(78, 167, 212, 0.25), inset 0 1px 0 rgba(160, 215, 240, 0.12); |
| 482 | +} |
| 483 | + |
| 484 | +[data-theme="bat"] .log-viewer { |
| 485 | + background: #04060a; |
| 486 | + color: #9fc4d8; |
| 487 | + box-shadow: inset 0 4px 28px rgba(0, 0, 0, 0.7); |
| 488 | +} |
| 489 | + |
| 490 | +/* Bat — recessed progress track */ |
| 491 | +[data-theme="bat"] .progress-bar { |
| 492 | + background: rgba(8, 14, 22, 0.7); |
| 493 | + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5); |
| 494 | +} |
| 495 | + |
| 496 | +[data-theme="bat"] ::selection { |
| 497 | + background: rgba(78, 167, 212, 0.35); |
| 498 | + color: #eaf4fb; |
| 499 | +} |
| 500 | + |
| 501 | +[data-theme="bat"] ::-webkit-scrollbar-thumb { |
| 502 | + background: var(--border-light); |
| 503 | +} |
| 504 | + |
| 505 | +[data-theme="bat"] ::-webkit-scrollbar-track { |
| 506 | + background: #05070b; |
| 507 | +} |
| 508 | + |
329 | 509 | /* ─── Light theme overrides for specific elements ─── */ |
330 | 510 | [data-theme="light"] .top-bar { |
331 | 511 | background: rgba(245, 246, 250, 0.9); |
|
0 commit comments