From 8ad503f96df8df6d8496499e18adb6c7c9f2b672 Mon Sep 17 00:00:00 2001 From: JesusValera Date: Sat, 4 Oct 2025 21:11:25 +0200 Subject: [PATCH 1/4] Simplify dark-mode.css file --- css/components/blog.css | 69 +++ css/components/code-block.css | 26 ++ css/components/dark-mode.css | 725 +------------------------------ css/components/documentation.css | 93 ++++ css/components/features.css | 81 ++++ css/components/footer.css | 66 +++ css/components/header.css | 123 ++++++ css/components/layout.css | 96 ++++ css/components/navigation.css | 44 ++ css/components/search.css | 105 +++++ templates/blog.html | 2 +- 11 files changed, 709 insertions(+), 721 deletions(-) diff --git a/css/components/blog.css b/css/components/blog.css index 21f0fa8..da8f367 100644 --- a/css/components/blog.css +++ b/css/components/blog.css @@ -1,3 +1,10 @@ +/* Blog intro text */ +.blog-intro { + font-size: var(--text-lg); + color: var(--color-light-text-secondary); + margin-bottom: var(--space-2xl); +} + /* Blog post list */ @utility post-list { list-style: none; @@ -95,3 +102,65 @@ /*.post-list li.featured a::before {*/ /* transform: scaleY(1);*/ /*}*/ + +/* ======================================== + DARK MODE + ======================================== */ + +.dark .blog-intro { + color: var(--color-dark-text-secondary); +} + +.dark .post-list li a { + border-bottom-color: var(--color-dark-border); +} + +.dark .post-list li a::after { + background: var(--color-dark-text-accent); +} + +.dark .post-list li a h2 { + color: var(--color-dark-text-primary); +} + +.dark .post-list li a:hover h2 { + color: var(--color-dark-text-accent); +} + +.dark .post-list li a .meta { + color: var(--color-dark-text-muted); +} + +.dark .post-list li a .excerpt { + color: var(--color-dark-text-secondary); +} + +.dark .pagination a { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + color: var(--color-dark-text-primary); +} + +.dark .pagination a:hover { + background: var(--color-dark-surface-hover); + border-color: var(--color-dark-text-accent); + color: var(--color-dark-text-accent); +} + +.dark .pagination a.active { + background: var(--color-dark-text-accent); + color: var(--color-dark-bg); + border-color: var(--color-dark-text-accent); +} + +.dark .blog-tag { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + color: var(--color-dark-text-secondary); +} + +.dark .blog-tag:hover { + background: var(--color-dark-surface-hover); + border-color: var(--color-dark-text-accent); + color: var(--color-dark-text-accent); +} diff --git a/css/components/code-block.css b/css/components/code-block.css index 9d5008f..4926b6b 100644 --- a/css/components/code-block.css +++ b/css/components/code-block.css @@ -59,3 +59,29 @@ stroke: white; } +/* ======================================== + DARK MODE + ======================================== */ + +.dark .copy-code-button { + background-color: rgba(42, 49, 60, 0.95); + border-color: #475569; +} + +.dark .copy-code-button svg { + stroke: #cbd5e1; +} + +.dark .copy-code-button:hover { + background-color: #2f3741; +} + +.dark .copy-code-button.copied { + background-color: var(--color-dark-text-accent); + border-color: var(--color-dark-text-accent); +} + +.dark .copy-code-button.copied svg { + stroke: white; +} + diff --git a/css/components/dark-mode.css b/css/components/dark-mode.css index e25fc41..995913c 100644 --- a/css/components/dark-mode.css +++ b/css/components/dark-mode.css @@ -1,3 +1,7 @@ +/* ============================================ + DARK MODE - Global Styles + ============================================ */ + @media (prefers-color-scheme: dark) { :root { --color-bg: var(--color-dark-bg); @@ -31,177 +35,6 @@ background-color: var(--color-dark-bg); } -/* Modern Dark Header with glassmorphism */ -.dark .site-header { - background: var(--color-dark-header-bg); - backdrop-filter: blur(var(--backdrop-blur-header)) saturate(180%); - -webkit-backdrop-filter: blur(var(--backdrop-blur-header)) saturate(180%); - border-bottom-color: var(--color-dark-header-footer-border); - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3), - 0 2px 4px -1px rgba(0, 0, 0, 0.2); -} - -.dark .site-header.scrolled { - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); -} - -/* Dark logo styling */ -.dark .site-header__logo .phel-logo { - stroke: var(--color-dark-text-primary); - filter: drop-shadow(0 2px 4px rgba(241, 245, 249, 0.1)); -} - -.dark .site-header__logo .logo-text { - color: var(--color-dark-text-primary); -} - - -/* Dark navigation */ -.dark .site-header__navigation a { - color: var(--color-dark-text-secondary); -} - -.dark .site-header__navigation a::after { - background: var(--color-dark-text-accent); -} - -.dark .site-header__navigation a:hover { - color: var(--color-dark-text-accent); -} - -.dark .site-header__navigation li.active a { - color: var(--color-dark-text-accent); -} - -/* Mobile hamburger icon dark mode */ -.dark .site-header__mobile-menu .hamburger-icon span { - background: var(--color-dark-text-primary); -} - -.dark .site-header__mobile-menu .hamburger-icon:hover { - background: rgba(191, 164, 255, 0.15); -} - -/* Mobile navigation overlay dark */ -@media (max-width: 1039px) { - .dark .mobile-menu-overlay { - background: var(--color-dark-header-bg); - backdrop-filter: blur(var(--backdrop-blur-lg)); - -webkit-backdrop-filter: blur(var(--backdrop-blur-lg)); - } - - .dark .mobile-menu-nav a { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - color: var(--color-dark-text-primary); - } - - .dark .mobile-menu-nav a:hover, - .dark .mobile-menu-nav a:active { - background: var(--color-dark-text-accent); - border-color: var(--color-dark-text-accent); - color: var(--color-dark-bg); - } - - .dark .mobile-menu-link { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - color: var(--color-dark-text-primary); - } - - .dark .mobile-menu-link:hover, - .dark .mobile-menu-link:active { - background: var(--color-dark-text-accent); - border-color: var(--color-dark-text-accent); - color: var(--color-dark-bg); - } - - .dark .mobile-menu-actions { - border-top-color: var(--color-dark-border); - } - - .dark .mobile-dark-mode-toggle { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - color: var(--color-dark-text-primary); - } - - .dark .mobile-dark-mode-toggle:hover { - background: rgba(191, 164, 255, 0.15); - border-color: var(--color-dark-text-accent); - } - - .dark .mobile-menu-toggle span { - background: var(--color-dark-text-primary); - } - - .dark .mobile-menu-toggle:hover { - background: rgba(191, 164, 255, 0.15); - } -} - -/* Dark search input with modern styling */ -.dark #search { - background-color: var(--color-dark-bg-secondary); - color: var(--color-dark-text-primary); - border-color: #3a3a3a; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23666666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cpath d='m21 21-4.35-4.35'%3E%3C/path%3E%3C/svg%3E"); -} - -.dark #search:hover { - border-color: #4a4a4a; - box-shadow: var(--shadow-dark-sm); - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cpath d='m21 21-4.35-4.35'%3E%3C/path%3E%3C/svg%3E"); -} - -.dark #search:focus { - border-color: #5a5a5a; - background-color: var(--color-dark-surface); - box-shadow: 0 0 0 3px rgba(90, 90, 90, 0.3), - var(--shadow-dark-sm); - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23999999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cpath d='m21 21-4.35-4.35'%3E%3C/path%3E%3C/svg%3E"); -} - -.dark #search::placeholder { - color: var(--color-dark-text-muted); -} - -/* Dark mode clear button */ -.dark #search::-webkit-search-cancel-button { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23999999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='15' y1='9' x2='9' y2='15'%3E%3C/line%3E%3Cline x1='9' y1='9' x2='15' y2='15'%3E%3C/line%3E%3C/svg%3E"); - opacity: 0.8; -} - -.dark #search::-webkit-search-cancel-button:hover { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23cccccc' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='15' y1='9' x2='9' y2='15'%3E%3C/line%3E%3Cline x1='9' y1='9' x2='15' y2='15'%3E%3C/line%3E%3C/svg%3E"); - opacity: 1; -} - -/* Dark search results scrollbar */ -.dark .search-results::-webkit-scrollbar-thumb { - background: var(--color-dark-border); -} - -.dark .search-results::-webkit-scrollbar-thumb:hover { - background: var(--color-dark-border-subtle); -} - -/* Dark action buttons */ -.dark .site-header__actions { - color: var(--color-dark-text-primary); -} - -.dark .site-header__link, -.dark .dark-mode-toggle { - color: var(--color-dark-text-secondary); -} - -.dark .site-header__link:hover, -.dark .dark-mode-toggle:hover { - color: var(--color-dark-text-accent); - background: rgba(191, 164, 255, 0.15); -} - /* Dark typography */ .dark h1, .dark h2, @@ -237,7 +70,7 @@ color: var(--color-dark-text-accent); } -/* Dark images - no animations */ +/* Dark images */ .dark img { opacity: 1; } @@ -323,450 +156,6 @@ background: transparent; } -@media (min-width: 1040px) { - .dark .two-column-layout__sidebar { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - box-shadow: var(--shadow-dark-sm); - } -} - -@media (max-width: 1039px) { - .dark .two-column-layout__sidebar { - background: transparent; - border-bottom-color: var(--color-dark-border); - } -} - -/* Dark mode for sidebar toggle */ -.dark .sidebar-toggle { - background: var(--color-dark-surface); - border-color: var(--color-dark-text-secondary); - color: var(--color-dark-text-primary); -} - -.dark .sidebar-toggle:hover { - background: var(--color-dark-surface-hover); - border-color: var(--color-dark-text-accent); - color: var(--color-dark-text-accent); -} - -/* Dark mode for sidebar accordion open state */ -.dark .two-column-layout__sidebar:has(.sidebar-content.active) { - border-bottom-color: var(--color-dark-border); -} - -.dark .two-column-layout__sidebar::-webkit-scrollbar-thumb { - background: var(--color-dark-border); - background-clip: padding-box; -} - -.dark .two-column-layout__sidebar::-webkit-scrollbar-thumb:hover { - background: var(--color-gray-base); - background-clip: padding-box; -} - -/* Dark TOC */ -.dark .page-toc { - border-bottom-color: var(--color-dark-border); -} - -.dark .page-toc h2 { - color: var(--color-dark-text-primary); -} - -/* Dark site navigation title */ -.dark .site-navigation-title { - color: var(--color-dark-text-primary); -} - -/* Dark mode anchor links */ -.dark .zola-anchor, -.dark .zola-anchor:hover { - color: var(--color-dark-anchor); -} - -/* Dark mode solution toggle */ -.dark .solution label { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - color: var(--color-dark-text-primary); -} - -.dark .solution label:hover { - background: var(--color-dark-surface-hover); - border-color: var(--color-dark-text-accent); - color: var(--color-dark-text-accent); -} - -.dark .solution input[type="checkbox"]:checked ~ label { - background: var(--color-dark-text-accent); - color: var(--color-dark-bg); - border-color: var(--color-dark-text-accent); -} - -/* Dark mode navigation */ -.dark .site-navigation__entry a { - color: var(--color-dark-text-secondary); -} - -.dark .site-navigation__entry a:hover { - background: var(--color-dark-surface-hover); - color: var(--color-dark-text-accent); -} - -.dark .site-navigation__entry.active a { - color: var(--color-dark-text-accent); - background: var(--color-dark-surface-hover); -} - -/* Dark mode blog styling */ -.dark .post-list li a { - border-bottom-color: var(--color-dark-border); -} - -.dark .post-list li a::after { - background: var(--color-dark-text-accent); -} - -.dark .post-list li a h2 { - color: var(--color-dark-text-primary); -} - -.dark .post-list li a:hover h2 { - color: var(--color-dark-text-accent); -} - -.dark .post-list li a .meta { - color: var(--color-dark-text-muted); -} - -.dark .post-list li a .excerpt { - color: var(--color-dark-text-secondary); -} - -/* Dark mode blog pagination */ -.dark .pagination a { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - color: var(--color-dark-text-primary); -} - -.dark .pagination a:hover { - background: var(--color-dark-surface-hover); - border-color: var(--color-dark-text-accent); - color: var(--color-dark-text-accent); -} - -.dark .pagination a.active { - background: var(--color-dark-text-accent); - color: var(--color-dark-bg); - border-color: var(--color-dark-text-accent); -} - -/* Dark mode blog tags */ -.dark .blog-tag { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - color: var(--color-dark-text-secondary); -} - -.dark .blog-tag:hover { - background: var(--color-dark-surface-hover); - border-color: var(--color-dark-text-accent); - color: var(--color-dark-text-accent); -} - -/* Dark API Index Pills */ -.dark .api-namespace-toggle { - border-bottom-color: var(--color-dark-border); -} - -.dark .api-namespace-title { - color: var(--color-dark-text-accent); -} - -.dark .api-namespace-toggle-text { - color: #bfa4ff; - opacity: 0.8; -} - -.dark .api-namespace-toggle:hover .api-namespace-toggle-text { - opacity: 1; - color: #c2acf5; -} - -/* When hovering over collapsed area in dark mode */ -.dark .api-namespace-toggle[aria-expanded="false"] + .api-namespace-content.has-overflow:hover ~ .api-namespace-toggle .api-namespace-toggle-text, -.dark .api-index__entry:has(.api-namespace-content.has-overflow:hover) .api-namespace-toggle-text { - opacity: 1; - color: #c2acf5; -} - -.dark .api-namespace-icon { - color: #bfa4ff; - opacity: 0.8; -} - -.dark .api-namespace-toggle:hover .api-namespace-icon { - opacity: 1; - color: #c2acf5; -} - -/* When hovering over collapsed area in dark mode */ -.dark .api-index__entry:has(.api-namespace-content.has-overflow:hover) .api-namespace-icon { - opacity: 1; - color: #c2acf5; -} - -.dark .api-namespace-toggle[aria-expanded="false"] + .api-namespace-content::after { - background: linear-gradient(to bottom, - transparent 0%, - var(--color-dark-bg) 100%); -} - -.dark .api-namespace-toggle[aria-expanded="false"] + .api-namespace-content.has-overflow::before { - background: var(--color-dark-text-accent); - color: var(--color-dark-bg); - border: 1px solid var(--color-dark-text-accent); - box-shadow: none; -} - -.dark .api-index__entry > ul a { - background: var(--color-dark-surface); - color: var(--color-dark-text-secondary); - border-color: var(--color-dark-border); - box-shadow: var(--shadow-dark-sm); -} - -.dark .api-index__entry > ul a:hover { - background: var(--color-dark-text-accent); - color: var(--color-dark-bg); - border-color: var(--color-dark-text-accent); - box-shadow: var(--shadow-dark-md); -} - -.dark .page-toc a { - color: var(--color-dark-text-secondary); -} - -.dark .page-toc a:hover { - color: var(--color-dark-text-accent); - background: var(--color-dark-surface-hover); -} - -.dark .page-toc a.active { - color: var(--color-dark-text-accent); - background: var(--color-dark-surface-hover); -} - -/* Dark cards and navigation */ -.dark .related-container { - background: transparent; - border: none; - box-shadow: none; -} - -.dark .related-container .link { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - color: var(--color-dark-text-accent); -} - -.dark .related-container .link:hover { - border-color: var(--color-dark-text-accent); - background: var(--color-dark-surface-hover); -} - -.dark .related-container .link .link-title { - color: var(--color-dark-text-accent); -} - -.dark .related-container .link > span:not(.link-title) { - color: var(--color-dark-text-accent); -} - -/* Dark card */ -.dark .card { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - box-shadow: var(--shadow-dark-sm); -} - -.dark .card:hover { - box-shadow: var(--shadow-dark-lg); - border-color: var(--color-dark-text-accent); -} - -/* Dark badges */ -.dark .badge-primary { - background: rgba(191, 164, 255, 0.2); - color: var(--color-dark-text-accent); -} - -.dark .badge-warning { - background: rgba(245, 158, 11, 0.2); - color: #fbbf24; -} - -.dark .badge-error { - background: rgba(239, 68, 68, 0.2); - color: #f87171; -} - -/* Dark buttons */ -.dark .btn-primary { - background: var(--color-dark-text-accent); - color: var(--color-dark-bg); - box-shadow: var(--shadow-dark-sm); -} - -.dark .btn-primary:hover { - background: #c2acf5; - box-shadow: var(--shadow-dark-md); -} - -.dark .btn-secondary { - background: var(--color-dark-surface); - color: var(--color-dark-text-accent); - border-color: var(--color-dark-text-accent); -} - -.dark .btn-secondary:hover { - background: rgba(191, 164, 255, 0.15); -} - -/* Dark back to top button */ -.dark .back-to-top-button, -.dark #back-to-top-button { - background: var(--color-dark-surface); - color: var(--color-dark-text-primary); - border: 1px solid var(--color-dark-border); -} - -.dark .back-to-top-button:hover, -.dark #back-to-top-button:hover { - background: var(--color-dark-text-accent); - color: var(--color-dark-bg); - border-color: var(--color-dark-text-accent); -} - -/* Dark search results */ -.dark .search-results { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - box-shadow: var(--shadow-dark-lg); - color: var(--color-dark-text-primary); -} - -.dark .search-results__item { - border-bottom-color: var(--color-dark-border); - opacity: 0.7; -} - -.dark .search-result-link { - color: var(--color-dark-text-primary); -} - -.dark .search-results__item:hover { - background: var(--color-dark-surface-hover); - opacity: 0.8; -} - -.dark .result-type-badge--api { - background: var(--color-dark-text-accent); - color: var(--color-dark-bg); - border: 1px solid var(--color-dark-text-accent); -} - -.dark .search-results__item .fn-name { - color: var(--color-dark-text-accent); -} - -.dark .search-results__item .fn-signature { - color: var(--color-dark-text-accent); -} - -.dark .search-results__item strong { - color: var(--color-dark-text-accent); -} - -.dark .search-results__item .title { - color: var(--color-dark-text-primary); -} - -.dark .search-results__item .desc { - color: var(--color-dark-text-primary); -} - -.dark .search-results__item mark { - background: rgba(191, 164, 255, 0.3); - color: var(--color-dark-text-accent); -} - -/* Dark footer */ -.dark .site-footer { - background: var(--color-dark-header-bg); - border-top-color: var(--color-dark-header-footer-border); -} - -.dark .footer-logo .phel-logo { - stroke: white; -} - -.dark .footer-logo .logo-text { - color: var(--color-dark-text-primary); -} - -.dark .footer-description { - color: var(--color-dark-text-secondary); -} - -.dark .footer-social a { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); - color: var(--color-dark-text-primary); -} - -.dark .footer-social a:hover { - background: var(--color-dark-text-accent); - border-color: var(--color-dark-text-accent); - color: var(--color-dark-bg); -} - -.dark .footer-column h3 { - color: var(--color-dark-text-primary); -} - -.dark .footer-column ul li a { - color: var(--color-dark-text-secondary); -} - -.dark .footer-column ul li a:hover { - color: var(--color-dark-text-accent); -} - -.dark .footer-bottom { - border-top-color: var(--color-dark-border); -} - -.dark .footer-copyright { - color: var(--color-dark-text-secondary); -} - -.dark .footer-badge { - color: var(--color-dark-text-secondary); -} - -.dark .footer-badge-separator { - color: var(--color-dark-text-muted); -} - -.dark .footer-badge-version { - background: var(--color-dark-text-accent); - color: var(--color-dark-bg); -} - /* Dark focus states */ .dark a:focus-visible, .dark button:focus-visible { @@ -781,107 +170,3 @@ .dark ::-moz-selection { background: rgba(191, 164, 255, 0.3); } - -/* Dark mode code block copy button */ -.dark .copy-code-button { - background-color: rgba(42, 49, 60, 0.95); - border-color: #475569; -} - -.dark .copy-code-button svg { - stroke: #cbd5e1; -} - -.dark .copy-code-button:hover { - background-color: #2f3741; -} - -.dark .copy-code-button.copied { - background-color: var(--color-dark-text-accent); - border-color: var(--color-dark-text-accent); -} - -.dark .copy-code-button.copied svg { - stroke: white; -} - -/* Homepage Title Accent - Dark Mode */ -.dark .homepage-title-accent { - color: var(--color-dark-text-accent); -} - -.dark .homepage-content > p:first-of-type { - color: var(--color-dark-text-primary); -} - -.dark .why-card { - background: var(--color-dark-bg); - border-color: var(--color-dark-border); - color: var(--color-dark-text-primary); -} - -.dark .why-card:hover { - border-color: var(--color-dark-text-accent); - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3); -} - -.dark .why-card-icon { - color: var(--color-dark-text-accent); -} - -/* Homepage Code Section - Dark Mode */ -.dark .homepage-code-section { - background: rgba(191, 164, 255, 0.05); -} - -/* Homepage CTA Buttons - Dark Mode */ -.dark .homepage-cta-primary { - background: var(--color-dark-text-accent); - border-color: var(--color-dark-text-accent); - color: var(--color-dark-bg); -} - -.dark .homepage-cta-primary:hover { - background: #c2acf5; - border-color: #c2acf5; - color: var(--color-dark-bg);; -} - -.dark .homepage-cta-secondary { - background: transparent; - color: var(--color-dark-text-primary); - border-color: var(--color-dark-border); -} - -.dark .homepage-cta-secondary:hover { - border-color: var(--color-dark-text-accent); - color: var(--color-dark-text-accent); -} - -/* Features Grid - Dark Mode */ -.dark .feature-card { - background: var(--color-dark-surface); - border-color: var(--color-dark-border); -} - -.dark .feature-card:hover { - border-color: var(--color-dark-text-accent); - box-shadow: var(--shadow-dark-sm); -} - -.dark .feature-icon { - color: var(--color-dark-text-accent); -} - -.dark .feature-title { - color: var(--color-dark-text-primary); -} - -.dark .feature-description { - color: var(--color-dark-text-secondary); -} - -.dark .feature-items p, -.dark .feature-items li { - color: var(--color-dark-text-secondary); -} diff --git a/css/components/documentation.css b/css/components/documentation.css index 9189ce0..8166dab 100644 --- a/css/components/documentation.css +++ b/css/components/documentation.css @@ -630,3 +630,96 @@ h6:hover .zola-anchor { margin-left: var(--space-sm); color: var(--color-gray-light); } + +/* ======================================== + DARK MODE + ======================================== */ + +.dark .api-namespace-toggle { + border-bottom-color: var(--color-dark-border); +} + +.dark .api-namespace-title { + color: var(--color-dark-text-accent); +} + +.dark .api-namespace-toggle-text { + color: #bfa4ff; + opacity: 0.8; +} + +.dark .api-namespace-toggle:hover .api-namespace-toggle-text { + opacity: 1; + color: #c2acf5; +} + +.dark .api-namespace-toggle[aria-expanded="false"] + .api-namespace-content.has-overflow:hover ~ .api-namespace-toggle .api-namespace-toggle-text, +.dark .api-index__entry:has(.api-namespace-content.has-overflow:hover) .api-namespace-toggle-text { + opacity: 1; + color: #c2acf5; +} + +.dark .api-namespace-icon { + color: #bfa4ff; + opacity: 0.8; +} + +.dark .api-namespace-toggle:hover .api-namespace-icon { + opacity: 1; + color: #c2acf5; +} + +.dark .api-index__entry:has(.api-namespace-content.has-overflow:hover) .api-namespace-icon { + opacity: 1; + color: #c2acf5; +} + +.dark .api-namespace-toggle[aria-expanded="false"] + .api-namespace-content::after { + background: linear-gradient(to bottom, + transparent 0%, + var(--color-dark-bg) 100%); +} + +.dark .api-namespace-toggle[aria-expanded="false"] + .api-namespace-content.has-overflow::before { + background: var(--color-dark-text-accent); + color: var(--color-dark-bg); + border: 1px solid var(--color-dark-text-accent); + box-shadow: none; +} + +.dark .api-index__entry > ul a { + background: var(--color-dark-surface); + color: var(--color-dark-text-secondary); + border-color: var(--color-dark-border); + box-shadow: var(--shadow-dark-sm); +} + +.dark .api-index__entry > ul a:hover { + background: var(--color-dark-text-accent); + color: var(--color-dark-bg); + border-color: var(--color-dark-text-accent); + box-shadow: var(--shadow-dark-md); +} + +.dark .solution label { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + color: var(--color-dark-text-primary); +} + +.dark .solution label:hover { + background: var(--color-dark-surface-hover); + border-color: var(--color-dark-text-accent); + color: var(--color-dark-text-accent); +} + +.dark .solution input[type="checkbox"]:checked ~ label { + background: var(--color-dark-text-accent); + color: var(--color-dark-bg); + border-color: var(--color-dark-text-accent); +} + +.dark .zola-anchor, +.dark .zola-anchor:hover { + color: var(--color-dark-anchor); +} diff --git a/css/components/features.css b/css/components/features.css index ab8b157..f83a5dc 100644 --- a/css/components/features.css +++ b/css/components/features.css @@ -342,3 +342,84 @@ display: none; } +/* ======================================== + DARK MODE + ======================================== */ + +.dark .homepage-title-accent { + color: var(--color-dark-text-accent); +} + +.dark .homepage-content > p:first-of-type { + color: var(--color-dark-text-primary); +} + +.dark .homepage-code-section { + background: rgba(191, 164, 255, 0.05); +} + +.dark .why-card { + background: var(--color-dark-bg); + border-color: var(--color-dark-border); + color: var(--color-dark-text-primary); +} + +.dark .why-card:hover { + border-color: var(--color-dark-text-accent); + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3); +} + +.dark .why-card-icon { + color: var(--color-dark-text-accent); +} + +.dark .homepage-cta-primary { + background: var(--color-dark-text-accent); + border-color: var(--color-dark-text-accent); + color: var(--color-dark-bg); +} + +.dark .homepage-cta-primary:hover { + background: #c2acf5; + border-color: #c2acf5; + color: white; +} + +.dark .homepage-cta-secondary { + background: transparent; + color: var(--color-dark-text-primary); + border-color: var(--color-dark-border); +} + +.dark .homepage-cta-secondary:hover { + border-color: var(--color-dark-text-accent); + color: var(--color-dark-text-accent); +} + +.dark .feature-card { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); +} + +.dark .feature-card:hover { + border-color: var(--color-dark-text-accent); + box-shadow: var(--shadow-dark-sm); +} + +.dark .feature-icon { + color: var(--color-dark-text-accent); +} + +.dark .feature-title { + color: var(--color-dark-text-primary); +} + +.dark .feature-description { + color: var(--color-dark-text-secondary); +} + +.dark .feature-items p, +.dark .feature-items li { + color: var(--color-dark-text-secondary); +} + diff --git a/css/components/footer.css b/css/components/footer.css index 00f831c..3bf02e5 100644 --- a/css/components/footer.css +++ b/css/components/footer.css @@ -302,3 +302,69 @@ margin-top: var(--space-3xl); } } + +/* ======================================== + DARK MODE + ======================================== */ + +.dark .site-footer { + background: var(--color-dark-header-bg); + border-top-color: var(--color-dark-header-footer-border); +} + +.dark .footer-logo .phel-logo { + stroke: white; +} + +.dark .footer-logo .logo-text { + color: var(--color-dark-text-primary); +} + +.dark .footer-description { + color: var(--color-dark-text-secondary); +} + +.dark .footer-social a { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + color: var(--color-dark-text-primary); +} + +.dark .footer-social a:hover { + background: var(--color-dark-text-accent); + border-color: var(--color-dark-text-accent); + color: var(--color-dark-bg); +} + +.dark .footer-column h3 { + color: var(--color-dark-text-primary); +} + +.dark .footer-column ul li a { + color: var(--color-dark-text-secondary); +} + +.dark .footer-column ul li a:hover { + color: var(--color-dark-text-accent); +} + +.dark .footer-bottom { + border-top-color: var(--color-dark-border); +} + +.dark .footer-copyright { + color: var(--color-dark-text-secondary); +} + +.dark .footer-badge { + color: var(--color-dark-text-secondary); +} + +.dark .footer-badge-separator { + color: var(--color-dark-text-muted); +} + +.dark .footer-badge-version { + background: var(--color-dark-text-accent); + color: var(--color-dark-bg); +} diff --git a/css/components/header.css b/css/components/header.css index fa9847b..b850536 100644 --- a/css/components/header.css +++ b/css/components/header.css @@ -586,3 +586,126 @@ body.menu-open { opacity: 1; } } + +/* ======================================== + DARK MODE + ======================================== */ + +.dark .site-header { + background: var(--color-dark-header-bg); + backdrop-filter: blur(var(--backdrop-blur-header)) saturate(180%); + -webkit-backdrop-filter: blur(var(--backdrop-blur-header)) saturate(180%); + border-bottom-color: var(--color-dark-header-footer-border); + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3), + 0 2px 4px -1px rgba(0, 0, 0, 0.2); +} + +.dark .site-header.scrolled { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); +} + +.dark .site-header__logo .phel-logo { + stroke: var(--color-dark-text-primary); + filter: drop-shadow(0 2px 4px rgba(241, 245, 249, 0.1)); +} + +.dark .site-header__logo .logo-text { + color: var(--color-dark-text-primary); +} + +.dark .site-header__navigation a { + color: var(--color-dark-text-secondary); +} + +.dark .site-header__navigation a::after { + background: var(--color-dark-text-accent); +} + +.dark .site-header__navigation a:hover { + color: var(--color-dark-text-accent); +} + +.dark .site-header__navigation li.active a { + color: var(--color-dark-text-accent); +} + +.dark .site-header__mobile-menu .hamburger-icon span { + background: var(--color-dark-text-primary); +} + +.dark .site-header__mobile-menu .hamburger-icon:hover { + background: rgba(191, 164, 255, 0.15); +} + +.dark .site-header__actions { + color: var(--color-dark-text-primary); +} + +.dark .site-header__link, +.dark .dark-mode-toggle { + color: var(--color-dark-text-secondary); +} + +.dark .site-header__link:hover, +.dark .dark-mode-toggle:hover { + color: var(--color-dark-text-accent); + background: rgba(191, 164, 255, 0.15); +} + +/* Mobile menu dark mode */ +@media (max-width: 1039px) { + .dark .mobile-menu-overlay { + background: var(--color-dark-header-bg); + backdrop-filter: blur(var(--backdrop-blur-lg)); + -webkit-backdrop-filter: blur(var(--backdrop-blur-lg)); + } + + .dark .mobile-menu-nav a { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + color: var(--color-dark-text-primary); + } + + .dark .mobile-menu-nav a:hover, + .dark .mobile-menu-nav a:active { + background: var(--color-dark-text-accent); + border-color: var(--color-dark-text-accent); + color: var(--color-dark-bg); + } + + .dark .mobile-menu-link { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + color: var(--color-dark-text-primary); + } + + .dark .mobile-menu-link:hover, + .dark .mobile-menu-link:active { + background: var(--color-dark-text-accent); + border-color: var(--color-dark-text-accent); + color: var(--color-dark-bg); + } + + .dark .mobile-menu-actions { + border-top-color: var(--color-dark-border); + } + + .dark .mobile-dark-mode-toggle { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + color: var(--color-dark-text-primary); + } + + .dark .mobile-dark-mode-toggle:hover { + background: rgba(191, 164, 255, 0.15); + border-color: var(--color-dark-text-accent); + } + + .dark .mobile-menu-toggle span { + background: var(--color-dark-text-primary); + } + + .dark .mobile-menu-toggle:hover { + background: rgba(191, 164, 255, 0.15); + } +} diff --git a/css/components/layout.css b/css/components/layout.css index 06fb7f7..81e6a37 100644 --- a/css/components/layout.css +++ b/css/components/layout.css @@ -311,3 +311,99 @@ opacity: 0.8; } } + +/* ======================================== + DARK MODE + ======================================== */ + +@media (min-width: 1040px) { + .dark .two-column-layout__sidebar { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + box-shadow: var(--shadow-dark-sm); + } +} + +@media (max-width: 1039px) { + .dark .two-column-layout__sidebar { + background: transparent; + border-bottom-color: var(--color-dark-border); + } +} + +.dark .sidebar-toggle { + background: var(--color-dark-surface); + border-color: var(--color-dark-text-secondary); + color: var(--color-dark-text-primary); +} + +.dark .sidebar-toggle:hover { + background: var(--color-dark-surface-hover); + border-color: var(--color-dark-text-accent); + color: var(--color-dark-text-accent); +} + +.dark .two-column-layout__sidebar:has(.sidebar-content.active) { + border-bottom-color: var(--color-dark-border); +} + +.dark .two-column-layout__sidebar::-webkit-scrollbar-thumb { + background: var(--color-dark-border); + border: 2px solid transparent; + background-clip: padding-box; +} + +.dark .two-column-layout__sidebar::-webkit-scrollbar-thumb:hover { + background: var(--color-gray-base); + background-clip: padding-box; +} + +.dark .related-container { + background: transparent; + border: none; + box-shadow: none; +} + +.dark .related-container .link { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + color: var(--color-dark-text-accent); +} + +.dark .related-container .link:hover { + border-color: var(--color-dark-text-accent); + background: var(--color-dark-surface-hover); +} + +.dark .related-container .link .link-title { + color: var(--color-dark-text-accent); +} + +.dark .related-container .link > span:not(.link-title) { + color: var(--color-dark-text-accent); +} + +.dark .back-to-top-button, +.dark #back-to-top-button { + background: var(--color-dark-surface); + color: var(--color-dark-text-primary); + border: 1px solid var(--color-dark-border); +} + +.dark .back-to-top-button:hover, +.dark #back-to-top-button:hover { + background: var(--color-dark-text-accent); + color: var(--color-dark-bg); + border-color: var(--color-dark-text-accent); +} + +.dark .card { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + box-shadow: var(--shadow-dark-sm); +} + +.dark .card:hover { + box-shadow: var(--shadow-dark-lg); + border-color: var(--color-dark-text-accent); +} diff --git a/css/components/navigation.css b/css/components/navigation.css index b9a8602..e4ceb53 100644 --- a/css/components/navigation.css +++ b/css/components/navigation.css @@ -86,3 +86,47 @@ font-weight: 600; } +/* ======================================== + DARK MODE + ======================================== */ + +.dark .site-navigation-title { + color: var(--color-dark-text-primary); +} + +.dark .site-navigation__entry a { + color: var(--color-dark-text-secondary); +} + +.dark .site-navigation__entry a:hover { + background: var(--color-dark-surface-hover); + color: var(--color-dark-text-accent); +} + +.dark .site-navigation__entry.active a { + color: var(--color-dark-text-accent); + background: var(--color-dark-surface-hover); +} + +.dark .page-toc { + border-bottom-color: var(--color-dark-border); +} + +.dark .page-toc h2 { + color: var(--color-dark-text-primary); +} + +.dark .page-toc a { + color: var(--color-dark-text-secondary); +} + +.dark .page-toc a:hover { + color: var(--color-dark-text-accent); + background: var(--color-dark-surface-hover); +} + +.dark .page-toc a.active { + color: var(--color-dark-text-accent); + background: var(--color-dark-surface-hover); +} + diff --git a/css/components/search.css b/css/components/search.css index 6d9a25e..9f46d7d 100644 --- a/css/components/search.css +++ b/css/components/search.css @@ -252,3 +252,108 @@ padding: var(--space-md); } } + +/* ======================================== + DARK MODE + ======================================== */ + +.dark #search { + background-color: var(--color-dark-bg-secondary); + color: var(--color-dark-text-primary); + border-color: #3a3a3a; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23666666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cpath d='m21 21-4.35-4.35'%3E%3C/path%3E%3C/svg%3E"); +} + +.dark #search:hover { + border-color: #4a4a4a; + box-shadow: var(--shadow-dark-sm); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cpath d='m21 21-4.35-4.35'%3E%3C/path%3E%3C/svg%3E"); +} + +.dark #search:focus { + border-color: #5a5a5a; + background-color: var(--color-dark-surface); + box-shadow: 0 0 0 3px rgba(90, 90, 90, 0.3), + var(--shadow-dark-sm); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23999999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cpath d='m21 21-4.35-4.35'%3E%3C/path%3E%3C/svg%3E"); +} + +.dark #search::placeholder { + color: var(--color-dark-text-muted); +} + +.dark #search::-webkit-search-cancel-button { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23999999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='15' y1='9' x2='9' y2='15'%3E%3C/line%3E%3Cline x1='9' y1='9' x2='15' y2='15'%3E%3C/line%3E%3C/svg%3E"); + opacity: 0.8; +} + +.dark #search::-webkit-search-cancel-button:hover { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23cccccc' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='15' y1='9' x2='9' y2='15'%3E%3C/line%3E%3Cline x1='9' y1='9' x2='15' y2='15'%3E%3C/line%3E%3C/svg%3E"); + opacity: 1; +} + +.dark .search-results { + background: var(--color-dark-surface); + border-color: var(--color-dark-border); + box-shadow: var(--shadow-dark-lg); + color: var(--color-dark-text-primary); +} + +.dark .search-results__item { + border-bottom-color: var(--color-dark-border); + opacity: 0.7; +} + +.dark .search-result-link { + color: var(--color-dark-text-primary); +} + +.dark .search-results__item:hover { + background: var(--color-dark-surface-hover); + opacity: 0.8; +} + +.dark .result-type-badge--api { + background: var(--color-dark-text-accent); + color: var(--color-dark-bg); + border: 1px solid var(--color-dark-text-accent); +} + +.dark .result-type-badge--docs { + background: rgba(59, 130, 246, 0.2); + color: #60a5fa; + border: 1px solid rgba(59, 130, 246, 0.3); +} + +.dark .search-results__item .fn-name { + color: var(--color-dark-text-accent); +} + +.dark .search-results__item .fn-signature { + color: var(--color-dark-text-accent); +} + +.dark .search-results__item strong { + color: var(--color-dark-text-accent); +} + +.dark .search-results__item .title { + color: var(--color-dark-text-primary); +} + +.dark .search-results__item .desc { + color: var(--color-dark-text-primary); +} + +.dark .search-results__item mark { + background: rgba(191, 164, 255, 0.3); + color: var(--color-dark-text-accent); +} + +.dark .search-results::-webkit-scrollbar-thumb { + background: var(--color-dark-border); +} + +.dark .search-results::-webkit-scrollbar-thumb:hover { + background: var(--color-dark-border-subtle); +} diff --git a/templates/blog.html b/templates/blog.html index e0640ee..01b83b0 100644 --- a/templates/blog.html +++ b/templates/blog.html @@ -6,7 +6,7 @@ {% endblock meta_content %} {% block content %}

Blog

-

Find the newest information about Phel in our Blog.

+

Find the newest information about Phel in our Blog.

{% endblock content %} diff --git a/templates/header.html b/templates/header.html index 4e57b41..2ff2930 100644 --- a/templates/header.html +++ b/templates/header.html @@ -50,12 +50,26 @@
-