diff options
Diffstat (limited to 'frontend-vanilla/src/style.css')
| -rw-r--r-- | frontend-vanilla/src/style.css | 240 |
1 files changed, 177 insertions, 63 deletions
diff --git a/frontend-vanilla/src/style.css b/frontend-vanilla/src/style.css index 3bcdbd0..a9c1c61 100644 --- a/frontend-vanilla/src/style.css +++ b/frontend-vanilla/src/style.css @@ -1,96 +1,210 @@ :root { - font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; + --bg-color: #ffffff; + --text-color: #213547; + --sidebar-bg: #f8f9fa; + --border-color: #e9ecef; + --accent-color: #007bff; + --hover-color: #e2e6ea; + --sidebar-width: 250px; + --item-list-width: 350px; +} - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; +@media (prefers-color-scheme: dark) { + :root { + --bg-color: #1a1a1a; + --text-color: #e9ecef; + --sidebar-bg: #2d2d2d; + --border-color: #444; + --accent-color: #375a7f; + --hover-color: #3e3e3e; + } } -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; +body { + margin: 0; + color: var(--text-color); + background-color: var(--bg-color); + height: 100vh; + overflow: hidden; } -a:hover { - color: #535bf2; + +#app { + height: 100%; } -body { +.layout { + display: flex; + height: 100%; +} + +/* Sidebar */ +.sidebar { + width: var(--sidebar-width); + background-color: var(--sidebar-bg); + border-right: 1px solid var(--border-color); + display: flex; + flex-direction: column; +} + +.sidebar-header { + padding: 1rem; + border-bottom: 1px solid var(--border-color); +} + +.sidebar-header h2 { margin: 0; + font-size: 1.1rem; +} + +.feed-list { + list-style: none; + padding: 0; + margin: 0; + overflow-y: auto; + flex: 1; +} + +.feed-link { + display: block; + padding: 0.5rem 1rem; + text-decoration: none; + color: var(--text-color); + font-size: 0.9rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.feed-item:hover { + background-color: var(--hover-color); +} + +.feed-item.active { + background-color: var(--hover-color); + font-weight: bold; +} + +/* Item List Pane */ +.item-list-pane { + width: var(--item-list-width); + border-right: 1px solid var(--border-color); display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; + flex-direction: column; + background-color: var(--bg-color); } -h1 { - font-size: 3.2em; - line-height: 1.1; +.top-bar { + padding: 0.75rem 1rem; + border-bottom: 1px solid var(--border-color); } -#app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; +.top-bar h1 { + margin: 0; + font-size: 1rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; +.item-list-container { + flex: 1; + overflow-y: auto; } -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); + +.item-list { + list-style: none; + padding: 0; + margin: 0; +} + +.item-row { + padding: 0.75rem 1rem; + border-bottom: 1px solid var(--border-color); + cursor: pointer; + transition: background 0.1s; +} + +.item-row:hover { + background-color: var(--hover-color); +} + +.item-row.active { + background-color: var(--hover-color); + border-left: 3px solid var(--accent-color); } -.logo.vanilla:hover { - filter: drop-shadow(0 0 2em #3178c6aa); + +.item-row.read { + opacity: 0.6; } -.card { - padding: 2em; +.item-title { + font-weight: 600; + font-size: 0.95rem; + margin-bottom: 0.2rem; + line-height: 1.3; } -.read-the-docs { +.item-meta { + font-size: 0.8rem; color: #888; } -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; +/* Item Detail Pane */ +.item-detail-pane { + flex: 1; + overflow-y: auto; + background-color: var(--bg-color); } -button:hover { - border-color: #646cff; + +.item-detail-content { + max-width: 800px; + margin: 0 auto; + padding: 2rem; } -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; + +.item-detail header { + margin-bottom: 2rem; + border-bottom: 1px solid var(--border-color); + padding-bottom: 1rem; } -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } +.item-detail h1 { + font-size: 1.8rem; + margin: 0 0 0.5rem 0; +} + +.item-detail h1 a { + color: var(--text-color); + text-decoration: none; +} + +.full-content { + font-size: 1.1rem; + line-height: 1.6; +} + +.full-content img { + max-width: 100%; + height: auto; +} + +.empty-state { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + color: #888; + font-size: 1.2rem; } + +.loading, +.empty { + padding: 1rem; + text-align: center; + color: #888; +}
\ No newline at end of file |
