Files
nba-fan-hub/static/style.css
T

162 lines
12 KiB
CSS
Raw Permalink 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.
:root {
--bg: #0d1117; --bg2: #161b22; --card: #1c2333; --line: #2d3748;
--txt: #e6edf3; --sub: #8b949e; --orange: #f97316; --orange2: #fb923c;
--blue: #38bdf8; --green: #34d399; --red: #f87171; --radius: 12px;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { background: var(--bg); color: var(--txt); font-family: "PingFang SC", "Microsoft YaHei", system-ui, sans-serif; min-height: 100vh; display: flex; flex-direction: column; }
/* ---------- 顶栏 ---------- */
.topbar { background: linear-gradient(135deg, #1a120b 0%, #241a10 60%, #1c2333 100%); border-bottom: 1px solid var(--line); padding: 14px 24px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; position: sticky; top: 0; z-index: 10; }
.logo { display: flex; align-items: center; gap: 12px; }
.logo-ball { font-size: 34px; filter: drop-shadow(0 0 8px rgba(249,115,22,.6)); }
.logo h1 { font-size: 22px; letter-spacing: 1px; background: linear-gradient(90deg, #fb923c, #f97316, #fbbf24); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.logo .sub { font-size: 12px; color: var(--sub); margin-top: 2px; }
.tabs { display: flex; gap: 6px; flex-wrap: wrap; }
.admin-link { font-size: 18px; color: var(--sub); text-decoration: none; padding: 6px 10px; border: 1px solid var(--line); border-radius: 999px; transition: .2s; }
.admin-link:hover { color: var(--orange2); border-color: var(--orange2); }
.tab { background: transparent; border: 1px solid var(--line); color: var(--sub); padding: 8px 14px; border-radius: 999px; cursor: pointer; font-size: 14px; transition: .2s; }
.tab:hover { color: var(--txt); border-color: var(--orange2); }
.tab.active { background: linear-gradient(135deg, #f97316, #ea580c); color: #fff; border-color: transparent; box-shadow: 0 2px 12px rgba(249,115,22,.35); }
main { flex: 1; width: 100%; max-width: 1200px; margin: 0 auto; padding: 20px 16px 40px; }
.view { display: none; }
.view.active { display: block; }
/* ---------- 对话 ---------- */
.chat-wrap { display: flex; flex-direction: column; height: calc(100vh - 190px); min-height: 480px; }
.chat-list { flex: 1; overflow-y: auto; padding: 8px 4px 16px; display: flex; flex-direction: column; gap: 14px; scroll-behavior: smooth; }
.msg { display: flex; gap: 10px; max-width: 88%; }
.msg.user { align-self: flex-end; flex-direction: row-reverse; }
.avatar { width: 38px; height: 38px; border-radius: 50%; background: var(--card); border: 1px solid var(--line); display: flex; align-items: center; justify-content: center; font-size: 19px; flex-shrink: 0; }
.msg.user .avatar { background: linear-gradient(135deg, #f97316, #ea580c); border: none; }
.bubble { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 12px 16px; font-size: 14.5px; line-height: 1.75; white-space: pre-wrap; word-break: break-word; }
.msg.user .bubble { background: #2a1c10; border-color: #7c3a1e; }
.bubble b { color: var(--orange2); }
.bubble em { color: var(--blue); font-style: normal; }
.bubble .hint { color: var(--sub); font-size: 13px; margin-top: 6px; }
.bubble .quick-q { color: var(--blue); cursor: pointer; text-decoration: none; border-bottom: 1px dashed var(--blue); }
.bubble .quick-q:hover { color: var(--orange2); border-bottom-color: var(--orange2); }
.bubble ul { margin: 6px 0 6px 18px; }
.bubble li { margin: 3px 0; }
/* ---------- Markdown 渲染(需求3 ---------- */
.md { line-height: 1.8; }
.md h1, .md h2, .md h3, .md h4 { margin: 12px 0 6px; line-height: 1.4; }
.md h1 { font-size: 17px; } .md h2 { font-size: 16px; } .md h3, .md h4 { font-size: 15px; }
.md h1::before, .md h2::before { content: ""; }
.md p { margin: 6px 0; }
.md ul, .md ol { margin: 6px 0 6px 20px; }
.md li { margin: 3px 0; }
.md code { background: #0d1117; border: 1px solid var(--line); border-radius: 5px; padding: 1px 6px; font-size: 12.5px; font-family: Consolas, monospace; color: var(--green); }
.md pre { background: #0d1117; border: 1px solid var(--line); border-radius: 10px; padding: 12px; overflow-x: auto; margin: 8px 0; }
.md pre code { background: transparent; border: none; padding: 0; color: var(--txt); }
.md blockquote { border-left: 3px solid var(--orange2); padding: 2px 12px; margin: 8px 0; color: var(--sub); background: rgba(249,115,22,.06); border-radius: 0 8px 8px 0; }
.md table { display: block; width: 100%; overflow-x: auto; margin: 10px 0; }
.md table th, .md table td { padding: 7px 10px; font-size: 12.5px; }
.md table th { background: var(--bg2); color: var(--orange2); }
.md hr { border: none; border-top: 1px solid var(--line); margin: 10px 0; }
.md a { color: var(--blue); text-decoration: none; }
.md a:hover { text-decoration: underline; }
/* ---------- 参考资讯折叠块(需求4 ---------- */
.refs { background: #101826; border: 1px solid #1e3a5f; border-radius: 10px; padding: 8px 12px; margin-bottom: 10px; font-size: 13px; }
.refs summary { cursor: pointer; color: var(--blue); font-weight: 600; list-style: none; user-select: none; }
.refs summary::-webkit-details-marker { display: none; }
.refs summary::before { content: "▸ "; color: var(--sub); }
.refs[open] summary::before { content: "▾ "; }
.refs ul { margin: 8px 0 2px 4px; list-style: none; }
.refs li { margin: 6px 0; padding-left: 12px; border-left: 2px solid #1e3a5f; }
.refs li a { color: var(--txt); text-decoration: none; }
.refs li a:hover { color: var(--blue); }
.ref-src { color: var(--sub); font-size: 11.5px; margin-left: 8px; }
/* ---------- 实体特殊标记(需求5 ---------- */
.entity { border-radius: 6px; padding: 0 4px; margin: 0 1px; cursor: pointer; font-weight: 600; transition: .15s; border-bottom: 2px solid transparent; }
.entity:hover { filter: brightness(1.25); }
.entity-team { color: var(--orange2); background: rgba(249,115,22,.12); border-bottom-color: var(--orange2); }
.entity-player { color: var(--blue); background: rgba(56,189,248,.10); border-bottom-color: var(--blue); }
.entity-person { color: var(--green); background: rgba(52,211,153,.10); border-bottom-color: var(--green); }
.entity-game { color: #fbbf24; background: rgba(251,191,36,.10); border-bottom-color: #fbbf24; }
.entity-cards { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.ecard { display: flex; align-items: center; gap: 8px; background: var(--bg2); border: 1px solid var(--line); border-radius: 10px; padding: 7px 12px 7px 9px; cursor: pointer; transition: .15s; max-width: 100%; }
.ecard:hover { border-color: var(--orange2); transform: translateY(-1px); }
.ecard .eico { font-size: 16px; }
.ecard b { display: block; font-size: 13px; line-height: 1.3; }
.ecard small { color: var(--sub); font-size: 11px; }
.src-line { margin-top: 8px; }
.src-tag { display: inline-block; font-size: 11px; color: var(--green); border: 1px solid #1f5c43; background: #0f2a1e; border-radius: 999px; padding: 1px 8px; margin-top: 8px; margin-right: 6px; }
.typing { display: inline-flex; gap: 4px; padding: 6px 2px; }
.typing i { width: 7px; height: 7px; border-radius: 50%; background: var(--sub); animation: blink 1.2s infinite; }
.typing i:nth-child(2) { animation-delay: .2s; } .typing i:nth-child(3) { animation-delay: .4s; }
@keyframes blink { 0%,80%,100% {opacity:.25} 40% {opacity:1} }
.chips { display: flex; gap: 8px; flex-wrap: wrap; padding: 8px 0 10px; }
.chips button { background: var(--card); border: 1px solid var(--line); color: var(--txt); padding: 6px 12px; border-radius: 999px; font-size: 12.5px; cursor: pointer; transition: .15s; }
.chips button:hover { border-color: var(--orange2); color: var(--orange2); }
.input-bar { display: flex; gap: 10px; background: var(--bg2); border: 1px solid var(--line); border-radius: 999px; padding: 8px 10px 8px 18px; }
#chat-input { flex: 1; background: transparent; border: none; outline: none; color: var(--txt); font-size: 15px; }
#send-btn { background: linear-gradient(135deg, #f97316, #ea580c); border: none; color: #fff; padding: 10px 24px; border-radius: 999px; cursor: pointer; font-size: 14px; font-weight: 600; }
#send-btn:disabled { opacity: .5; cursor: wait; }
/* ---------- 通用数据区 ---------- */
.toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 16px; }
.search { background: var(--bg2); border: 1px solid var(--line); color: var(--txt); border-radius: 999px; padding: 8px 16px; font-size: 14px; outline: none; flex: 1; min-width: 180px; max-width: 360px; }
.search:focus { border-color: var(--orange2); }
.btn { background: var(--orange); border: none; color: #fff; border-radius: 999px; padding: 8px 18px; cursor: pointer; font-size: 14px; }
.btn.small { background: transparent; border: 1px solid var(--line); color: var(--sub); padding: 6px 12px; font-size: 13px; }
.btn.small.active { color: var(--orange2); border-color: var(--orange2); background: rgba(249,115,22,.08); }
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; cursor: pointer; transition: .18s; }
.card:hover { transform: translateY(-3px); border-color: var(--orange2); box-shadow: 0 6px 20px rgba(0,0,0,.35); }
.card h3 { font-size: 15.5px; margin-bottom: 4px; }
.card .en { color: var(--sub); font-size: 12px; }
.card .meta { color: var(--sub); font-size: 12.5px; margin-top: 6px; line-height: 1.6; }
.card .tag { display: inline-block; background: rgba(249,115,22,.12); color: var(--orange2); border-radius: 6px; padding: 1px 7px; font-size: 11px; margin-right: 5px; }
.big-num { font-size: 17px; font-weight: 700; color: var(--orange2); }
.list { display: flex; flex-direction: column; gap: 10px; }
.list-item { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 13px 16px; cursor: pointer; transition: .15s; }
.list-item:hover { border-color: var(--orange2); }
.list-item h3 { font-size: 15px; }
.list-item .meta { color: var(--sub); font-size: 13px; margin-top: 3px; }
.score-line { display: flex; align-items: center; gap: 10px; font-size: 15px; }
.score-line .vs { color: var(--sub); font-size: 12px; }
.score-line .win { color: var(--green); font-weight: 700; }
.score-line .lose { color: var(--sub); }
.score-big { font-weight: 800; font-size: 18px; color: var(--txt); margin: 0 2px; }
.status-pill { font-size: 11px; border-radius: 999px; padding: 2px 8px; }
.status-finished { color: var(--green); background: #0f2a1e; }
.status-scheduled { color: var(--blue); background: #0c2233; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; background: var(--card); border-radius: var(--radius); overflow: hidden; }
th, td { padding: 10px 12px; text-align: left; font-size: 13.5px; border-bottom: 1px solid var(--line); }
th { background: var(--bg2); color: var(--sub); font-weight: 600; font-size: 12.5px; }
tr:hover td { background: rgba(249,115,22,.05); }
td.num { text-align: center; }
/* ---------- 弹窗 ---------- */
.modal { position: fixed; inset: 0; background: rgba(0,0,0,.7); display: flex; align-items: center; justify-content: center; z-index: 100; padding: 20px; }
.modal.hidden { display: none; }
.modal-box { background: var(--bg2); border: 1px solid var(--line); border-radius: 16px; max-width: 760px; width: 100%; max-height: 85vh; overflow-y: auto; padding: 26px; position: relative; }
.modal-close { position: absolute; top: 12px; right: 14px; background: none; border: none; color: var(--sub); font-size: 18px; cursor: pointer; }
.modal-close:hover { color: var(--txt); }
.modal-box h2 { font-size: 21px; margin-bottom: 2px; }
.modal-box .en { color: var(--sub); font-size: 13px; }
.kv { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px 14px; margin: 14px 0; }
.kv div { background: var(--card); border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; font-size: 13px; }
.kv .k { color: var(--sub); font-size: 11.5px; display: block; }
.kv .v { font-size: 14px; font-weight: 600; }
.section-title { font-size: 14px; color: var(--orange2); margin: 16px 0 8px; font-weight: 600; }
.news-body { line-height: 1.9; font-size: 14.5px; color: #c9d4e0; }
.footer { text-align: center; color: var(--sub); font-size: 12px; padding: 18px; border-top: 1px solid var(--line); }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: var(--line); border-radius: 4px; }