diff --git a/themes/puma/assets/skins/cheetah.css b/themes/puma/assets/skins/cheetah.css index 3b869e5..e31109a 100644 --- a/themes/puma/assets/skins/cheetah.css +++ b/themes/puma/assets/skins/cheetah.css @@ -1,21 +1,117 @@ /*! SPDX-License-Identifier: BSD-3-Clause · © 2026 WebTigers · Tiger™/WebTigers™ are trademarks */ -/* Skin: Cheetah — teal. - * Same PUMA theme, different brand. Flip `tiger.skin = "cheetah"` and the navbar, - * buttons, links and accents recolor — zero rebuild. */ -:root { - --bs-primary: #0d9488; - --bs-primary-rgb: 13, 148, 136; - --bs-link-color: #0d9488; - --bs-link-color-rgb: 13, 148, 136; - --bs-link-hover-color: #0b7f75; - --bs-border-radius: .5rem; +/* Skin: Cheetah — graphite. + * A calm, developer-tool aesthetic: layered neutrals, a blue accent, restrained + * radii, and the SYSTEM font stack (no web font to download). A variable-level + * overlay on stock Bootstrap 5.3, loaded AFTER bootstrap.css — it re-declares the + * --bs-* system for BOTH light and dark (data-bs-theme) so it keeps its identity in + * either mode. Not affiliated with any third party; the palette is our own, inspired + * by the ergonomics of modern code-hosting UIs. Swapped live by the skin switcher. */ + +/* ---- LIGHT ---- */ +:root, [data-bs-theme=light] { + --bs-blue:#0969da; --bs-indigo:#6639ba; --bs-purple:#8250df; --bs-pink:#bf3989; + --bs-red:#cf222e; --bs-orange:#bc4c00; --bs-yellow:#9a6700; --bs-green:#1a7f37; + --bs-teal:#1b7f8c; --bs-cyan:#1b7f8c; + --bs-black:#000; --bs-white:#fff; + --bs-gray:#6e7781; --bs-gray-dark:#424a53; + --bs-gray-100:#f6f8fa; --bs-gray-200:#eaeef2; --bs-gray-300:#d0d7de; --bs-gray-400:#afb8c1; + --bs-gray-500:#8c959f; --bs-gray-600:#6e7781; --bs-gray-700:#424a53; --bs-gray-800:#32383f; --bs-gray-900:#24292f; + + --bs-primary:#0969da; --bs-secondary:#6e7781; --bs-success:#1a7f37; --bs-info:#1b7f8c; + --bs-warning:#9a6700; --bs-danger:#cf222e; --bs-light:#f6f8fa; --bs-dark:#1f2328; + --bs-primary-rgb:9,105,218; --bs-secondary-rgb:110,119,129; --bs-success-rgb:26,127,55; + --bs-info-rgb:27,127,140; --bs-warning-rgb:154,103,0; --bs-danger-rgb:207,34,46; + --bs-light-rgb:246,248,250; --bs-dark-rgb:31,35,40; --bs-white-rgb:255,255,255; --bs-black-rgb:0,0,0; + + --bs-primary-text-emphasis:#0550ae; --bs-secondary-text-emphasis:#4b535d; --bs-success-text-emphasis:#116329; + --bs-info-text-emphasis:#0e5a63; --bs-warning-text-emphasis:#7d4e00; --bs-danger-text-emphasis:#a40e26; + --bs-light-text-emphasis:#424a53; --bs-dark-text-emphasis:#24292f; + --bs-primary-bg-subtle:#ddf4ff; --bs-secondary-bg-subtle:#eaeef2; --bs-success-bg-subtle:#dafbe1; + --bs-info-bg-subtle:#d7f0f2; --bs-warning-bg-subtle:#fff8c5; --bs-danger-bg-subtle:#ffebe9; + --bs-light-bg-subtle:#fbfcfd; --bs-dark-bg-subtle:#d0d7de; + --bs-primary-border-subtle:#b6e3ff; --bs-secondary-border-subtle:#d0d7de; --bs-success-border-subtle:#aceebb; + --bs-info-border-subtle:#b3e3e6; --bs-warning-border-subtle:#eac54f; --bs-danger-border-subtle:#ffcecb; + --bs-light-border-subtle:#eaeef2; --bs-dark-border-subtle:#afb8c1; + + --bs-font-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"; + --bs-font-monospace:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace; + --bs-body-font-family:var(--bs-font-sans-serif); --bs-body-font-size:0.9375rem; --bs-body-font-weight:400; --bs-body-line-height:1.5; + --bs-body-color:#1f2328; --bs-body-color-rgb:31,35,40; --bs-body-bg:#ffffff; --bs-body-bg-rgb:255,255,255; + --bs-emphasis-color:#0d1117; --bs-emphasis-color-rgb:13,17,23; + --bs-secondary-color:#59636e; --bs-secondary-color-rgb:89,99,110; --bs-secondary-bg:#f6f8fa; --bs-secondary-bg-rgb:246,248,250; + --bs-tertiary-color:#6e7781; --bs-tertiary-color-rgb:110,119,129; --bs-tertiary-bg:#f6f8fa; --bs-tertiary-bg-rgb:246,248,250; + --bs-heading-color:inherit; + --bs-link-color:#0969da; --bs-link-color-rgb:9,105,218; --bs-link-decoration:none; + --bs-link-hover-color:#0550ae; --bs-link-hover-color-rgb:5,80,174; + --bs-code-color:#bf3989; --bs-highlight-color:#1f2328; --bs-highlight-bg:#fff8c5; + --bs-border-width:1px; --bs-border-style:solid; --bs-border-color:#d0d7de; --bs-border-color-translucent:rgba(27,31,36,0.15); + --bs-border-radius:0.375rem; --bs-border-radius-sm:0.25rem; --bs-border-radius-lg:0.5rem; --bs-border-radius-xl:0.75rem; + --bs-border-radius-xxl:1rem; --bs-border-radius-2xl:1rem; --bs-border-radius-pill:50rem; + --bs-box-shadow:0 1px 0 rgba(27,31,36,0.04); --bs-box-shadow-sm:0 1px 0 rgba(27,31,36,0.04); + --bs-box-shadow-lg:0 8px 24px rgba(66,74,83,0.12); --bs-box-shadow-inset:inset 0 1px 0 rgba(208,215,222,0.2); + --bs-focus-ring-width:0.25rem; --bs-focus-ring-opacity:0.3; --bs-focus-ring-color:rgba(9,105,218,0.3); + --bs-form-valid-color:#1a7f37; --bs-form-valid-border-color:#1a7f37; --bs-form-invalid-color:#cf222e; --bs-form-invalid-border-color:#cf222e; +} + +/* ---- DARK ---- */ +[data-bs-theme=dark] { + color-scheme:dark; + --bs-primary:#2f81f1; --bs-secondary:#7d8590; --bs-success:#3fb950; --bs-info:#39c5cf; + --bs-warning:#d29922; --bs-danger:#f85149; --bs-light:#21262d; --bs-dark:#0d1117; + --bs-primary-rgb:47,129,241; --bs-secondary-rgb:125,133,144; --bs-success-rgb:63,185,80; + --bs-info-rgb:57,197,207; --bs-warning-rgb:210,153,34; --bs-danger-rgb:248,81,73; + --bs-light-rgb:33,38,45; --bs-dark-rgb:13,17,23; + + --bs-primary-text-emphasis:#6cb6ff; --bs-secondary-text-emphasis:#9aa5b1; --bs-success-text-emphasis:#56d364; + --bs-info-text-emphasis:#76e3ea; --bs-warning-text-emphasis:#e3b341; --bs-danger-text-emphasis:#ff7b72; + --bs-light-text-emphasis:#e6edf3; --bs-dark-text-emphasis:#e6edf3; + --bs-primary-bg-subtle:#0d2847; --bs-secondary-bg-subtle:#21262d; --bs-success-bg-subtle:#0f2417; + --bs-info-bg-subtle:#0c2b2e; --bs-warning-bg-subtle:#2e2410; --bs-danger-bg-subtle:#2d1213; + --bs-light-bg-subtle:#161b22; --bs-dark-bg-subtle:#010409; + --bs-primary-border-subtle:#1f4b8f; --bs-secondary-border-subtle:#3d444d; --bs-success-border-subtle:#238636; + --bs-info-border-subtle:#1f6b70; --bs-warning-border-subtle:#9e6a03; --bs-danger-border-subtle:#da3633; + --bs-light-border-subtle:#30363d; --bs-dark-border-subtle:#21262d; + + --bs-body-color:#e6edf3; --bs-body-color-rgb:230,237,243; --bs-body-bg:#0d1117; --bs-body-bg-rgb:13,17,23; + --bs-emphasis-color:#ffffff; --bs-emphasis-color-rgb:255,255,255; + --bs-secondary-color:#7d8590; --bs-secondary-color-rgb:125,133,144; --bs-secondary-bg:#161b22; --bs-secondary-bg-rgb:22,27,34; + --bs-tertiary-color:#6e7781; --bs-tertiary-color-rgb:110,119,129; --bs-tertiary-bg:#161b22; --bs-tertiary-bg-rgb:22,27,34; + --bs-heading-color:inherit; + --bs-link-color:#2f81f1; --bs-link-color-rgb:47,129,241; --bs-link-hover-color:#58a6ff; --bs-link-hover-color-rgb:88,166,255; + --bs-code-color:#ff7b72; --bs-highlight-color:#e6edf3; --bs-highlight-bg:#2e2410; + --bs-border-color:#30363d; --bs-border-color-translucent:rgba(240,246,252,0.1); + --bs-box-shadow:0 0 transparent; --bs-box-shadow-lg:0 8px 24px rgba(1,4,9,0.5); --bs-box-shadow-inset:inset 0 1px 0 rgba(255,255,255,0.04); + --bs-focus-ring-color:rgba(47,129,241,0.4); + --bs-form-valid-color:#3fb950; --bs-form-valid-border-color:#238636; --bs-form-invalid-color:#f85149; --bs-form-invalid-border-color:#da3633; +} +[data-bs-theme=dark] { + --bs-navbar-color:rgba(230,237,243,0.65); --bs-navbar-hover-color:#e6edf3; --bs-navbar-active-color:#e6edf3; + --bs-navbar-brand-color:#e6edf3; --bs-navbar-brand-hover-color:#fff; + --bs-navbar-toggler-border-color:rgba(240,246,252,0.1); + --bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28230,237,243,0.65%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } +/* ---- component touches (kept minimal; the --bs-* system does the rest) ---- */ +/* Layered cards: a subtle inset in light, a raised panel in dark. */ +.card { --bs-card-bg:#ffffff; --bs-card-border-color:#d0d7de; --bs-card-cap-bg:#f6f8fa; } +[data-bs-theme=dark] .card { --bs-card-bg:#161b22; --bs-card-border-color:#30363d; --bs-card-cap-bg:#161b22; } + +/* Blue accent action button. */ .btn-primary { - --bs-btn-bg: #0d9488; - --bs-btn-border-color: #0d9488; - --bs-btn-hover-bg: #0b7f75; - --bs-btn-hover-border-color: #0a6e66; - --bs-btn-active-bg: #0a6e66; - --bs-btn-active-border-color: #095f58; + --bs-btn-bg:#0969da; --bs-btn-border-color:#0969da; --bs-btn-hover-bg:#0860ca; --bs-btn-hover-border-color:#0757ba; + --bs-btn-active-bg:#0757ba; --bs-btn-active-border-color:#094db8; --bs-btn-disabled-bg:#0969da; --bs-btn-disabled-border-color:#0969da; +} +[data-bs-theme=dark] .btn-primary { + --bs-btn-bg:#1f6feb; --bs-btn-border-color:#1f6feb; --bs-btn-hover-bg:#388bfd; --bs-btn-hover-border-color:#388bfd; + --bs-btn-active-bg:#1a5fc7; --bs-btn-active-border-color:#1a5fc7; --bs-btn-disabled-bg:#1f6feb; --bs-btn-disabled-border-color:#1f6feb; +} + +/* Keep the TigerPASS amber legible as a solid button (the "Get TigerPASS" CTA). */ +.btn-warning { + --bs-btn-color:#24292f; --bs-btn-bg:#eac54f; --bs-btn-border-color:#d4a72c; --bs-btn-hover-color:#24292f; + --bs-btn-hover-bg:#d4a72c; --bs-btn-hover-border-color:#bf8700; --bs-btn-active-bg:#bf8700; --bs-btn-active-border-color:#9a6700; +} +[data-bs-theme=dark] .btn-warning { + --bs-btn-color:#0d1117; --bs-btn-bg:#d29922; --bs-btn-border-color:#9e6a03; --bs-btn-hover-color:#0d1117; + --bs-btn-hover-bg:#e3b341; --bs-btn-hover-border-color:#d29922; --bs-btn-active-bg:#bf8700; --bs-btn-active-border-color:#9e6a03; } diff --git a/themes/puma/views/scripts/_partials/skin-switcher.phtml b/themes/puma/views/scripts/_partials/skin-switcher.phtml index be169db..1c2c725 100644 --- a/themes/puma/views/scripts/_partials/skin-switcher.phtml +++ b/themes/puma/views/scripts/_partials/skin-switcher.phtml @@ -22,7 +22,7 @@ $catalog = array( 'puma' => array('Puma', 'Zephyr', '#3459e6'), 'jaguar' => array('Jaguar', 'Flatly', '#2c3e50'), 'tabby' => array('Tabby', 'United', '#e95420'), - 'cheetah' => array('Cheetah', 'Custom', '#f59e0b'), + 'cheetah' => array('Cheetah', 'Graphite', '#2f81f1'), ); $meta = function ($s) use ($catalog) { return $catalog[$s] ?? array(ucfirst($s), '', '#6c757d');