diff --git a/src/themes/dreamcast.css b/src/themes/dreamcast.css index aaa5c14..5ce83e5 100644 --- a/src/themes/dreamcast.css +++ b/src/themes/dreamcast.css @@ -1,249 +1,368 @@ /* ============================================================ Theme: Sega Dreamcast — scoped to [data-theme="dreamcast"] - Cream BIOS calm, the orange swirl, friendly blue type, bubbly - rounded VMU-flavored chrome. + The boot dashboard: watery sky-blue gradient, opaque cream + top/bottom bars with a charcoal wordmark + clock, and bubbly + pastel pills that glow like Play / File / Music / Settings. ============================================================ */ [data-theme="dreamcast"] { - --dc-orange: #f47b20; - --dc-orange-dk: #d85f0a; - --dc-blue: #143d8c; - --dc-blue-lt: #2f6ad0; - --dc-cream: #f3efe6; - --dc-ink: #2a2f3a; - font-family: "Futura", "Century Gothic", "Trebuchet MS", sans-serif; + /* dashboard pastels */ + --dc-peach: #e0a079; + --dc-peach-glow: #f4c79e; + --dc-green: #6cba89; + --dc-green-glow: #9fe6b4; + --dc-cyan: #5fb3bf; + --dc-cyan-glow: #97e0ea; + --dc-pink: #cd7fb2; + --dc-pink-glow: #eca5d6; + --dc-purple: #9d8fd1; + + --dc-cream: #ece4d6; + --dc-cream-lt: #f4eee2; + --dc-charcoal: #555a5e; + --dc-slate: #2f5a7a; + --dc-orange: #f08020; + + font-family: "Trebuchet MS", "Century Gothic", "Segoe UI", sans-serif; font-size: 14px; - color: var(--dc-ink); + color: var(--dc-slate); } +/* the signature watery boot gradient: warm cream top fading down + through pale sky into rippled blue water */ [data-theme="dreamcast"] body { - background: linear-gradient(180deg, #fbf9f3 0%, #e9e3d6 100%) fixed; + background: + radial-gradient(120% 70% at 50% 108%, rgba(255, 255, 255, 0.55), transparent 55%), + radial-gradient(150% 80% at 50% 100%, rgba(110, 165, 205, 0.45), transparent 60%), + linear-gradient( + 180deg, + #efe8dd 0%, + #f1ece3 7%, + #dfe7e6 20%, + #bcd6e6 45%, + #a0c8e2 72%, + #93c0dd 100% + ) + fixed; } -/* reusable swirl */ +/* ---- the iconic swirl (orange-on-blue spiral disc) ---- */ [data-theme="dreamcast"] .rb-titlebar-icon, [data-theme="dreamcast"] .rb-start-logo, [data-theme="dreamcast"] .rb-task-icon { - background: conic-gradient( - from 0deg, - var(--dc-orange), - #ffd0a0, - var(--dc-orange), - var(--dc-orange-dk), - var(--dc-orange) - ); border-radius: 50%; + background: + conic-gradient( + from -20deg, + var(--dc-orange) 0deg, + #ffd9b0 70deg, + var(--dc-orange) 140deg, + #c85a08 220deg, + var(--dc-orange) 320deg + ); + box-shadow: + inset 0 0 0 1px rgba(255, 255, 255, 0.5), + 0 0 5px rgba(240, 128, 32, 0.55); } +/* ---- window: borderless, content floats on the water ---- */ [data-theme="dreamcast"] .rb-window { - background: #fff; - border: 1px solid #ded7c8; - border-radius: 20px; + background: transparent; + border: none; + border-radius: 0; padding: 0; - box-shadow: 0 10px 30px rgba(212, 95, 10, 0.15); + box-shadow: none; } +/* ---- top cream bar with charcoal wordmark + clock vibe ---- */ [data-theme="dreamcast"] .rb-titlebar { - height: 44px; - padding: 0 20px; - border-radius: 20px 20px 0 0; - background: linear-gradient(180deg, #ffffff, var(--dc-cream)); - border-bottom: 2px solid var(--dc-orange); - color: var(--dc-blue); - font-weight: bold; - text-transform: lowercase; - letter-spacing: 0.5px; + height: 46px; + padding: 0 22px; + border-radius: 14px; + background: linear-gradient(180deg, var(--dc-cream-lt), var(--dc-cream)); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.8), + 0 2px 6px rgba(60, 90, 120, 0.18); + color: var(--dc-charcoal); +} +[data-theme="dreamcast"] .rb-titlebar-text { + font-weight: 600; + letter-spacing: 0.4px; + color: var(--dc-charcoal); } [data-theme="dreamcast"] .rb-titlebar-icon { - width: 18px; - height: 18px; + width: 20px; + height: 20px; } [data-theme="dreamcast"] .rb-titlebar-buttons { display: none; } +/* ---- nav links become bubbly glowing pills ---- */ [data-theme="dreamcast"] .rb-menubar { - padding: 10px 16px; - border-bottom: 1px solid #ece6d8; + padding: 16px 8px 6px; + gap: 12px; } [data-theme="dreamcast"] .rb-menu-link { text-decoration: none; - padding: 6px 16px; - border-radius: 18px; - color: var(--dc-blue); + padding: 9px 26px; + border-radius: 999px; + color: #fff; font-weight: bold; - text-transform: lowercase; - transition: all 0.15s; + letter-spacing: 0.5px; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); + transition: transform 0.15s, box-shadow 0.15s, filter 0.15s; +} +/* per-pill colors, mirroring the dashboard tiles */ +[data-theme="dreamcast"] .rb-menu-link:nth-of-type(1) { + background: var(--dc-peach); + box-shadow: 0 0 0 2px var(--dc-peach-glow), 0 0 14px 2px rgba(244, 199, 158, 0.85); +} +[data-theme="dreamcast"] .rb-menu-link:nth-of-type(2) { + background: var(--dc-green); + box-shadow: 0 0 0 2px var(--dc-green-glow), 0 0 14px 2px rgba(159, 230, 180, 0.85); +} +[data-theme="dreamcast"] .rb-menu-link:nth-of-type(3) { + background: var(--dc-pink); + box-shadow: 0 0 0 2px var(--dc-pink-glow), 0 0 14px 2px rgba(236, 165, 214, 0.85); } [data-theme="dreamcast"] .rb-menu-link:hover { - background: var(--dc-orange); - color: #fff; + transform: translateY(-1px) scale(1.03); + filter: brightness(1.06); } + +/* ---- theme switcher as a pastel cyan pill ---- */ [data-theme="dreamcast"] .rb-switcher-label { - color: var(--dc-orange-dk); + color: var(--dc-slate); font-weight: bold; font-size: 12px; - text-transform: lowercase; } [data-theme="dreamcast"] .rb-switcher-select { - font: 13px "Trebuchet MS", sans-serif; - border: 2px solid var(--dc-orange); - border-radius: 18px; - padding: 4px 12px; + font: bold 13px "Trebuchet MS", sans-serif; + border: none; + border-radius: 999px; + padding: 7px 16px; + color: #fff; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); + background: var(--dc-cyan); + box-shadow: 0 0 0 2px var(--dc-cyan-glow), 0 0 12px 2px rgba(151, 224, 234, 0.8); + cursor: pointer; +} +[data-theme="dreamcast"] .rb-switcher-select option { + color: var(--dc-slate); + text-shadow: none; background: #fff; - color: var(--dc-blue); } [data-theme="dreamcast"] .rb-content { - padding: 26px 28px; + padding: 14px 8px 28px; } +/* ---- bottom cream bar (status) ---- */ [data-theme="dreamcast"] .rb-statusbar { - border-top: 1px solid #ece6d8; - padding: 8px 20px; + margin-top: 14px; + padding: 9px 20px; + border-radius: 12px; + background: linear-gradient(180deg, var(--dc-cream-lt), var(--dc-cream)); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.8), + 0 2px 6px rgba(60, 90, 120, 0.15); font-size: 12px; - color: #8a8270; - text-transform: lowercase; + color: var(--dc-charcoal); } +/* ---- taskbar = the cream dashboard header strip ---- */ [data-theme="dreamcast"] .rb-taskbar { - height: 40px; - background: linear-gradient(180deg, #fffdf8, var(--dc-cream)); - border-top: 2px solid var(--dc-orange); + height: 42px; + background: linear-gradient(180deg, var(--dc-cream-lt), var(--dc-cream)); + box-shadow: 0 -2px 8px rgba(60, 90, 120, 0.18); } [data-theme="dreamcast"] .rb-start { display: flex; align-items: center; gap: 8px; - height: 28px; - padding: 0 18px; - border: 2px solid var(--dc-orange); - border-radius: 18px; - background: #fff; - color: var(--dc-blue); + height: 30px; + padding: 0 20px; + border: none; + border-radius: 999px; + background: var(--dc-peach); + color: #fff; font: bold 13px "Trebuchet MS", sans-serif; - text-transform: lowercase; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 0 2px var(--dc-peach-glow), 0 0 12px 2px rgba(244, 199, 158, 0.8); cursor: pointer; } [data-theme="dreamcast"] .rb-start:hover { - background: var(--dc-orange); - color: #fff; + filter: brightness(1.06); } [data-theme="dreamcast"] .rb-start-logo { - width: 14px; - height: 14px; + width: 16px; + height: 16px; } [data-theme="dreamcast"] .rb-task { display: flex; align-items: center; gap: 8px; - height: 28px; - padding: 0 16px; - border: 1px solid #e3dccb; - border-radius: 18px; - background: #fff; - color: var(--dc-blue); + height: 30px; + padding: 0 18px; + border: none; + border-radius: 999px; + background: var(--dc-cyan); + color: #fff; font-weight: bold; font-size: 13px; - text-transform: lowercase; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 0 2px var(--dc-cyan-glow), 0 0 10px 1px rgba(151, 224, 234, 0.7); cursor: default; } [data-theme="dreamcast"] .rb-task-active { - border-color: var(--dc-orange); - box-shadow: 0 0 0 2px rgba(244, 123, 32, 0.25); + filter: brightness(1.05); } [data-theme="dreamcast"] .rb-task-icon { - width: 12px; - height: 12px; + width: 14px; + height: 14px; } [data-theme="dreamcast"] .rb-clock { - color: var(--dc-blue); - font-weight: bold; + color: var(--dc-charcoal); + font-weight: 600; font-size: 13px; + letter-spacing: 0.5px; padding: 0 16px; } +/* ---- page heads float on the water with a soft halo ---- */ [data-theme="dreamcast"] .rb-page-title { - margin: 0 0 4px; + margin: 4px 0 4px; font-size: 30px; font-weight: bold; - text-transform: lowercase; - color: var(--dc-orange); + color: var(--dc-slate); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); } [data-theme="dreamcast"] .rb-page-sub { - margin: 0 0 20px; - color: var(--dc-blue-lt); + margin: 0 0 18px; + color: #3f6f93; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); } + +/* ---- post cards = glossy translucent water tiles ---- */ [data-theme="dreamcast"] .rb-post-card { - border: 1px solid #ece6d8; - border-radius: 16px; - padding: 18px 20px; - background: linear-gradient(180deg, #ffffff, #fbf8f1); + border: 1px solid rgba(255, 255, 255, 0.7); + border-radius: 20px; + padding: 18px 22px; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(244, 250, 253, 0.82)); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.9), + 0 4px 16px rgba(60, 100, 140, 0.18); transition: box-shadow 0.2s, transform 0.2s; } [data-theme="dreamcast"] .rb-post-card:hover { - box-shadow: 0 6px 20px rgba(244, 123, 32, 0.25); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.9), + 0 8px 26px rgba(60, 110, 160, 0.3); transform: translateY(-2px); } [data-theme="dreamcast"] .rb-post-card-title a { - color: var(--dc-blue); + color: var(--dc-slate); text-decoration: none; font-weight: bold; } [data-theme="dreamcast"] .rb-post-card-title a:hover { - color: var(--dc-orange-dk); + color: var(--dc-pink); } [data-theme="dreamcast"] .rb-post-date { font-size: 12px; - color: #a89c84; - text-transform: lowercase; + color: #7e93a3; } + +/* ---- tags = tiny green dashboard pills ---- */ [data-theme="dreamcast"] .rb-tag { font-size: 11px; - background: #fff0e3; - border: 1px solid #ffc99c; - border-radius: 12px; - padding: 1px 10px; - color: var(--dc-orange-dk); + background: var(--dc-green); + border: none; + border-radius: 999px; + padding: 2px 12px; + color: #fff; font-weight: bold; - text-transform: lowercase; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); + box-shadow: 0 0 0 1px var(--dc-green-glow); } + +/* ---- read-more / back ---- */ [data-theme="dreamcast"] .rb-readmore, [data-theme="dreamcast"] .rb-back { - color: var(--dc-orange-dk); + color: #fff; text-decoration: none; font-weight: bold; font-size: 13px; - text-transform: lowercase; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); } +[data-theme="dreamcast"] .rb-readmore { + padding: 5px 16px; + border-radius: 999px; + background: var(--dc-pink); + box-shadow: 0 0 0 2px var(--dc-pink-glow), 0 0 10px 1px rgba(236, 165, 214, 0.7); +} +/* the iconic spiral BACK button */ [data-theme="dreamcast"] .rb-back { - display: inline-block; - margin-bottom: 14px; + display: inline-flex; + align-items: center; + gap: 8px; + margin-bottom: 16px; + padding: 6px 18px 6px 8px; + border-radius: 999px; + background: var(--dc-purple); + box-shadow: 0 0 0 2px #c3b8ef, 0 0 10px 1px rgba(157, 143, 209, 0.7); } +[data-theme="dreamcast"] .rb-back::before { + content: ""; + width: 18px; + height: 18px; + border-radius: 50%; + background: + conic-gradient( + from -20deg, + var(--dc-orange), + #ffd9b0 70deg, + var(--dc-orange) 140deg, + #c85a08 220deg, + var(--dc-orange) 320deg + ); + box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.6); +} + +/* ---- article body on a soft readable white tile ---- */ [data-theme="dreamcast"] .rb-article-title { - color: var(--dc-orange); + color: var(--dc-slate); font-weight: bold; - text-transform: lowercase; margin: 0 0 8px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); } [data-theme="dreamcast"] .rb-prose { line-height: 1.75; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(245, 251, 253, 0.86)); + border: 1px solid rgba(255, 255, 255, 0.7); + border-radius: 20px; + padding: 22px 26px; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.9), + 0 4px 16px rgba(60, 100, 140, 0.18); } [data-theme="dreamcast"] .rb-prose a { - color: var(--dc-blue-lt); + color: var(--dc-cyan); + font-weight: bold; } [data-theme="dreamcast"] .rb-prose code { - background: #fff0e3; - border: 1px solid #ffc99c; + background: #eef6f9; + border: 1px solid #cfe2ea; border-radius: 6px; padding: 0 5px; font-family: "Courier New", monospace; - color: var(--dc-orange-dk); + color: var(--dc-slate); } [data-theme="dreamcast"] .rb-prose blockquote { - border-left: 4px solid var(--dc-orange); + border-left: 4px solid var(--dc-cyan); margin: 14px 0; padding: 6px 16px; - background: #fdf6ef; - border-radius: 0 10px 10px 0; + background: #eef6f9; + border-radius: 0 12px 12px 0; } diff --git a/src/themes/jv2002.css b/src/themes/jv2002.css index fa227a1..deb230f 100644 --- a/src/themes/jv2002.css +++ b/src/themes/jv2002.css @@ -1,29 +1,34 @@ /* ============================================================ Theme: Jeuxvideo.com circa 2002 — scoped to [data-theme="jv2002"] - Early-2000s French gaming portal: dense boxy tables, Verdana - 11px, hard gray borders, gradient section bars, blue links, - a loud red/orange masthead. Webpage, not an OS window. + Early-2000s French gaming portal. Signatures matched to the + reference shot: white masthead with a red italic wordmark and + orange underline, a light nav strip of bold links, a pale-yellow + "today" band, gold-gradient box title bars, red section headings, + blue underlined links on dense white tables. Webpage, not an OS. ============================================================ */ [data-theme="jv2002"] { - --jv-red: #c4161c; - --jv-orange: #f08000; + --jv-red: #cc0000; + --jv-red-deep: #990000; + --jv-orange: #ff8000; --jv-blue: #003399; --jv-link: #0033cc; - --jv-bar1: #e9e9e9; - --jv-bar2: #c4c4c4; - --jv-border: #9a9a9a; + /* the iconic warm box header bars */ + --jv-gold1: #f7dd96; + --jv-gold2: #e6b34d; + --jv-gold-border: #b9863a; + --jv-border: #999999; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 1.4; - color: #222; + color: #1a1a1a; } [data-theme="jv2002"] body { background: #6b6b6b url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='4' height='4' fill='%23707070'/%3E%3Crect width='2' height='2' fill='%23686868'/%3E%3Crect x='2' y='2' width='2' height='2' fill='%23686868'/%3E%3C/svg%3E"); } -/* the page = a centered bordered table */ +/* the page = a centered bordered table on gray */ [data-theme="jv2002"] .rb-window { width: min(800px, calc(100% - 16px)); margin: 10px auto; @@ -34,56 +39,65 @@ box-shadow: 0 0 0 1px #fff, 0 4px 12px rgba(0, 0, 0, 0.5); } -/* masthead */ +/* masthead: white bar, red italic wordmark, orange rule under it */ [data-theme="jv2002"] .rb-titlebar { - height: 46px; + height: 44px; padding: 0 12px; - background: linear-gradient(180deg, #e2231a 0%, var(--jv-red) 50%, #8e0f12 100%); - color: #fff; + background: #ffffff; + color: var(--jv-red); font-weight: bold; - font-size: 18px; + font-size: 20px; font-style: italic; letter-spacing: -0.5px; - text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5); + text-shadow: none; border-bottom: 2px solid var(--jv-orange); } [data-theme="jv2002"] .rb-titlebar-icon { - width: 18px; - height: 18px; - background: var(--jv-orange); + width: 16px; + height: 16px; + background: var(--jv-red); transform: rotate(45deg); box-shadow: inset 0 0 0 2px #fff; } +[data-theme="jv2002"] .rb-titlebar-text { + color: var(--jv-red); +} [data-theme="jv2002"] .rb-titlebar-buttons { display: none; } -/* nav tabs */ +/* nav: light gray strip, bold links separated like Sommaire | PC | Xbox */ [data-theme="jv2002"] .rb-menubar { - padding: 3px 6px; - background: linear-gradient(180deg, var(--jv-blue), #001f66); - gap: 2px; + padding: 4px 8px; + background: linear-gradient(180deg, #ededed, #d6d6d6); + border-bottom: 1px solid var(--jv-border); + gap: 0; + align-items: center; } [data-theme="jv2002"] .rb-menu-link { text-decoration: none; - padding: 3px 10px; - color: #fff; + padding: 2px 9px; + color: var(--jv-blue); font-weight: bold; - background: linear-gradient(180deg, #3a5fb8, #14307e); - border: 1px solid #6f8fd0; - border-bottom: none; + background: transparent; + border: none; + border-right: 1px solid #b5b5b5; +} +[data-theme="jv2002"] .rb-menu-link:first-of-type { + padding-left: 2px; } [data-theme="jv2002"] .rb-menu-link:hover { - background: var(--jv-orange); - color: #000; + color: var(--jv-red); + text-decoration: underline; + background: transparent; } [data-theme="jv2002"] .rb-switcher-label { - color: #fff; + color: #333; font-weight: bold; } [data-theme="jv2002"] .rb-switcher-select { font: 11px Verdana, sans-serif; - border: 1px solid #000; + border: 1px solid #888; border-radius: 0; padding: 0 2px; background: #fff; @@ -98,7 +112,7 @@ padding: 3px 8px; font-size: 10px; color: #444; - background: var(--jv-bar1); + background: #ededed; border-top: 1px solid var(--jv-border); } @@ -117,7 +131,7 @@ padding: 0 10px; border: 1px solid #888; border-radius: 0; - background: linear-gradient(180deg, #f08000, #c46400); + background: linear-gradient(180deg, #ff9a1f, #d96e00); color: #fff; font: bold 11px Verdana, sans-serif; text-transform: uppercase; @@ -158,17 +172,18 @@ padding: 0 8px; } -/* ---- content: dense boxy article list ---- */ +/* ---- content: "Aujourd'hui sur..." pale-yellow band ---- */ [data-theme="jv2002"] .rb-page-head { - background: linear-gradient(180deg, var(--jv-bar1), var(--jv-bar2)); - border: 1px solid var(--jv-border); + background: linear-gradient(180deg, #fffdf0, #fff4c9); + border: 1px solid var(--jv-gold-border); padding: 6px 10px; margin-bottom: 10px; } [data-theme="jv2002"] .rb-page-title { margin: 0; - font-size: 16px; + font-size: 17px; font-weight: bold; + font-style: italic; color: var(--jv-red); } [data-theme="jv2002"] .rb-page-sub { @@ -176,6 +191,8 @@ font-size: 11px; color: #555; } + +/* ---- dense boxy article list with gold header bars ---- */ [data-theme="jv2002"] .rb-post-list { gap: 8px; } @@ -186,16 +203,16 @@ background: #fff; } [data-theme="jv2002"] .rb-post-card-head { - background: linear-gradient(180deg, var(--jv-bar1), var(--jv-bar2)); - border-bottom: 1px solid var(--jv-border); + background: linear-gradient(180deg, var(--jv-gold1), var(--jv-gold2)); + border-bottom: 1px solid var(--jv-gold-border); padding: 4px 8px; margin: 0; } [data-theme="jv2002"] .rb-post-card-title { - font-size: 12px; + font-size: 13px; } [data-theme="jv2002"] .rb-post-card-title a { - color: var(--jv-blue); + color: var(--jv-red-deep); text-decoration: none; font-weight: bold; } @@ -205,7 +222,8 @@ } [data-theme="jv2002"] .rb-post-date { font-size: 10px; - color: #666; + color: #7a5a14; + font-weight: bold; } [data-theme="jv2002"] .rb-post-excerpt { padding: 6px 8px; @@ -214,6 +232,7 @@ [data-theme="jv2002"] .rb-post-meta { padding: 4px 8px 6px; font-size: 10px; + border-top: 1px solid #eee; } [data-theme="jv2002"] .rb-tag { font-size: 9px; @@ -229,22 +248,28 @@ text-decoration: underline; font-size: 11px; } +[data-theme="jv2002"] .rb-readmore:hover, +[data-theme="jv2002"] .rb-prose a:hover { + color: var(--jv-red); +} [data-theme="jv2002"] .rb-back { display: inline-block; margin-bottom: 8px; font-weight: bold; } + +/* ---- single article ---- */ [data-theme="jv2002"] .rb-article { border: 1px solid var(--jv-border); padding: 0; } [data-theme="jv2002"] .rb-article-title { - background: linear-gradient(180deg, var(--jv-bar1), var(--jv-bar2)); - border-bottom: 1px solid var(--jv-border); + background: linear-gradient(180deg, var(--jv-gold1), var(--jv-gold2)); + border-bottom: 1px solid var(--jv-gold-border); margin: 0; padding: 6px 10px; font-size: 15px; - color: var(--jv-red); + color: var(--jv-red-deep); } [data-theme="jv2002"] .rb-article-meta { padding: 5px 10px; @@ -260,7 +285,7 @@ } [data-theme="jv2002"] .rb-prose h2 { font-size: 13px; - color: var(--jv-blue); + color: var(--jv-red); border-bottom: 1px solid #ccc; padding-bottom: 2px; } @@ -277,7 +302,7 @@ background: #fff7ec; } -/* JV2002 didn't do back-link inside article box nicely; keep it outside */ +/* keep the back-link outside the boxed article header */ [data-theme="jv2002"] .rb-article > .rb-back { display: block; padding: 6px 10px 0; diff --git a/src/themes/nds.css b/src/themes/nds.css index a2351e8..cfaf588 100644 --- a/src/themes/nds.css +++ b/src/themes/nds.css @@ -1,108 +1,128 @@ /* ============================================================ Theme: Nintendo DS — scoped to [data-theme="nds"] - The DS firmware menu: brushed silver shell, glossy cyan - gradients, dual-screen bezel framing, chunky rounded touch - targets. + The original DS firmware menu: pale grid "graph paper" + backdrop, white tiles with thick rounded charcoal borders, + glossy cyan selection, and calendar pastels (red Sunday, + blue Saturday). ============================================================ */ [data-theme="nds"] { --d-cyan: #1ba1c4; - --d-cyan-lt: #7fd6ec; - --d-silver: #c9d2d8; - --d-silver-dk: #9aa6ae; - --d-ink: #2b3a42; + --d-cyan-lt: #8fdcef; + --d-cyan-dk: #1685a3; + --d-ink: #3a4750; + --d-line: #4a565e; /* thick tile border */ + --d-paper: #eef1f3; /* grid backdrop */ + --d-grid: #dbe1e5; /* grid lines */ + --d-red: #d4506a; /* Sunday */ + --d-blue: #3f7fd0; /* Saturday */ font-family: "Trebuchet MS", "Segoe UI", Tahoma, sans-serif; font-size: 14px; color: var(--d-ink); } +/* pale graph-paper background like the DS menu canvas */ [data-theme="nds"] body { - background: linear-gradient(160deg, #aeb9c0 0%, #7e8b93 100%) fixed; + background-color: var(--d-paper); + background-image: linear-gradient(var(--d-grid) 1px, transparent 1px), + linear-gradient(90deg, var(--d-grid) 1px, transparent 1px); + background-size: 22px 22px; + background-attachment: fixed; } -/* the window is the silver shell; content is the touch screen */ +/* the window is the menu canvas */ [data-theme="nds"] .rb-window { - background: linear-gradient(180deg, #e7edf0, var(--d-silver)); - border: 1px solid #fff; - border-radius: 14px; - padding: 6px; - box-shadow: 0 12px 34px rgba(0, 0, 0, 0.4), - inset 0 0 0 1px var(--d-silver-dk); + background: transparent; + border: none; + border-radius: 0; + padding: 8px; + box-shadow: none; } +/* top status strip: User name, clock, date, battery */ [data-theme="nds"] .rb-titlebar { - height: 38px; - padding: 0 16px; - border-radius: 10px 10px 0 0; - background: linear-gradient(180deg, #2fb6d8, var(--d-cyan)); - color: #fff; + height: 34px; + padding: 0 14px; + border-radius: 12px; + background: linear-gradient(180deg, #fbfdfe, #e6ecef); + border: 2px solid var(--d-line); + color: var(--d-ink); font-weight: bold; - letter-spacing: 0.5px; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); + letter-spacing: 0.3px; + text-shadow: none; } [data-theme="nds"] .rb-titlebar-icon { - width: 15px; - height: 15px; - border-radius: 4px; - background: linear-gradient(180deg, #fff, var(--d-cyan-lt)); - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15); + width: 16px; + height: 12px; + border-radius: 2px; + background: linear-gradient(180deg, #b7f0a0, #7fc964); + box-shadow: inset 0 0 0 1.5px var(--d-line); } [data-theme="nds"] .rb-titlebar-buttons { display: none; } +/* menubar = white rounded tile holding the chunky touch buttons */ [data-theme="nds"] .rb-menubar { - padding: 8px 10px; - background: linear-gradient(180deg, #eef3f5, var(--d-silver)); + margin-top: 8px; + padding: 10px 12px; + border-radius: 14px; + background: #ffffff; + border: 2px solid var(--d-line); } [data-theme="nds"] .rb-menu-link { text-decoration: none; - padding: 5px 14px; - border-radius: 16px; + padding: 6px 16px; + border-radius: 18px; color: var(--d-ink); font-weight: bold; - background: linear-gradient(180deg, #ffffff, #dde5e9); - border: 1px solid var(--d-silver-dk); - transition: all 0.15s; + background: linear-gradient(180deg, #ffffff, #e3ebef); + border: 2px solid var(--d-line); + transition: all 0.12s; } [data-theme="nds"] .rb-menu-link:hover { - background: linear-gradient(180deg, #2fb6d8, var(--d-cyan)); + background: linear-gradient(180deg, #6fd0e8, var(--d-cyan)); color: #fff; - border-color: var(--d-cyan); + border-color: var(--d-cyan-dk); + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); } [data-theme="nds"] .rb-switcher-label { font-weight: bold; font-size: 12px; - color: var(--d-cyan); + color: var(--d-cyan-dk); } [data-theme="nds"] .rb-switcher-select { font: 13px "Trebuchet MS", sans-serif; - border: 1px solid var(--d-silver-dk); - border-radius: 14px; - padding: 4px 10px; + border: 2px solid var(--d-line); + border-radius: 16px; + padding: 4px 12px; background: #fff; + color: var(--d-ink); } -/* the lower touch screen */ +/* the main content = big white touch-screen tile */ [data-theme="nds"] .rb-content { - background: #f7fbfc; - margin: 6px 2px; + background: #ffffff; + margin: 8px 0; padding: 22px 24px; - border-radius: 10px; - border: 3px solid #2b3a42; - box-shadow: inset 0 0 18px rgba(27, 161, 196, 0.12); + border-radius: 16px; + border: 2px solid var(--d-line); + box-shadow: inset 0 0 0 4px #f3f7f9; } [data-theme="nds"] .rb-statusbar { - padding: 5px 12px; + padding: 6px 12px; font-size: 11px; - color: #5a6a72; + color: #71808a; } +/* bottom strip = rounded tile dock holding the launch buttons */ [data-theme="nds"] .rb-taskbar { - height: 38px; - background: linear-gradient(180deg, #b9c4cb, #8e9aa2); - border-top: 1px solid #fff; + height: 40px; + margin-top: 8px; + border-radius: 14px; + background: linear-gradient(180deg, #fbfdfe, #e6ecef); + border: 2px solid var(--d-line); } [data-theme="nds"] .rb-start { display: flex; @@ -110,13 +130,13 @@ gap: 7px; height: 28px; padding: 0 16px; - border: 1px solid var(--d-silver-dk); + border: 2px solid var(--d-cyan-dk); border-radius: 16px; - background: linear-gradient(180deg, #2fb6d8, var(--d-cyan)); + background: linear-gradient(180deg, #6fd0e8, var(--d-cyan)); color: #fff; font: bold 13px "Trebuchet MS", sans-serif; cursor: pointer; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); } [data-theme="nds"] .rb-start-logo { width: 13px; @@ -130,17 +150,18 @@ gap: 7px; height: 28px; padding: 0 14px; - border: 1px solid var(--d-silver-dk); + border: 2px solid var(--d-line); border-radius: 16px; - background: linear-gradient(180deg, #ffffff, #dde5e9); + background: linear-gradient(180deg, #ffffff, #e3ebef); color: var(--d-ink); font-weight: bold; font-size: 13px; cursor: default; } [data-theme="nds"] .rb-task-active { - background: linear-gradient(180deg, #2fb6d8, var(--d-cyan)); + background: linear-gradient(180deg, #6fd0e8, var(--d-cyan)); color: #fff; + border-color: var(--d-cyan-dk); } [data-theme="nds"] .rb-task-icon { width: 11px; @@ -159,44 +180,48 @@ margin: 0 0 4px; font-size: 26px; font-weight: bold; - color: var(--d-cyan); + color: var(--d-cyan-dk); } [data-theme="nds"] .rb-page-sub { margin: 0 0 18px; - color: #5a6a72; + color: #71808a; } + +/* post cards = white menu tiles with the signature thick border */ [data-theme="nds"] .rb-post-card { - border: 1px solid var(--d-silver-dk); - border-radius: 12px; + border: 2px solid var(--d-line); + border-radius: 14px; padding: 16px 18px; - background: linear-gradient(180deg, #ffffff, #eef4f6); - transition: box-shadow 0.2s, transform 0.2s; + background: #ffffff; + box-shadow: inset 0 0 0 3px #f3f7f9; + transition: box-shadow 0.18s, transform 0.18s; } [data-theme="nds"] .rb-post-card:hover { - box-shadow: 0 5px 16px rgba(27, 161, 196, 0.25); + box-shadow: inset 0 0 0 3px #e0f3f9, 0 5px 16px rgba(27, 161, 196, 0.28); transform: translateY(-2px); + border-color: var(--d-cyan-dk); } [data-theme="nds"] .rb-post-card-title a { - color: var(--d-cyan); + color: var(--d-cyan-dk); text-decoration: none; font-weight: bold; } [data-theme="nds"] .rb-post-date { font-size: 12px; - color: #8a98a0; + color: #93a0a8; } [data-theme="nds"] .rb-tag { font-size: 11px; background: #e4f4f9; - border: 1px solid var(--d-cyan-lt); + border: 1.5px solid var(--d-cyan-lt); border-radius: 12px; padding: 1px 9px; - color: var(--d-cyan); + color: var(--d-cyan-dk); font-weight: bold; } [data-theme="nds"] .rb-readmore, [data-theme="nds"] .rb-back { - color: var(--d-cyan); + color: var(--d-cyan-dk); text-decoration: none; font-weight: bold; font-size: 13px; @@ -206,7 +231,7 @@ margin-bottom: 12px; } [data-theme="nds"] .rb-article-title { - color: var(--d-cyan); + color: var(--d-cyan-dk); font-weight: bold; margin: 0 0 8px; } @@ -214,7 +239,7 @@ line-height: 1.7; } [data-theme="nds"] .rb-prose a { - color: var(--d-cyan); + color: var(--d-cyan-dk); } [data-theme="nds"] .rb-prose code { background: #e4f4f9; @@ -228,5 +253,10 @@ margin: 12px 0; padding: 6px 14px; background: #eef7fa; - border-radius: 0 8px 8px 0; + border-radius: 0 10px 10px 0; +} +[data-theme="nds"] .rb-prose h1, +[data-theme="nds"] .rb-prose h2, +[data-theme="nds"] .rb-prose h3 { + color: var(--d-cyan-dk); }