/* BalanceBoard Theme Styles */ :root { /* BalanceBoard Color Palette */ --primary-color: #4DB6AC; --primary-hover: #26A69A; --primary-dark: #1B3A52; --accent-color: #4DB6AC; --surface-color: #FFFFFF; --background-color: #F5F5F5; --surface-elevation-1: rgba(0, 0, 0, 0.05); --surface-elevation-2: rgba(0, 0, 0, 0.10); --surface-elevation-3: rgba(0, 0, 0, 0.15); --text-primary: #1B3A52; --text-secondary: #757575; --text-accent: #4DB6AC; --border-color: rgba(0, 0, 0, 0.12); --divider-color: rgba(0, 0, 0, 0.08); --hover-overlay: rgba(77, 182, 172, 0.08); --active-overlay: rgba(77, 182, 172, 0.16); } /* Global Styles */ * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; background-color: var(--background-color); color: var(--text-primary); line-height: 1.6; margin: 0; padding: 0; } /* BalanceBoard Navigation */ .balanceboard-nav { background: linear-gradient(135deg, var(--primary-dark) 0%, #2a5068 100%); box-shadow: 0 2px 8px var(--surface-elevation-2); position: sticky; top: 0; z-index: 1000; border-bottom: 3px solid var(--primary-color); } .nav-container { max-width: 1200px; margin: 0 auto; padding: 16px 24px; display: flex; align-items: center; gap: 24px; } .nav-brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: white; } .nav-logo { width: 48px; height: 48px; border-radius: 50%; background: white; padding: 4px; transition: transform 0.2s ease; } .nav-brand:hover .nav-logo { transform: scale(1.05); } .nav-brand-text { font-size: 1.5rem; font-weight: 300; letter-spacing: 0.5px; } .nav-brand-text .brand-balance { color: var(--primary-color); font-weight: 400; } .nav-brand-text .brand-board { color: white; font-weight: 600; } .nav-subtitle { color: rgba(255, 255, 255, 0.7); font-size: 0.85rem; margin-top: -4px; } /* Main Layout */ .app-layout { display: flex; max-width: 1400px; margin: 0 auto; gap: 24px; padding: 24px; min-height: calc(100vh - 80px); } /* Sidebar */ .sidebar { width: 280px; flex-shrink: 0; position: sticky; top: 88px; height: fit-content; max-height: calc(100vh - 104px); overflow-y: auto; } .sidebar-section { background: var(--surface-color); border-radius: 12px; padding: 16px; margin-bottom: 16px; box-shadow: 0 2px 4px var(--surface-elevation-1); border: 1px solid var(--border-color); } .sidebar-section h3 { font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-secondary); margin-bottom: 12px; font-weight: 600; } /* User Card */ .user-card { background: linear-gradient(135deg, var(--primary-dark) 0%, #2a5068 100%); border-radius: 12px; padding: 20px; color: white; text-align: center; border: 2px solid var(--primary-color); } .user-avatar { width: 64px; height: 64px; border-radius: 50%; background: var(--primary-color); margin: 0 auto 12px; display: flex; align-items: center; justify-content: center; font-size: 1.75rem; font-weight: 600; color: white; } .user-name { font-size: 1.1rem; font-weight: 600; margin-bottom: 4px; } .user-karma { font-size: 0.85rem; opacity: 0.8; display: flex; justify-content: center; gap: 16px; margin-top: 12px; } .karma-item { display: flex; align-items: center; gap: 4px; } .login-prompt { text-align: center; } .login-prompt p { margin-bottom: 16px; font-size: 0.95rem; opacity: 0.9; } .btn-login { display: block; width: 100%; padding: 10px 16px; background: var(--primary-color); color: white; border: none; border-radius: 8px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; text-decoration: none; text-align: center; } .btn-login:hover { background: var(--primary-hover); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(77, 182, 172, 0.3); } .btn-signup { display: block; width: 100%; padding: 10px 16px; background: transparent; color: white; border: 2px solid var(--primary-color); border-radius: 8px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; text-decoration: none; text-align: center; margin-top: 8px; } .btn-signup:hover { background: rgba(77, 182, 172, 0.1); border-color: var(--primary-hover); } /* Navigation Menu */ .nav-menu { list-style: none; padding: 0; margin: 0; } .nav-menu li { margin-bottom: 4px; } .nav-item { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 8px; color: var(--text-primary); text-decoration: none; transition: all 0.2s ease; font-size: 0.95rem; } .nav-item:hover { background: var(--hover-overlay); color: var(--primary-color); } .nav-item.active { background: var(--primary-color); color: white; font-weight: 600; } .nav-icon { font-size: 1.25rem; width: 20px; text-align: center; } /* Filter Tags */ .filter-tags { display: flex; flex-wrap: wrap; gap: 8px; } .filter-tag { padding: 6px 12px; background: var(--background-color); border: 1px solid var(--border-color); border-radius: 16px; font-size: 0.85rem; color: var(--text-primary); text-decoration: none; transition: all 0.2s ease; cursor: pointer; } .filter-tag:hover { background: var(--primary-color); color: white; border-color: var(--primary-color); } .filter-tag.active { background: var(--primary-color); color: white; border-color: var(--primary-color); } /* Main Content Area */ .main-content { flex: 1; min-width: 0; } .container { max-width: 100%; } /* Platform Colors */ .platform-reddit { background: linear-gradient(135deg, #FF4500, #FF6B35); color: white; } .platform-hackernews { background: linear-gradient(135deg, #FF6600, #FF8533); color: white; } .platform-lobsters { background: linear-gradient(135deg, #8B5A3C, #A0695A); color: white; } /* Page Header */ .container > header { background: white; border-radius: 12px; padding: 24px; margin-bottom: 24px; box-shadow: 0 2px 4px var(--surface-elevation-1); border-left: 4px solid var(--primary-color); } header h1 { font-size: 2rem; font-weight: 600; color: var(--text-primary); margin-bottom: 8px; } header .post-count { color: var(--text-secondary); font-size: 1.1rem; display: flex; align-items: center; gap: 8px; } header .post-count::before { content: "•"; color: var(--primary-color); font-size: 1.5rem; line-height: 1; } /* Post Cards */ .post-card { margin-bottom: 16px; transition: transform 0.2s ease, box-shadow 0.2s ease; } .card-surface { background: var(--surface-color); border-radius: 12px; box-shadow: 0 2px 4px var(--surface-elevation-1); padding: 24px; border: 1px solid var(--border-color); transition: all 0.2s ease; } .card-surface:hover { box-shadow: 0 4px 12px var(--surface-elevation-2); transform: translateY(-2px); background: var(--hover-overlay); } /* Card Header */ .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; } .header-meta { display: flex; gap: 12px; align-items: center; } .platform-badge { padding: 4px 8px; border-radius: 6px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.025em; } .vote-indicator { display: flex; align-items: center; gap: 4px; } .vote-score { font-size: 1.25rem; font-weight: 700; color: var(--text-accent); } /* Card Title */ .card-title { font-size: 1.25rem; font-weight: 600; line-height: 1.4; margin-bottom: 12px; } .title-link { color: var(--text-primary); text-decoration: none; transition: color 0.2s ease; } .title-link:hover { color: var(--primary-color); } /* Content Preview */ .card-content-preview { margin-bottom: 16px; } .content-text { color: var(--text-secondary); font-size: 0.95rem; line-height: 1.5; } /* Card Footer */ .card-footer { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; } .author-info { display: flex; align-items: center; gap: 8px; font-size: 0.9rem; color: var(--text-secondary); } .author-name { font-weight: 500; color: var(--text-primary); } .engagement-info { font-size: 0.9rem; color: var(--text-secondary); display: flex; align-items: center; gap: 12px; } /* Bookmark Button */ .bookmark-btn { background: none; border: 1px solid var(--border-color); border-radius: 6px; padding: 6px 12px; display: flex; align-items: center; gap: 4px; cursor: pointer; transition: all 0.2s ease; color: var(--text-secondary); font-size: 0.85rem; } .bookmark-btn:hover { border-color: var(--primary-color); color: var(--primary-color); background: rgba(77, 182, 172, 0.1); } .bookmark-btn.bookmarked { background: var(--primary-color); color: white; border-color: var(--primary-color); } .bookmark-btn.bookmarked .bookmark-icon { filter: none; } .bookmark-btn:disabled { opacity: 0.6; cursor: not-allowed; } /* Tags */ .card-tags { display: flex; gap: 8px; flex-wrap: wrap; } .tag-chip { background: var(--primary-color); color: white; padding: 4px 8px; border-radius: 16px; font-size: 0.8rem; font-weight: 500; } /* List View */ .post-list-item { margin-bottom: 8px; } .list-card { display: flex; align-items: center; background: var(--surface-color); border-radius: 8px; padding: 12px 16px; border: 1px solid var(--border-color); transition: all 0.2s ease; } .list-card:hover { background: var(--hover-overlay); box-shadow: 0 2px 8px var(--surface-elevation-1); } .list-content { display: flex; align-items: center; flex: 1; gap: 16px; } .list-vote-section { min-width: 60px; text-align: center; } .vote-number { font-size: 1.1rem; font-weight: 700; color: var(--text-accent); } .list-meta { flex: 1; } .list-title { font-size: 1rem; font-weight: 500; margin-bottom: 4px; } .list-details { display: flex; justify-content: space-between; align-items: center; } .list-attribution { font-size: 0.85rem; color: var(--text-secondary); display: flex; gap: 6px; align-items: center; } .separator { color: var(--divider-color); } .list-engagement { font-size: 0.8rem; color: var(--text-secondary); } /* Detailed View */ .post-detail { background: var(--surface-color); border-radius: 16px; box-shadow: 0 4px 12px var(--surface-elevation-1); margin-bottom: 24px; } .detail-container { padding: 32px; } .detail-header { margin-bottom: 32px; } .header-meta-card { display: flex; flex-direction: column; gap: 16px; } .meta-row { display: flex; gap: 12px; align-items: center; } .detail-source { font-size: 1rem; color: var(--text-secondary); } .headline-section { margin-bottom: 24px; } .detail-title { font-size: 2.5rem; font-weight: 700; line-height: 1.2; color: var(--text-primary); margin-bottom: 16px; } .byline { display: flex; gap: 16px; font-size: 1rem; color: var(--text-secondary); } .author-link { font-weight: 500; color: var(--primary-color); } .stats-row { display: flex; gap: 32px; } .stat-item { display: flex; flex-direction: column; align-items: center; } .stat-number { font-size: 1.5rem; font-weight: 700; color: var(--text-primary); } .stat-label { font-size: 0.9rem; color: var(--text-secondary); text-transform: lowercase; } .detail-tags { display: flex; gap: 12px; flex-wrap: wrap; } .tag-pill { background: var(--primary-color); color: white; padding: 6px 12px; border-radius: 20px; font-size: 0.85rem; font-weight: 500; } /* Article Body */ .article-body { margin-bottom: 32px; padding: 24px 0; border-top: 1px solid var(--divider-color); border-bottom: 1px solid var(--divider-color); } .article-content { color: var(--text-secondary); font-size: 1.1rem; line-height: 1.8; } .article-content p { margin-bottom: 16px; } .article-content strong { font-weight: 600; color: var(--text-primary); } .article-content img { max-width: 100%; height: auto; border-radius: 8px; box-shadow: 0 2px 8px var(--surface-elevation-2); margin: 16px 0; display: block; } .article-content a { color: var(--primary-color); text-decoration: none; border-bottom: 1px solid transparent; transition: border-color 0.2s ease; } .article-content a:hover { border-bottom-color: var(--primary-color); } .article-content em { font-style: italic; color: var(--text-secondary); } /* Action Buttons */ .article-actions { margin-bottom: 32px; display: flex; gap: 16px; } .action-button { display: inline-flex; align-items: center; padding: 12px 24px; border-radius: 8px; text-decoration: none; font-weight: 600; font-size: 0.95rem; transition: all 0.2s ease; } .action-button.primary { background: var(--primary-color); color: white; border: none; } .action-button.primary:hover { background: var(--primary-hover); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(25, 118, 210, 0.3); } /* Comments Section */ .comments-section { border-top: 1px solid var(--divider-color); padding-top: 24px; } .comments-header { font-size: 1.5rem; font-weight: 600; color: var(--text-primary); margin-bottom: 24px; } /* Comments */ .comment-card { margin-bottom: 16px; transition: margin-left 0.2s ease; } .comment-surface { background: var(--surface-color); border-radius: 8px; border: 1px solid var(--border-color); padding: 16px; box-shadow: 0 1px 3px var(--surface-elevation-1); } .comment-header { margin-bottom: 8px; } .comment-meta { display: flex; gap: 12px; align-items: center; font-size: 0.9rem; } .comment-author { font-weight: 500; color: var(--text-primary); } .comment-time { color: var(--text-secondary); } .comment-score { display: flex; align-items: center; gap: 4px; } .score-number { font-weight: 600; color: var(--text-secondary); } .comment-body { font-size: 0.95rem; line-height: 1.6; margin-bottom: 8px; } .comment-text { margin-bottom: 12px; } .comment-text p { margin-bottom: 8px; } .comment-text img { max-width: 100%; height: auto; border-radius: 6px; box-shadow: 0 2px 6px var(--surface-elevation-1); margin: 12px 0; display: block; } .comment-text a { color: var(--primary-color); text-decoration: none; border-bottom: 1px solid transparent; transition: border-color 0.2s ease; } .comment-text a:hover { border-bottom-color: var(--primary-color); } .comment-text strong { font-weight: 600; color: var(--text-primary); } .comment-text em { font-style: italic; } .comment-replies { border-left: 3px solid var(--divider-color); margin-left: 16px; padding-left: 16px; } .comment-footer { font-size: 0.8rem; } .depth-indicator { color: var(--text-secondary); } /* Responsive Design */ @media (max-width: 1024px) { .app-layout { flex-direction: column; padding: 16px; } .sidebar { width: 100%; position: static; max-height: none; order: -1; } .sidebar-section { margin-bottom: 12px; } .nav-container { padding: 12px 16px; } .nav-logo { width: 40px; height: 40px; } .nav-brand-text { font-size: 1.25rem; } } @media (max-width: 768px) { .app-layout { padding: 12px; gap: 16px; } .container { padding: 0; } .card-surface { padding: 16px; } .detail-container { padding: 16px; } .detail-title { font-size: 2rem; } .stats-row { flex-direction: row; gap: 24px; } .list-card { padding: 8px 12px; } .list-content { gap: 8px; } .nav-subtitle { display: none; } } /* Sidebar Responsive */ @media (max-width: 1024px) { .app-layout { flex-direction: column; } .sidebar { width: 100%; position: static; max-height: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 16px; } .sidebar-section { margin-bottom: 0; } } @media (max-width: 640px) { .sidebar { grid-template-columns: 1fr; } }