Files
beep/assets/beep.css
T

1477 lines
35 KiB
CSS
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ============================================================
Beep — Twitter/X-style feed
Dark theme by default; light theme via [beep_feed theme="light"]
or theme="auto" (follows the visitor's system preference).
Scope: every rule lives under .beep-embed so the plugin never
leaks styles into the host theme (and vice versa).
============================================================ */
/* ---------- Theme variables ---------- */
.beep-embed {
/* Dark (default) — Twitter "Dim" palette */
--beep-bg: #15202B;
--beep-bg-trans: rgba(21, 32, 43, 0.85);
--beep-card-bg: #192734;
--beep-hover: rgba(255, 255, 255, 0.03);
--beep-text: #E7E9EA;
--beep-muted: #8B98A5;
--beep-border: #38444D;
--beep-input-bg: #22303C;
--beep-accent: #1D9BF0;
--beep-accent-hover: #1A8CD8;
--beep-accent-soft: rgba(29, 155, 240, 0.1);
--beep-like: #F91880;
--beep-like-soft: rgba(249, 24, 128, 0.1);
--beep-repost: #00BA7C;
--beep-repost-soft: rgba(0, 186, 124, 0.1);
--beep-danger: #F4212E;
--beep-danger-soft: rgba(244, 33, 46, 0.1);
--beep-warn: #FFD400;
--beep-on-accent: #FFFFFF;
}
.beep-embed.beep-theme-light {
--beep-bg: #FFFFFF;
--beep-bg-trans: rgba(255, 255, 255, 0.85);
--beep-card-bg: #F7F9F9;
--beep-hover: rgba(0, 0, 0, 0.03);
--beep-text: #0F1419;
--beep-muted: #536471;
--beep-border: #EFF3F4;
--beep-input-bg: #EFF3F4;
--beep-warn: #B98A00;
}
@media (prefers-color-scheme: light) {
.beep-embed.beep-theme-auto {
--beep-bg: #FFFFFF;
--beep-bg-trans: rgba(255, 255, 255, 0.85);
--beep-card-bg: #F7F9F9;
--beep-hover: rgba(0, 0, 0, 0.03);
--beep-text: #0F1419;
--beep-muted: #536471;
--beep-border: #EFF3F4;
--beep-input-bg: #EFF3F4;
--beep-warn: #B98A00;
}
}
/* ---------- Root container ---------- */
.beep-embed,
.beep-embed * {
box-sizing: border-box;
}
.beep-embed.beep-feed {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
max-width: 600px;
margin: 0 auto;
background: var(--beep-bg);
border: 1px solid var(--beep-border);
border-top: 0;
border-bottom: 0;
color: var(--beep-text);
font-size: 15px;
line-height: 1.4;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
min-height: 0;
}
/* ---------- Header ---------- */
.beep-embed .beep-feed-header {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 14px 16px;
border-bottom: 1px solid var(--beep-border);
position: sticky;
top: 0;
z-index: 10;
background: var(--beep-bg-trans);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
}
.beep-embed .beep-feed-emblem {
width: 36px;
height: auto;
flex: 0 0 auto;
}
.beep-embed .beep-feed-header-title {
font-size: 17px;
font-weight: 800;
color: var(--beep-text);
letter-spacing: -0.3px;
}
.beep-embed .beep-feed-wordmark {
height: 28px;
width: auto;
display: block;
}
/* ---------- Tabs ---------- */
.beep-embed .beep-tabs {
display: flex;
border-bottom: 1px solid var(--beep-border);
}
.beep-embed .beep-tab {
flex: 1;
background: transparent;
border: 0;
padding: 0;
font-family: inherit;
font-size: 15px;
font-weight: 500;
color: var(--beep-muted);
cursor: pointer;
text-align: center;
transition: background-color 0.15s ease, color 0.15s ease;
}
.beep-embed .beep-tab span {
display: inline-block;
position: relative;
padding: 16px 4px;
}
.beep-embed .beep-tab:hover { background: var(--beep-hover); }
.beep-embed .beep-tab.is-active {
color: var(--beep-text);
font-weight: 700;
}
.beep-embed .beep-tab.is-active span::after {
content: '';
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 4px;
background: var(--beep-accent);
border-radius: 9999px;
}
/* ---------- Avatars ---------- */
.beep-embed .beep-avatar {
width: 48px;
height: 48px;
min-width: 48px;
border-radius: 50%;
flex-shrink: 0;
background: var(--beep-input-bg);
object-fit: cover;
aspect-ratio: 1 / 1;
display: block;
border: 0;
transition: filter 0.15s ease;
}
.beep-embed .beep-avatar:hover { filter: brightness(0.9); }
.beep-embed .beep-avatar-sm {
width: 36px;
height: 36px;
min-width: 36px;
}
/* ---------- Composer ---------- */
.beep-embed .beep-compose {
display: flex;
gap: 12px;
padding: 12px 16px 8px;
border-bottom: 1px solid var(--beep-border);
background: var(--beep-bg);
}
.beep-embed .beep-compose-body {
flex: 1;
min-width: 0;
}
.beep-embed .beep-input {
width: 100% !important;
border: 0 !important;
outline: 0 !important;
resize: none !important;
background: transparent !important;
font-family: inherit !important;
font-size: 20px !important;
line-height: 1.4 !important;
color: var(--beep-text) !important;
padding: 10px 0 !important;
min-height: 52px;
overflow: hidden;
box-shadow: none !important;
caret-color: var(--beep-accent);
}
.beep-embed .beep-input::placeholder { color: var(--beep-muted) !important; opacity: 1; }
.beep-embed .beep-input:focus,
.beep-embed .beep-input:focus-visible {
outline: 0 !important;
box-shadow: none !important;
}
.beep-embed .beep-compose-footer {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 8px;
padding-top: 8px;
border-top: 1px solid var(--beep-border);
}
.beep-embed .beep-compose-tools {
display: flex;
align-items: center;
gap: 2px;
}
.beep-embed .beep-compose-tool {
background: transparent;
border: 0;
color: var(--beep-accent);
cursor: pointer;
width: 36px;
height: 36px;
border-radius: 9999px;
display: flex;
align-items: center;
justify-content: center;
padding: 0;
margin: 0;
transition: background-color 0.15s ease;
}
.beep-embed .beep-compose-tool:hover { background: var(--beep-accent-soft); }
.beep-embed .beep-compose-tool svg { display: block; }
.beep-embed .beep-media-count {
font-size: 13px;
color: var(--beep-muted);
font-variant-numeric: tabular-nums;
padding: 0 4px;
}
.beep-embed .beep-compose-submit-row {
display: flex;
align-items: center;
gap: 12px;
}
/* ---------- Buttons ---------- */
.beep-embed .beep-button {
display: inline-flex;
align-items: center;
justify-content: center;
background: var(--beep-accent);
color: var(--beep-on-accent);
border: 0;
border-radius: 9999px;
padding: 8px 18px;
font-weight: 700;
font-size: 15px;
line-height: 1.2;
cursor: pointer;
font-family: inherit;
transition: background-color 0.15s ease, transform 0.1s ease;
}
.beep-embed .beep-button:hover { background: var(--beep-accent-hover); color: var(--beep-on-accent); }
.beep-embed .beep-button:active { transform: scale(0.96); }
.beep-embed .beep-button:disabled { opacity: 0.5; cursor: default; transform: none; }
/* ---------- Char counter ---------- */
.beep-embed .beep-char-counter {
font-size: 13px;
color: var(--beep-muted);
font-variant-numeric: tabular-nums;
}
.beep-embed .beep-counter-warn { color: var(--beep-warn); }
.beep-embed .beep-counter-bad { color: var(--beep-danger); font-weight: 700; }
/* ---------- Media preview (composer) ---------- */
.beep-embed .beep-compose-media-preview {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
margin-top: 8px;
}
.beep-embed .beep-compose-media-preview:not([hidden]) { display: grid; }
.beep-embed .beep-media-preview-item {
position: relative;
border-radius: 12px;
overflow: hidden;
border: 1px solid var(--beep-border);
aspect-ratio: 16 / 9;
}
.beep-embed .beep-media-preview-item img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
margin: 0;
}
.beep-embed .beep-media-remove,
.beep-embed .beep-gif-remove,
.beep-embed .beep-voice-remove {
position: absolute;
top: 6px;
right: 6px;
width: 26px;
height: 26px;
border-radius: 50%;
border: 0;
background: rgba(15, 20, 25, 0.75);
color: #fff;
font-size: 16px;
line-height: 1;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
padding: 0;
transition: background-color 0.15s ease;
}
.beep-embed .beep-media-remove:hover,
.beep-embed .beep-gif-remove:hover,
.beep-embed .beep-voice-remove:hover { background: rgba(39, 44, 48, 0.9); }
/* ---------- Voice / GIF preview cards (composer) ---------- */
.beep-embed .beep-voice-preview-card {
position: relative;
display: flex;
align-items: center;
gap: 10px;
margin-top: 8px;
padding: 10px 40px 10px 14px;
border: 1px solid var(--beep-border);
border-radius: 12px;
color: var(--beep-accent);
font-size: 14px;
font-weight: 600;
}
.beep-embed .beep-voice-preview-card .beep-voice-remove { top: 50%; transform: translateY(-50%); }
.beep-embed .beep-voice-preview-card span { color: var(--beep-text); }
.beep-embed .beep-compose-gif .beep-gif-preview-card {
position: relative;
margin-top: 8px;
border-radius: 12px;
overflow: hidden;
border: 1px solid var(--beep-border);
max-width: 280px;
}
.beep-embed .beep-compose-gif .beep-gif-preview-card img {
display: block;
width: 100%;
height: auto;
margin: 0;
}
/* ---------- Quote lookup (composer) ---------- */
.beep-embed .beep-compose-quote {
margin-top: 8px;
padding: 12px;
border: 1px solid var(--beep-border);
border-radius: 12px;
}
.beep-embed .beep-quote-input-row { display: flex; gap: 8px; }
.beep-embed .beep-quote-lookup,
.beep-embed .beep-poll-question,
.beep-embed .beep-poll-option {
flex: 1;
width: 100%;
background: var(--beep-input-bg);
border: 1px solid transparent;
border-radius: 8px;
padding: 10px 12px;
font-family: inherit;
font-size: 14px;
color: var(--beep-text);
outline: 0;
transition: border-color 0.15s ease;
}
.beep-embed .beep-quote-lookup:focus,
.beep-embed .beep-poll-question:focus,
.beep-embed .beep-poll-option:focus { border-color: var(--beep-accent); }
.beep-embed .beep-quote-lookup::placeholder,
.beep-embed .beep-poll-question::placeholder,
.beep-embed .beep-poll-option::placeholder { color: var(--beep-muted); }
.beep-embed .beep-quote-lookup-btn {
background: var(--beep-accent);
color: var(--beep-on-accent);
border: 0;
border-radius: 8px;
padding: 0 16px;
font-family: inherit;
font-size: 14px;
font-weight: 700;
cursor: pointer;
}
.beep-embed .beep-quote-lookup-btn:hover { background: var(--beep-accent-hover); }
.beep-embed .beep-quote-preview { margin-top: 8px; }
.beep-embed .beep-quote-remove,
.beep-embed .beep-poll-remove {
margin-top: 8px;
background: transparent;
border: 0;
color: var(--beep-danger);
font-family: inherit;
font-size: 13px;
font-weight: 600;
cursor: pointer;
padding: 4px 8px;
border-radius: 6px;
}
.beep-embed .beep-quote-remove:hover,
.beep-embed .beep-poll-remove:hover { background: var(--beep-danger-soft); }
/* ---------- Poll composer ---------- */
.beep-embed .beep-compose-poll {
margin-top: 8px;
padding: 12px;
border: 1px solid var(--beep-border);
border-radius: 12px;
}
.beep-embed .beep-compose-poll .beep-poll-options {
display: flex;
flex-direction: column;
gap: 8px;
margin-top: 8px;
}
.beep-embed .beep-poll-actions {
display: flex;
align-items: center;
gap: 4px;
margin-top: 4px;
}
.beep-embed .beep-poll-add-option,
.beep-embed .beep-poll-remove-option {
background: transparent;
border: 0;
color: var(--beep-accent);
font-family: inherit;
font-size: 13px;
font-weight: 600;
cursor: pointer;
padding: 4px 8px;
border-radius: 6px;
margin-top: 8px;
}
.beep-embed .beep-poll-add-option:hover,
.beep-embed .beep-poll-remove-option:hover { background: var(--beep-accent-soft); }
/* ---------- Post list ---------- */
.beep-embed .beep-list { background: var(--beep-bg); }
.beep-embed .beep-empty {
padding: 48px 24px 64px;
text-align: center;
color: var(--beep-muted);
}
.beep-embed .beep-empty-icon { margin-bottom: 12px; opacity: 0.85; }
.beep-embed .beep-empty p {
margin: 0 0 4px;
font-size: 20px;
font-weight: 800;
color: var(--beep-text);
}
.beep-embed .beep-empty span { font-size: 15px; }
/* ---------- Individual post ---------- */
.beep-embed .beep-post {
display: flex;
gap: 12px;
padding: 12px 16px 8px;
border-bottom: 1px solid var(--beep-border);
background: var(--beep-bg);
transition: background-color 0.15s ease;
}
.beep-embed .beep-post[data-beep-open-thread] { cursor: pointer; }
.beep-embed .beep-post[data-beep-open-thread]:hover { background: var(--beep-hover); }
.beep-embed .beep-post-body { flex: 1; min-width: 0; }
/* Meta line */
.beep-embed .beep-meta {
display: flex;
align-items: center;
gap: 4px;
font-size: 15px;
line-height: 1.3;
margin-bottom: 2px;
min-width: 0;
}
.beep-embed .beep-name {
font-weight: 700;
color: var(--beep-text);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.beep-embed .beep-name:hover { text-decoration: underline; }
.beep-embed .beep-handle,
.beep-embed .beep-dot,
.beep-embed .beep-time {
color: var(--beep-muted);
font-weight: 400;
white-space: nowrap;
}
.beep-embed .beep-handle { overflow: hidden; text-overflow: ellipsis; }
.beep-embed .beep-time { text-decoration: none; }
.beep-embed .beep-time:hover { text-decoration: underline; }
.beep-embed .beep-spacer { flex: 1; min-width: 8px; }
/* Post text */
.beep-embed .beep-text {
font-size: 15px;
line-height: 1.5;
color: var(--beep-text);
word-wrap: break-word;
overflow-wrap: anywhere;
margin: 0;
white-space: pre-wrap;
}
.beep-embed .beep-tag,
.beep-embed .beep-mention { color: var(--beep-accent); text-decoration: none; cursor: pointer; }
.beep-embed .beep-tag:hover,
.beep-embed .beep-mention:hover { text-decoration: underline; }
.beep-embed .beep-mention-stale { color: var(--beep-muted); cursor: default; }
.beep-embed .beep-mention-stale:hover { text-decoration: none; }
.beep-embed .beep-link { color: var(--beep-accent); text-decoration: none; }
.beep-embed .beep-link:hover { text-decoration: underline; }
/* ---------- Action bar ---------- */
.beep-embed .beep-actions {
display: flex;
justify-content: space-between;
max-width: 425px;
margin-top: 8px;
}
.beep-embed .beep-action {
display: inline-flex;
align-items: center;
gap: 4px;
background: transparent;
border: 0;
color: var(--beep-muted);
font-size: 13px;
font-family: inherit;
cursor: pointer;
padding: 0;
border-radius: 9999px;
transition: color 0.15s ease;
}
.beep-embed .beep-action svg {
width: 34px;
height: 34px;
padding: 8px;
border-radius: 9999px;
fill: currentColor;
display: block;
flex-shrink: 0;
transition: background-color 0.15s ease;
}
.beep-embed .beep-count {
font-variant-numeric: tabular-nums;
min-width: 16px;
text-align: left;
}
.beep-embed .beep-action-reply:hover { color: var(--beep-accent); }
.beep-embed .beep-action-reply:hover svg { background: var(--beep-accent-soft); }
.beep-embed .beep-action-retweet:hover { color: var(--beep-repost); }
.beep-embed .beep-action-retweet:hover svg { background: var(--beep-repost-soft); }
.beep-embed .beep-action.is-reposted { color: var(--beep-repost); }
.beep-embed .beep-action-like:hover { color: var(--beep-like); }
.beep-embed .beep-action-like:hover svg { background: var(--beep-like-soft); }
.beep-embed .beep-action.is-liked { color: var(--beep-like); }
.beep-embed .beep-action-share:hover { color: var(--beep-accent); }
.beep-embed .beep-action-share:hover svg { background: var(--beep-accent-soft); }
/* Like icon swap */
.beep-embed .beep-icon-outline,
.beep-embed .beep-icon-filled { display: block; }
.beep-embed .beep-action-like .beep-icon-filled { display: none; }
.beep-embed .beep-action-like.is-liked .beep-icon-outline { display: none; }
.beep-embed .beep-action-like.is-liked .beep-icon-filled { display: block; }
/* Heart pop animation */
.beep-embed .beep-action-like.beep-just-liked .beep-icon-filled svg {
animation: beep-heart-pop 0.55s ease;
}
@keyframes beep-heart-pop {
0% { transform: scale(0.85); }
40% { transform: scale(1.35); }
70% { transform: scale(0.9); }
100% { transform: scale(1); }
}
/* ---------- Media ---------- */
.beep-embed .beep-media-attachments { margin-top: 12px; }
.beep-embed .beep-media-attachments img {
width: 100%;
height: auto;
display: block;
margin: 0;
max-height: 510px;
object-fit: cover;
border-radius: 16px;
border: 1px solid var(--beep-border);
}
/* Image gallery (14 images, Twitter-style adaptive grid) */
.beep-embed .beep-gallery {
display: grid;
gap: 2px;
border-radius: 16px;
overflow: hidden;
border: 1px solid var(--beep-border);
}
.beep-embed .beep-gallery img { border: 0; border-radius: 0; max-height: none; }
.beep-embed .beep-gallery-2 { grid-template-columns: 1fr 1fr; }
.beep-embed .beep-gallery-3 { grid-template-columns: 1fr 1fr; }
.beep-embed .beep-gallery-3 .beep-gallery-item:first-child { grid-row: span 2; }
.beep-embed .beep-gallery-4 { grid-template-columns: 1fr 1fr; }
.beep-embed .beep-gallery-item {
overflow: hidden;
cursor: pointer;
}
.beep-embed .beep-gallery-2 .beep-gallery-item,
.beep-embed .beep-gallery-3 .beep-gallery-item,
.beep-embed .beep-gallery-4 .beep-gallery-item { aspect-ratio: 16 / 9; }
.beep-embed .beep-gallery-3 .beep-gallery-item:first-child { aspect-ratio: auto; }
.beep-embed .beep-gallery-1 .beep-gallery-item img {
width: 100%;
height: auto;
max-height: 510px;
object-fit: cover;
display: block;
}
.beep-embed .beep-gallery-item a { display: block; height: 100%; }
.beep-embed .beep-gallery-2 .beep-gallery-item img,
.beep-embed .beep-gallery-3 .beep-gallery-item img,
.beep-embed .beep-gallery-4 .beep-gallery-item img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
/* Video embed */
.beep-embed .beep-video-embed {
border-radius: 16px;
overflow: hidden;
border: 1px solid var(--beep-border);
}
.beep-embed .beep-video-embed iframe,
.beep-embed .beep-video-embed video {
display: block;
width: 100%;
border: 0;
}
/* GIF embed */
.beep-embed .beep-gif-embed {
margin-top: 12px;
border-radius: 16px;
overflow: hidden;
border: 1px solid var(--beep-border);
position: relative;
}
/* YouTube card (v1.9.1) */
.beep-embed .beep-yt-card {
position: relative;
margin-top: 12px;
border-radius: 16px;
overflow: hidden;
border: 1px solid var(--beep-border);
cursor: pointer;
background: #000;
aspect-ratio: 16 / 9;
display: flex;
align-items: center;
justify-content: center;
}
.beep-embed .beep-yt-thumb {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
top: 0;
left: 0;
margin: 0;
}
.beep-embed .beep-yt-play {
position: relative;
z-index: 1;
width: 68px;
height: 48px;
border-radius: 12px;
background: rgba(255, 0, 0, 0.85);
color: #fff;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5);
transition: transform 0.15s ease, background 0.15s ease;
}
.beep-embed .beep-yt-card:hover .beep-yt-play,
.beep-embed .beep-yt-card:focus-visible .beep-yt-play {
background: #f00;
transform: scale(1.08);
}
.beep-embed .beep-yt-play svg {
fill: #fff;
margin-left: 4px;
}
.beep-embed .beep-yt-card iframe {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
border: 0;
}
.beep-embed .beep-gif-embed img {
width: 100%;
height: auto;
max-height: 510px;
object-fit: cover;
display: block;
margin: 0;
}
.beep-embed .beep-gif-embed::after {
content: 'GIF';
position: absolute;
left: 10px;
bottom: 10px;
background: rgba(0, 0, 0, 0.75);
color: #fff;
font-size: 11px;
font-weight: 800;
padding: 2px 6px;
border-radius: 4px;
letter-spacing: 0.5px;
}
/* ---------- Polls ---------- */
.beep-embed .beep-poll-container { margin-top: 12px; }
.beep-embed .beep-poll-question {
font-size: 15px;
font-weight: 700;
color: var(--beep-text);
margin-bottom: 12px;
}
.beep-embed .beep-poll-container .beep-poll-options {
display: flex;
flex-direction: column;
gap: 6px;
}
.beep-embed .beep-poll-vote-btn {
border: 1px solid var(--beep-accent);
border-radius: 9999px;
padding: 8px 16px;
cursor: pointer;
font-family: inherit;
font-size: 15px;
font-weight: 700;
color: var(--beep-accent);
background: transparent;
text-align: center;
transition: background-color 0.15s ease;
}
.beep-embed .beep-poll-vote-btn:hover { background: var(--beep-accent-soft); }
.beep-embed .beep-poll-result {
position: relative;
border-radius: 6px;
padding: 7px 12px;
font-size: 15px;
color: var(--beep-text);
overflow: hidden;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
min-height: 32px;
}
.beep-embed .beep-poll-result-bar {
position: absolute;
left: 0;
top: 0;
bottom: 0;
background: var(--beep-muted);
opacity: 0.3;
border-radius: 6px;
max-width: 100%;
min-width: 6px;
}
.beep-embed .beep-poll-result.is-voted { font-weight: 700; }
.beep-embed .beep-poll-result.is-voted .beep-poll-result-bar { background: var(--beep-accent); opacity: 0.55; }
.beep-embed .beep-poll-result-text {
position: relative;
z-index: 1;
display: inline-flex;
align-items: center;
gap: 4px;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
}
.beep-embed .beep-poll-check { flex-shrink: 0; }
.beep-embed .beep-poll-result-percent {
position: relative;
z-index: 1;
font-variant-numeric: tabular-nums;
font-weight: 700;
flex-shrink: 0;
}
.beep-embed .beep-poll-meta {
display: flex;
align-items: center;
gap: 4px;
margin-top: 10px;
font-size: 13px;
color: var(--beep-muted);
}
.beep-embed .beep-poll-votes,
.beep-embed .beep-poll-end,
.beep-embed .beep-poll-dot { color: var(--beep-muted); font-weight: 400; }
/* ---------- Quoted beep ---------- */
.beep-embed .beep-quoted-container,
.beep-embed .beep-quoted-preview-card {
margin-top: 12px;
border: 1px solid var(--beep-border);
border-radius: 16px;
padding: 12px;
background: transparent;
transition: background-color 0.15s ease;
}
.beep-embed .beep-quoted-container:hover { background: var(--beep-hover); }
.beep-embed .beep-quoted-post { text-decoration: none; color: inherit; display: block; }
.beep-embed .beep-quoted-post:hover { text-decoration: none; }
.beep-embed .beep-quoted-meta {
display: flex;
align-items: center;
gap: 4px;
font-size: 14px;
color: var(--beep-muted);
margin-bottom: 4px;
min-width: 0;
}
.beep-embed .beep-quoted-meta .beep-name,
.beep-embed .beep-quoted-name { font-weight: 700; color: var(--beep-text); font-size: 14px; }
.beep-embed .beep-quoted-handle, .beep-embed .beep-quoted-time, .beep-embed .beep-quoted-dot { color: var(--beep-muted); }
.beep-embed .beep-quoted-avatar img { border-radius: 50%; display: block; }
.beep-embed .beep-quoted-preview-card { display: flex; gap: 8px; margin-top: 0; }
.beep-embed .beep-quoted-body { flex: 1; min-width: 0; }
.beep-embed .beep-quoted-text {
font-size: 14px;
color: var(--beep-text);
line-height: 1.4;
margin: 0;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
/* ---------- Voice note (post) ---------- */
.beep-embed .beep-voice-note {
display: flex;
align-items: center;
gap: 12px;
background: var(--beep-input-bg);
border-radius: 9999px;
padding: 10px 16px;
max-width: 400px;
}
.beep-embed .beep-voice-play {
background: var(--beep-accent);
border: 0;
border-radius: 50%;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
flex-shrink: 0;
padding: 0;
transition: background-color 0.15s ease;
}
.beep-embed .beep-voice-play:hover { background: var(--beep-accent-hover); }
.beep-embed .beep-voice-play svg { width: 14px; height: 14px; fill: #fff; }
.beep-embed .beep-voice-waveform {
flex: 1;
height: 24px;
display: flex;
align-items: center;
gap: 2px;
}
.beep-embed .beep-voice-bar {
width: 3px;
height: 100%;
background: var(--beep-accent);
border-radius: 9999px;
opacity: 0.6;
}
.beep-embed .beep-voice-duration {
font-size: 13px;
color: var(--beep-muted);
font-variant-numeric: tabular-nums;
}
/* ---------- Bottom bar (bird emblem + brand wordmark) ---------- */
.beep-embed .beep-bottom-bar {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 8px;
margin-top: 2px;
}
.beep-embed .beep-post-emblem {
width: 20px;
height: auto;
flex: 0 0 auto;
margin-right: auto;
opacity: 0.55;
transition: opacity 0.15s ease;
user-select: none;
}
.beep-embed .beep-post:hover .beep-post-emblem { opacity: 0.9; }
.beep-embed .beep-post-wordmark {
opacity: 0.55;
flex: 0 0 auto;
height: 16px;
width: auto;
transition: opacity 0.15s ease;
user-select: none;
}
.beep-embed .beep-post:hover .beep-post-wordmark,
.beep-embed .beep-reply:hover .beep-post-wordmark { opacity: 0.85; }
.beep-embed .beep-reply:hover .beep-post-emblem { opacity: 0.9; }
.beep-embed .beep-delete-link {
background: transparent;
border: 0;
color: var(--beep-muted);
font-family: inherit;
font-size: 16px;
line-height: 1;
cursor: pointer;
width: 26px;
height: 26px;
border-radius: 50%;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0;
flex-shrink: 0;
transition: color 0.15s ease, background-color 0.15s ease;
}
.beep-embed .beep-delete-link:hover { color: var(--beep-danger); background: var(--beep-danger-soft); }
/* ---------- Replies (thread view) ---------- */
.beep-embed .beep-replies { margin-top: 4px; }
.beep-embed .beep-replies-nested {
border-left: 2px solid var(--beep-border);
margin-left: 18px;
padding-left: 8px;
}
.beep-embed .beep-reply {
display: flex;
gap: 10px;
padding: 10px 0 6px;
border-top: 1px solid var(--beep-border);
}
.beep-embed .beep-reply-body { flex: 1; min-width: 0; }
.beep-embed .beep-reply .beep-text { font-size: 14px; }
.beep-embed .beep-reply .beep-meta { font-size: 14px; }
.beep-embed .beep-actions-reply {
justify-content: flex-start;
gap: 32px;
max-width: none;
margin-top: 2px;
}
.beep-embed .beep-actions-reply .beep-action svg {
width: 30px;
height: 30px;
padding: 7px;
}
/* ---------- Reply form ---------- */
.beep-embed .beep-reply-form {
display: flex;
gap: 10px;
align-items: flex-start;
margin-top: 8px;
padding: 12px 0 4px;
border-top: 1px solid var(--beep-border);
}
.beep-embed .beep-reply-form[hidden] { display: none; }
.beep-embed .beep-reply-form-body { flex: 1; min-width: 0; }
.beep-embed .beep-reply-input {
font-size: 15px !important;
min-height: 38px;
padding: 8px 0 !important;
}
.beep-embed .beep-reply-footer {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
margin-top: 4px;
flex-wrap: wrap;
}
.beep-embed .beep-reply-submit-row {
display: flex;
align-items: center;
gap: 10px;
margin-left: auto;
}
/* Reply composer toolbar (v1.9.0) — mirrors beep-compose styles. */
.beep-embed .beep-reply-tools {
display: flex;
align-items: center;
gap: 4px;
}
.beep-embed .beep-reply-tool {
display: inline-flex;
align-items: center;
justify-content: center;
width: 34px;
height: 34px;
border-radius: 50%;
cursor: pointer;
color: var(--beep-accent);
transition: background 0.15s;
}
.beep-embed .beep-reply-tool:hover { background: var(--beep-accent-soft); }
.beep-embed .beep-reply-tool svg { display: block; }
/* Reply media previews + sections share styling with the composer. */
.beep-embed .beep-reply-media-preview:not([hidden]) { display: grid; }
.beep-embed .beep-reply-voice-preview,
.beep-embed .beep-reply-gif,
.beep-embed .beep-reply-quote,
.beep-embed .beep-reply-poll {
margin-top: 8px;
}
.beep-embed .beep-reply-quote[data-beep-compose-quote],
.beep-embed .beep-reply-poll[data-beep-compose-poll] { /* hide via hidden attr */ }
/* Compact reply form (top-level reply under a post) — tighten the toolbar a bit. */
.beep-embed .beep-reply-form-compact .beep-reply-tool {
width: 30px;
height: 30px;
}
.beep-embed .beep-reply-form-compact .beep-reply-tools { gap: 2px; }
.beep-embed .beep-pending {
padding: 10px 0;
color: var(--beep-muted);
font-size: 14px;
font-style: italic;
}
/* ---------- Notices ---------- */
.beep-embed .beep-notice {
padding: 14px 16px;
border-bottom: 1px solid var(--beep-border);
font-size: 14px;
}
.beep-embed .beep-notice p { margin: 0; color: var(--beep-muted); }
.beep-embed .beep-notice-banned { color: var(--beep-danger); font-style: italic; }
.beep-embed .beep-public-notice {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 12px 16px;
background: var(--beep-card-bg);
border-bottom: 1px solid var(--beep-border);
color: var(--beep-muted);
font-size: 14px;
}
.beep-embed .beep-public-notice a { color: var(--beep-accent); text-decoration: none; }
.beep-embed .beep-public-notice a:hover { text-decoration: underline; }
/* ---------- Loading / infinite scroll ---------- */
.beep-embed .beep-loading { opacity: 0.6; pointer-events: none; }
.beep-embed .beep-spinner {
display: inline-block;
width: 22px;
height: 22px;
border: 3px solid var(--beep-accent-soft);
border-top-color: var(--beep-accent);
border-radius: 50%;
animation: beep-spin 0.7s linear infinite;
vertical-align: middle;
}
@keyframes beep-spin { to { transform: rotate(360deg); } }
.beep-embed .beep-loading-more,
.beep-embed .beep-no-more {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 20px;
color: var(--beep-muted);
font-size: 14px;
}
/* ---------- New post animation ---------- */
.beep-embed .beep-new { animation: beep-slide-in 0.3s ease; }
@keyframes beep-slide-in {
from { opacity: 0; transform: translateY(-8px); }
to { opacity: 1; transform: translateY(0); }
}
/* ---------- Thread / conversation modal ---------- */
.beep-embed .beep-thread-modal,
.beep-embed .beep-gif-modal {
position: fixed;
inset: 0;
z-index: 100000;
display: flex;
align-items: flex-start;
justify-content: center;
background: rgba(91, 112, 131, 0.4);
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
padding: 5vh 12px;
}
.beep-embed .beep-thread-modal[hidden],
.beep-embed .beep-gif-modal[hidden] { display: none !important; }
.beep-embed .beep-thread-dialog,
.beep-embed .beep-gif-dialog {
background: var(--beep-bg);
color: var(--beep-text);
width: 100%;
max-width: 600px;
max-height: 90vh;
overflow-y: auto;
border-radius: 16px;
border: 1px solid var(--beep-border);
box-shadow: 0 8px 28px rgba(0, 0, 0, 0.35);
}
.beep-embed .beep-thread-header,
.beep-embed .beep-gif-header {
display: flex;
align-items: center;
gap: 16px;
padding: 10px 16px;
border-bottom: 1px solid var(--beep-border);
position: sticky;
top: 0;
background: var(--beep-bg-trans);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
z-index: 1;
}
.beep-embed .beep-thread-close,
.beep-embed .beep-gif-close {
background: transparent;
border: 0;
color: var(--beep-text);
cursor: pointer;
width: 36px;
height: 36px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
padding: 0;
flex-shrink: 0;
transition: background-color 0.15s ease;
}
.beep-embed .beep-thread-close:hover,
.beep-embed .beep-gif-close:hover { background: var(--beep-hover); }
.beep-embed .beep-thread-close svg,
.beep-embed .beep-gif-close svg { width: 20px; height: 20px; fill: currentColor; }
.beep-embed .beep-thread-title,
.beep-embed .beep-gif-title { font-size: 17px; font-weight: 800; color: var(--beep-text); }
.beep-embed .beep-thread-loading {
display: flex;
justify-content: center;
padding: 40px 0;
}
.beep-embed .beep-thread-content .beep-post {
cursor: default;
border-bottom: 0;
}
.beep-embed .beep-thread-error {
padding: 32px 16px;
text-align: center;
color: var(--beep-muted);
}
/* ---------- GIF picker ---------- */
.beep-embed .beep-gif-search-bar {
display: flex;
gap: 8px;
padding: 12px 16px;
border-bottom: 1px solid var(--beep-border);
}
.beep-embed .beep-gif-search {
flex: 1;
background: var(--beep-input-bg);
border: 1px solid transparent;
border-radius: 9999px;
padding: 10px 16px;
font-family: inherit;
font-size: 14px;
color: var(--beep-text);
outline: 0;
transition: border-color 0.15s ease;
}
.beep-embed .beep-gif-search:focus { border-color: var(--beep-accent); }
.beep-embed .beep-gif-search::placeholder { color: var(--beep-muted); }
.beep-embed .beep-gif-search-btn {
background: var(--beep-accent);
color: var(--beep-on-accent);
border: 0;
border-radius: 9999px;
padding: 0 18px;
font-family: inherit;
font-size: 14px;
font-weight: 700;
cursor: pointer;
}
.beep-embed .beep-gif-search-btn:hover { background: var(--beep-accent-hover); }
.beep-embed .beep-gif-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 4px;
padding: 12px 16px 16px;
min-height: 160px;
}
.beep-embed .beep-gif-grid > p { grid-column: 1 / -1; margin: 0; color: var(--beep-muted); }
.beep-embed .beep-gif-item {
border-radius: 8px;
overflow: hidden;
cursor: pointer;
aspect-ratio: 1 / 1;
background: var(--beep-input-bg);
transition: opacity 0.15s ease;
}
.beep-embed .beep-gif-item:hover { opacity: 0.8; }
.beep-embed .beep-gif-item img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
margin: 0;
}
/* ---------- Hidden ---------- */
.beep-embed [hidden] { display: none !important; }
/* ---------- Toasts (appended to <body>, theme-independent) ---------- */
.beep-toast {
position: fixed;
left: 50%;
bottom: 32px;
transform: translate(-50%, 16px);
z-index: 100001;
display: flex;
align-items: center;
gap: 16px;
background: #1D9BF0;
color: #fff;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
font-size: 14px;
font-weight: 500;
padding: 12px 20px;
border-radius: 8px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
opacity: 0;
transition: opacity 0.25s ease, transform 0.25s ease;
max-width: calc(100vw - 32px);
}
.beep-toast.beep-toast-visible { opacity: 1; transform: translate(-50%, 0); }
.beep-toast.beep-toast-error { background: #F4212E; }
.beep-toast.beep-toast-success { background: #00BA7C; }
.beep-toast .beep-toast-undo-btn {
background: transparent;
border: 0;
color: #fff;
font-family: inherit;
font-size: 14px;
font-weight: 800;
cursor: pointer;
padding: 4px 8px;
border-radius: 6px;
text-transform: uppercase;
letter-spacing: 0.3px;
}
.beep-toast .beep-toast-undo-btn:hover { background: rgba(255, 255, 255, 0.15); }
/* ---------- Lightbox (appended to <body>) ---------- */
.beep-lightbox {
position: fixed;
inset: 0;
z-index: 100002;
background: rgba(0, 0, 0, 0.9);
display: flex;
align-items: center;
justify-content: center;
cursor: zoom-out;
padding: 24px;
}
.beep-lightbox img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
border-radius: 4px;
}
/* ---------- Mobile ---------- */
@media (max-width: 640px) {
.beep-embed.beep-feed { margin: 0; border-left: 0; border-right: 0; }
.beep-embed .beep-post,
.beep-embed .beep-compose,
.beep-embed .beep-feed-header { padding-left: 12px; padding-right: 12px; }
.beep-embed .beep-actions { max-width: none; }
.beep-embed .beep-avatar { width: 40px; height: 40px; min-width: 40px; }
.beep-embed .beep-input { font-size: 18px !important; }
.beep-embed .beep-gif-grid { grid-template-columns: repeat(2, 1fr); }
.beep-embed .beep-thread-modal,
.beep-embed .beep-gif-modal { padding: 0; }
.beep-embed .beep-thread-dialog,
.beep-embed .beep-gif-dialog { max-height: 100vh; height: 100%; border-radius: 0; border: 0; }
}