.post-card { padding: 16px 20px; border-bottom: 1px solid var(--border); transition: background 0.15s; cursor: pointer; position: relative; } .post-card-link-overlay { position: absolute; inset: 0; z-index: 1; color: inherit; text-decoration: none; } .post-card > *:not(.post-card-link-overlay):not(.lightbox-backdrop) { position: relative; z-index: 2; } .post-card:hover { background: var(--hover-bg); } .post-card--thread { cursor: default; } .post-header { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; } .post-avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--border); flex-shrink: 0; object-fit: cover; } .post-avatar-btn { padding: 0; border: none; background: none; cursor: pointer; display: flex; flex-shrink: 0; border-radius: 50%; transition: opacity 0.15s; } .post-avatar-btn:hover { opacity: 0.8; } .post-avatar-placeholder { width: 40px; height: 40px; border-radius: 50%; background: var(--accent-bg); display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; color: var(--accent); flex-shrink: 0; } .post-author-info { display: flex; flex-direction: column; min-width: 0; } .post-display-name { font-size: 15px; font-weight: 600; color: var(--text-h); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .post-pronouns { font-size: 12px; color: var(--text); opacity: 0.6; font-weight: 400; white-space: nowrap; flex-shrink: 0; } .post-display-name-btn { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; padding: 0; border: none; background: none; cursor: pointer; font-family: inherit; text-align: left; } .post-name-row { display: flex; align-items: baseline; gap: 4px; min-width: 0; } .post-display-name-btn:hover .post-display-name { text-decoration: underline; } .post-handle { font-size: 13px; color: var(--text); } .post-handle-row { display: flex; align-items: center; gap: 6px; min-width: 0; } .post-repost-label { font-size: 12px; color: var(--text); margin-bottom: 4px; padding-left: 50px; display: flex; align-items: center; gap: 4px; } .post-repost-label svg { font-size: 12px; width: 12px; height: 12px; } .post-repost-label span { font-weight: 600; color: var(--text-h); } .post-reply-context { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; padding-left: 20px; position: relative; cursor: pointer; color: var(--text); font-size: 13px; line-height: 1.4; min-height: 24px; text-decoration: none; } .post-reply-context:hover { color: var(--accent); } .post-reply-context__line { position: absolute; left: 39px; top: 0; bottom: 0; width: 2px; background: var(--border); border-radius: 1px; } .post-reply-context:hover .post-reply-context__line { background: var(--accent); } .post-reply-context__avatar { width: 20px; height: 20px; border-radius: 50%; background: var(--border); flex-shrink: 0; object-fit: cover; } .post-reply-context__avatar--placeholder { display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700; color: var(--accent); background: var(--accent-bg); } .post-reply-context__text { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .post-reply-context__text strong { color: var(--text-h); font-weight: 600; } .post-reply-context:hover .post-reply-context__text strong { color: var(--accent); } .post-reply-context__preview { color: var(--text); opacity: 0.7; } .post-card:hover .post-reply-context__line { background: var(--border); } .post-card:hover .post-reply-context:hover .post-reply-context__line { background: var(--accent); } .post-body { font-size: 15px; line-height: 1.45; color: var(--text-h); white-space: pre-wrap; word-break: break-word; } .post-body-link { color: var(--accent); text-decoration: none; cursor: pointer; } .post-body-link:hover { text-decoration: underline; } .post-body-url { word-break: break-all; } .post-body-mention-hover { display: inline; } .post-body-mention-hover .handle-hover-card { z-index: 1001; } .post-footer { display: flex; gap: 4px; margin-top: 10px; position: relative; } .post-action { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; border-radius: 999px; border: none; background: none; color: var(--text); font-size: 13px; cursor: pointer; transition: color 0.15s, background 0.15s; font-family: inherit; min-width: 60px; } .post-action svg { font-size: 16px; width: 16px; height: 16px; } .post-action:hover { background: var(--hover-bg); } .post-action--reply:hover { color: var(--accent); } .post-action--repost:hover { color: #22c55e; } .post-action--repost.active { color: #22c55e; } .post-action--like:hover { color: #ef4444; } .post-action--like.active { color: #ef4444; } .post-action--edit:hover { color: var(--accent); } .post-action--bookmark:hover { color: var(--accent); } .post-action--bookmark.active { color: var(--accent); } .post-action--mute-thread:hover { color: var(--accent); } .post-action--mute-thread.active { color: var(--text); opacity: 0.6; } .post-action--quote:hover { color: var(--accent); } .post-action--share:hover { color: var(--accent); } .post-more-menu-wrapper { position: relative; margin-left: auto; } .post-action--more:hover { color: var(--accent); } .post-action--more.active { color: var(--accent); } .post-more-menu { position: absolute; bottom: calc(100% + 4px); right: 0; background: var(--bg); border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow); z-index: 100; overflow: hidden; min-width: 180px; animation: more-menu-fade 0.12s ease-out; } @keyframes more-menu-fade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } .share-button-wrapper { position: relative; } .share-menu { position: absolute; bottom: calc(100% + 4px); left: 50%; transform: translateX(-50%); background: var(--bg); border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow); z-index: 100; overflow: hidden; min-width: 190px; animation: share-menu-fade 0.12s ease-out; } @keyframes share-menu-fade { from { opacity: 0; transform: translateX(-50%) translateY(4px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } } .share-menu-item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 14px; border: none; background: none; color: var(--text-h); font-size: 14px; font-family: inherit; cursor: pointer; transition: background 0.1s; white-space: nowrap; } .share-menu-item:hover { background: var(--hover-bg); } .share-menu-item svg { font-size: 15px; width: 15px; height: 15px; color: var(--text); } .share-menu-item:hover svg { color: var(--text-h); } .post-repost-menu { position: absolute; bottom: calc(100% + 4px); left: 60px; background: var(--bg); border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow); z-index: 100; overflow: hidden; min-width: 160px; animation: repost-menu-fade 0.12s ease-out; } @keyframes repost-menu-fade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } .post-repost-menu-item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 14px; border: none; background: none; color: var(--text-h); font-size: 14px; font-family: inherit; cursor: pointer; transition: background 0.1s; } .post-repost-menu-item:hover { background: var(--hover-bg); } .post-repost-menu-item svg { font-size: 15px; width: 15px; height: 15px; color: var(--text); } .post-repost-menu-item:hover svg { color: var(--text-h); } .post-repost-menu-item--danger { color: #ef4444; } .post-repost-menu-item--danger svg { color: #ef4444; } .post-repost-menu-item--danger:hover { background: rgba(239, 68, 68, 0.1); } .post-action:disabled { opacity: 0.5; cursor: not-allowed; } .post-header-right { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; flex-shrink: 0; } .post-follow-btn { flex-shrink: 0; } .post-time { font-size: 12px; color: var(--text); } [data-theme="dark"] .post-action--repost.active { color: #4ade80; } [data-theme="dark"] .post-action--like.active { color: #f87171; } .post-card--hidden { cursor: default; } .post-card--hidden:hover { background: transparent; } .post-hidden-banner { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 20px; color: var(--text); font-size: 13px; opacity: 0.6; } .post-hidden-text { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .post-hidden-show-btn { flex-shrink: 0; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--border); background: none; color: var(--accent); font-size: 12px; font-family: inherit; cursor: pointer; transition: background 0.15s; } .post-hidden-show-btn:hover { background: var(--hover-bg); }