Files
jiang13-forum/public/assets/site.css
freefire 40ec20b3df feat: SSR 私信与通知(/messages)
会话列表、读写、未读角标与全部已读;系统会话只读;用户主页可发起私信。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-29 05:59:54 +08:00

437 lines
11 KiB
CSS
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.
/* 姜十三论坛 SSR 骨架样式web_src → public/assets */
:root {
--j13-bg: #f6f4ef;
--j13-surface: #fffdf8;
--j13-text: #1c1917;
--j13-muted: #78716c;
--j13-accent: #0f766e;
--j13-border: #e7e5e4;
--j13-radius: 8px;
--j13-font: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
}
* { box-sizing: border-box; }
body.j13-body {
margin: 0;
font-family: var(--j13-font);
color: var(--j13-text);
background: var(--j13-bg);
line-height: 1.5;
min-height: 100vh;
}
.j13-header {
background: var(--j13-surface);
border-bottom: 1px solid var(--j13-border);
position: sticky;
top: 0;
z-index: 10;
}
.j13-header__inner {
max-width: 1100px;
margin: 0 auto;
padding: 0.75rem 1rem;
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
}
.j13-brand {
display: flex;
align-items: center;
gap: 0.6rem;
text-decoration: none;
color: inherit;
}
.j13-brand__mark {
width: 2rem;
height: 2rem;
border-radius: var(--j13-radius);
background: var(--j13-accent);
color: #fff;
display: grid;
place-items: center;
font-weight: 700;
}
.j13-brand__text { display: flex; flex-direction: column; }
.j13-brand__text strong { font-size: 1rem; }
.j13-brand__slogan { font-size: 0.75rem; color: var(--j13-muted); }
.j13-nav { display: flex; gap: 0.85rem; flex-wrap: wrap; }
.j13-nav a { color: var(--j13-accent); text-decoration: none; font-size: 0.9rem; }
.j13-nav a:hover { text-decoration: underline; }
.j13-layout {
max-width: 1100px;
margin: 0 auto;
padding: 1rem;
display: grid;
grid-template-columns: 200px 1fr;
gap: 1.25rem;
}
@media (max-width: 800px) {
.j13-layout { grid-template-columns: 1fr; }
}
.j13-aside {
display: flex;
flex-direction: column;
gap: 0.25rem;
}
.j13-aside__link {
padding: 0.45rem 0.65rem;
border-radius: var(--j13-radius);
color: var(--j13-text);
text-decoration: none;
font-size: 0.9rem;
}
.j13-aside__link:hover,
.j13-aside__link.is-active {
background: var(--j13-surface);
color: var(--j13-accent);
}
.j13-main {
background: var(--j13-surface);
border: 1px solid var(--j13-border);
border-radius: calc(var(--j13-radius) + 2px);
padding: 1rem 1.1rem 1.25rem;
min-height: 40vh;
}
.j13-feed__header {
display: flex;
flex-wrap: wrap;
align-items: baseline;
justify-content: space-between;
gap: 0.75rem;
margin-bottom: 1rem;
}
.j13-feed__title { margin: 0; font-size: 1.25rem; }
.j13-sort { display: flex; gap: 0.75rem; font-size: 0.875rem; }
.j13-sort a { color: var(--j13-muted); text-decoration: none; }
.j13-sort a.is-active,
.j13-sort a:hover { color: var(--j13-accent); font-weight: 600; }
.j13-post-list { list-style: none; margin: 0; padding: 0; }
.j13-post-item {
padding: 0.85rem 0;
border-top: 1px solid var(--j13-border);
}
.j13-post-item:first-child { border-top: 0; }
.j13-post-item__title {
color: var(--j13-text);
text-decoration: none;
font-weight: 600;
font-size: 1.05rem;
}
.j13-post-item__title:hover { color: var(--j13-accent); }
.j13-post-item__meta {
margin-top: 0.35rem;
font-size: 0.8rem;
color: var(--j13-muted);
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
align-items: center;
}
.j13-tag {
background: #ecfdf5;
color: var(--j13-accent);
padding: 0.1rem 0.4rem;
border-radius: 4px;
font-size: 0.75rem;
}
.j13-tag--pin { background: #fef3c7; color: #92400e; }
.j13-tag--feat { background: #ede9fe; color: #5b21b6; }
.j13-empty { color: var(--j13-muted); }
.j13-pager {
margin-top: 1.25rem;
display: flex;
gap: 1rem;
align-items: center;
font-size: 0.9rem;
}
.j13-pager a { color: var(--j13-accent); }
.j13-footer {
max-width: 1100px;
margin: 0 auto;
padding: 1.5rem 1rem 2rem;
color: var(--j13-muted);
font-size: 0.8rem;
}
.j13-flash, .j13-alert {
max-width: 1100px;
margin: 0.75rem auto;
padding: 0.65rem 1rem;
border-radius: var(--j13-radius);
}
.j13-flash { background: #ecfdf5; color: #065f46; }
.j13-alert--error { background: #fef2f2; color: #991b1b; }
.j13-main--solo {
max-width: 480px;
margin: 2rem auto;
padding: 0 1rem 2rem;
}
.j13-form label {
display: block;
margin-bottom: 0.85rem;
font-size: 0.9rem;
}
.j13-form input, .j13-form textarea {
display: block;
width: 100%;
margin-top: 0.25rem;
padding: 0.5rem 0.65rem;
border: 1px solid var(--j13-border);
border-radius: var(--j13-radius);
font: inherit;
}
.j13-form button, .j13-post__actions button, .j13-comment-form button {
margin-top: 0.5rem;
padding: 0.45rem 0.9rem;
border: 0;
border-radius: var(--j13-radius);
background: var(--j13-accent);
color: #fff;
cursor: pointer;
font: inherit;
}
.j13-inline-form { display: inline; margin: 0; }
.j13-linkbtn {
background: none;
border: 0;
color: var(--j13-accent);
cursor: pointer;
font: inherit;
padding: 0;
text-decoration: underline;
}
.j13-post__title { margin: 0 0 0.5rem; font-size: 1.5rem; }
.j13-post__meta, .j13-post__actions {
display: flex;
flex-wrap: wrap;
gap: 0.5rem 0.75rem;
align-items: center;
color: var(--j13-muted);
font-size: 0.85rem;
margin-bottom: 1rem;
}
.j13-post__content {
background: var(--j13-surface);
border: 1px solid var(--j13-border);
border-radius: var(--j13-radius);
padding: 1rem 1.15rem;
overflow-wrap: anywhere;
}
.j13-comments { margin-top: 2rem; }
.j13-comment-list { list-style: none; margin: 0; padding: 0; }
.j13-comment {
padding: 0.85rem 0;
border-bottom: 1px solid var(--j13-border);
}
.j13-comment__meta {
display: flex;
gap: 0.75rem;
color: var(--j13-muted);
font-size: 0.8rem;
margin-bottom: 0.35rem;
}
.j13-comment-form textarea { width: 100%; }
.j13-muted { color: var(--j13-muted); }
.j13-install fieldset {
border: 1px solid var(--j13-border);
border-radius: var(--j13-radius);
margin: 0 0 1rem;
padding: 0.75rem 1rem 0.25rem;
}
.j13-form select {
display: block;
width: 100%;
margin-top: 0.25rem;
padding: 0.5rem 0.65rem;
border: 1px solid var(--j13-border);
border-radius: var(--j13-radius);
font: inherit;
background: #fff;
}
.j13-form__row {
display: flex;
gap: 0.5rem;
align-items: stretch;
margin-top: 0.25rem;
}
.j13-form__row input { flex: 1; margin-top: 0; }
.j13-btn-secondary {
margin-top: 0 !important;
padding: 0.45rem 0.75rem;
border: 1px solid var(--j13-border) !important;
border-radius: var(--j13-radius);
background: var(--j13-surface) !important;
color: var(--j13-text) !important;
cursor: pointer;
font: inherit;
white-space: nowrap;
}
.j13-compose__tools {
display: flex;
gap: 0.75rem;
align-items: center;
margin: 0.5rem 0 1rem;
}
.j13-filebtn { display: inline-block; margin: 0; cursor: pointer; }
.j13-compose { max-width: 720px; margin: 0 auto; padding: 1rem; }
.j13-post__content img { max-width: 100%; height: auto; border-radius: 4px; }
.j13-admin { max-width: 880px; margin: 0 auto; padding: 1rem 1rem 2.5rem; }
.j13-admin h1 { margin: 0 0 0.75rem; font-size: 1.4rem; }
.j13-admin h2 { margin: 1.75rem 0 0.75rem; font-size: 1.1rem; }
.j13-admin-nav {
display: flex;
flex-wrap: wrap;
gap: 0.75rem 1rem;
margin-bottom: 1.25rem;
padding-bottom: 0.75rem;
border-bottom: 1px solid var(--j13-border);
font-size: 0.9rem;
}
.j13-admin-nav a { color: var(--j13-muted); text-decoration: none; }
.j13-admin-nav a:hover,
.j13-admin-nav a.is-active { color: var(--j13-accent); font-weight: 600; }
.j13-admin-stats {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-wrap: wrap;
gap: 1rem;
}
.j13-admin-stats li {
min-width: 5.5rem;
padding: 0.75rem 1rem;
background: var(--j13-surface);
border: 1px solid var(--j13-border);
border-radius: var(--j13-radius);
display: flex;
flex-direction: column;
gap: 0.2rem;
}
.j13-admin-stats strong { font-size: 1.35rem; }
.j13-admin-stats span { font-size: 0.8rem; color: var(--j13-muted); }
.j13-admin-list { list-style: none; margin: 0; padding: 0; }
.j13-admin-card {
padding: 1rem 0;
border-bottom: 1px solid var(--j13-border);
}
.j13-admin-form { max-width: 36rem; }
.j13-admin-actions {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
align-items: flex-end;
margin-top: 0.5rem;
}
.j13-admin-reject {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
align-items: center;
margin: 0;
}
.j13-admin-reject input { width: auto; min-width: 12rem; margin: 0; }
.j13-admin-reject button { margin: 0; }
.j13-profile { max-width: 720px; margin: 0 auto; padding: 1rem 1rem 2.5rem; }
.j13-profile h1 { margin: 0 0 0.75rem; font-size: 1.4rem; }
.j13-profile h2 { margin: 1.5rem 0 0.65rem; font-size: 1.05rem; }
.j13-profile__card {
margin: 1rem 0;
padding: 0.85rem 0;
border-bottom: 1px solid var(--j13-border);
}
.j13-avatar {
width: 64px;
height: 64px;
object-fit: cover;
border-radius: 50%;
border: 1px solid var(--j13-border);
}
.j13-avatar--lg { width: 88px; height: 88px; }
.j13-avatar--placeholder {
display: inline-flex;
align-items: center;
justify-content: center;
background: var(--j13-surface);
color: var(--j13-muted);
font-weight: 600;
font-size: 1.5rem;
}
.j13-user-hero {
display: flex;
gap: 1rem;
align-items: flex-start;
margin-bottom: 1.25rem;
}
.j13-user-hero h1 { margin: 0 0 0.35rem; font-size: 1.35rem; }
.j13-user-sig { margin: 0.5rem 0 0; white-space: pre-wrap; }
.j13-badge {
display: inline-block;
min-width: 1.1rem;
padding: 0.05rem 0.35rem;
border-radius: 999px;
background: var(--j13-accent);
color: #fff;
font-size: 0.7rem;
font-weight: 600;
line-height: 1.2;
text-align: center;
vertical-align: middle;
}
.j13-messages { max-width: 720px; margin: 0 auto; padding: 1rem 1rem 2.5rem; }
.j13-messages h1 { margin: 0 0 0.75rem; font-size: 1.35rem; }
.j13-msg-list { list-style: none; margin: 0; padding: 0; }
.j13-msg-item {
border-bottom: 1px solid var(--j13-border);
}
.j13-msg-item a {
display: grid;
gap: 0.2rem;
padding: 0.85rem 0;
color: inherit;
text-decoration: none;
}
.j13-msg-item.is-unread a strong { color: var(--j13-accent); }
.j13-msg-item__preview {
color: var(--j13-muted);
font-size: 0.9rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.j13-msg-thread { list-style: none; margin: 1rem 0; padding: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.j13-msg-bubble {
max-width: 92%;
padding: 0.65rem 0.85rem;
border: 1px solid var(--j13-border);
border-radius: var(--j13-radius);
background: var(--j13-surface);
align-self: flex-start;
}
.j13-msg-bubble.is-self {
align-self: flex-end;
background: #eff6ff;
border-color: #bfdbfe;
}
.j13-msg-bubble.is-system { max-width: 100%; }
.j13-msg-bubble__subj { font-weight: 600; margin-bottom: 0.25rem; }
.j13-msg-bubble__body { white-space: pre-wrap; overflow-wrap: anywhere; }
.j13-msg-compose { margin-top: 1.25rem; }