/**
 * vivid · 鲜活多彩 — 渐变全宽 banner header + 瀑布流 + 单栏 detail + 单行 footer
 * 令牌前缀 --vu- / 类前缀 .vu-（零冲突）
 */
:root {
    --vu-grad: linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%);
    --vu-bg: #ffffff;
    --vu-bg-2: #f8f7fc;
    --vu-ink: #1a1a2e;
    --vu-ink-2: #555;
    --vu-mute: #999;
    --vu-accent: #764ba2;
    --vu-accent-2: #f093fb;
    --vu-line: rgba(118,75,162,.12);
    --vu-radius: 12px;
    --vu-shadow: 0 4px 20px rgba(118,75,162,.10);
    --vu-font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
    --vu-maxw: 1100px;
}
* { margin:0; padding:0; box-sizing:border-box; }
body.vu-body { font-family: var(--vu-font); background: var(--vu-bg); color: var(--vu-ink); line-height:1.65; -webkit-font-smoothing:antialiased; }
img { max-width:100%; display:block; }
a { color: var(--vu-accent); text-decoration:none; transition:color .15s; }
a:hover { color: var(--vu-accent-2); }
h1,h2,h3 { margin:0; font-weight:700; line-height:1.3; }
button { font-family:inherit; cursor:pointer; border:none; background:none; }
input { font-family:inherit; }
:focus-visible { outline:2px solid var(--vu-accent); outline-offset:2px; border-radius:3px; }
.vu-visually-hidden { position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap; }
.vu-container { max-width:var(--vu-maxw); margin:0 auto; padding:0 20px; }

/* === 全宽渐变 banner header（非吸顶条） === */
.vu-banner { position:relative; overflow:hidden; }
.vu-banner-bg { position:absolute; inset:0; background:var(--vu-grad); opacity:.95; }
.vu-banner-inner { position:relative; max-width:var(--vu-maxw); margin:0 auto; padding:18px 20px; display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.vu-brand { font-size:22px; font-weight:800; color:#fff; flex-shrink:0; letter-spacing:.02em; }
.vu-brand:hover { color:#fff; }
.vu-nav { display:flex; align-items:center; gap:2px; flex:1; flex-wrap:wrap; }
.vu-nav-link { padding:7px 14px; color:rgba(255,255,255,.85); font-size:14px; font-weight:600; border-radius:8px; transition:color .15s,background .15s; cursor:pointer; }
.vu-nav-link:hover,.vu-nav-link.is-active { color:#fff; background:rgba(255,255,255,.18); }
.vu-nav-group { position:relative; }
.vu-nav-arrow { font-size:9px; opacity:.7; }
.vu-nav-sub { position:absolute;top:calc(100% + 6px);left:0;min-width:150px;background:#fff;border:1px solid var(--vu-line);border-radius:10px;padding:5px;box-shadow:var(--vu-shadow);opacity:0;visibility:hidden;transform:translateY(-5px);transition:.2s;z-index:60; }
.vu-nav-group:hover .vu-nav-sub,.vu-nav-group.is-open .vu-nav-sub { opacity:1;visibility:visible;transform:translateY(0); }
.vu-nav-sublink { display:block;padding:8px 12px;font-size:13px;color:var(--vu-ink-2);border-radius:6px; }
.vu-nav-sublink:hover,.vu-nav-sublink.is-active { color:var(--vu-accent);background:var(--vu-bg-2); }
.vu-search { display:flex;align-items:center;gap:0;background:rgba(255,255,255,.2);border-radius:999px;padding:3px 3px 3px 14px; }
.vu-search-input { background:none;border:none;outline:none;color:#fff;font-size:13px;width:140px; }
.vu-search-input::placeholder { color:rgba(255,255,255,.6); }
.vu-search-btn { display:grid;place-items:center;width:28px;height:28px;background:rgba(255,255,255,.3);color:#fff;border-radius:50%; }
.vu-menu-btn { display:none;flex-direction:column;gap:4px;padding:6px; }
.vu-menu-btn span { width:22px;height:2px;background:#fff;border-radius:1px; }
.vu-scrim { position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:55; }
.vu-scrim[hidden] { display:none; }
.vu-main { min-height:60vh; }

/* === 瀑布流 masonry === */
.vu-masonry { column-count:5; column-gap:14px; }
.vu-card { break-inside:avoid; margin-bottom:14px; border-radius:var(--vu-radius); overflow:hidden; background:var(--vu-bg); border:1px solid var(--vu-line); transition:transform .2s,box-shadow .2s; }
.vu-card:hover { transform:translateY(-3px); box-shadow:var(--vu-shadow); }
.vu-card-link { display:block;color:inherit; }
.vu-card-poster { position:relative; overflow:hidden; border-radius:var(--vu-radius) var(--vu-radius) 0 0; }
.vu-card-poster img { width:100%; height:auto; }
.vu-card-tag { position:absolute;top:8px;right:8px;padding:2px 8px;background:var(--vu-accent);color:#fff;font-size:11px;border-radius:999px;font-weight:700; }
.vu-card-score { position:absolute;bottom:8px;left:8px;padding:2px 8px;background:rgba(255,255,255,.9);color:var(--vu-accent);font-size:11px;border-radius:5px;font-weight:700; }
.vu-card-body { padding:8px 10px 12px; }
.vu-card-title { font-size:14px; font-weight:700; margin-bottom:3px; overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.vu-card-info { font-size:12px; color:var(--vu-mute); margin:0; }

/* === section === */
.vu-section { padding:28px 0; }
.vu-section-title { font-size:1.3rem; margin-bottom:16px; }
.vu-more-link { display:inline-block; margin-top:14px; color:var(--vu-accent); font-weight:600; font-size:14px; }

/* === detail（单栏全宽，海报浮动底部） === */
.vu-detail-bar { padding:20px 20px 16px; background:var(--vu-grad); color:#fff; }
.vu-detail-bar a,.vu-detail-bar .xc-breadcrumb a { color:rgba(255,255,255,.8); }
.vu-detail-bar .xc-breadcrumb { color:rgba(255,255,255,.6); margin-bottom:8px; }
.vu-detail-title { font-size:1.8rem; color:#fff; margin-bottom:8px; }
.vu-detail-content { padding:28px 20px 40px; position:relative; }
.vu-block { margin-bottom:32px; }
.vu-block-title { font-size:1.1rem; margin-bottom:14px; padding-left:12px; border-left:3px solid var(--vu-accent); }
.vu-synopsis { font-size:15px; line-height:1.85; color:var(--vu-ink-2); }
.vu-btn { display:inline-flex;align-items:center;gap:6px;padding:10px 22px;background:var(--vu-accent);color:#fff;border-radius:999px;font-weight:700;font-size:14px;transition:transform .15s; }
.vu-btn:hover { color:#fff; transform:translateY(-1px); }
.vu-btn--play { margin-top:14px; }
.vu-detail-poster-float { float:right; width:120px; margin:0 0 16px 20px; border-radius:var(--vu-radius); overflow:hidden; border:2px solid #fff; box-shadow:var(--vu-shadow); shape-outside:margin-box; }
.vu-detail-poster-float img { width:100%; }
.vu-empty { text-align:center; padding:80px 20px; color:var(--vu-mute); }
.vu-player-wrap { position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:var(--vu-radius);overflow:hidden; }
.vu-player-wrap--page { aspect-ratio:16/9; }
.vu-play-empty { padding:40px;text-align:center;color:var(--vu-mute); }
.vu-play-back { display:inline-flex;align-items:center;gap:5px;color:var(--vu-accent);font-weight:600;font-size:13px; }
.vu-play-title { font-size:1.5rem; margin:10px 0 4px; }
.vu-play-sub { color:var(--vu-mute); font-size:13px; margin-bottom:14px; }
.vu-nextbar { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--vu-bg-2);border-radius:10px;margin-top:14px; }
.vu-ep-groups { margin-top:16px;display:grid;gap:14px; }
.vu-ep-group-title { font-size:14px;color:var(--vu-mute);margin-bottom:8px; }
.vu-ep-list { display:flex;flex-wrap:wrap;gap:7px; }
.vu-ep { padding:7px 14px;background:var(--vu-bg-2);border:1px solid var(--vu-line);border-radius:8px;font-size:13px;font-weight:600;color:var(--vu-ink-2); }
.vu-ep:hover { border-color:var(--vu-accent);color:var(--vu-accent); }
.vu-ep.is-active { background:var(--vu-accent);color:#fff;border-color:transparent; }
.vu-play-eps { background:var(--vu-bg-2);border:1px solid var(--vu-line);border-radius:var(--vu-radius);padding:18px; }

/* === list === */
.vu-list-pad { padding:24px 0 40px; }
.vu-list-head { margin-bottom:18px; }
.vu-list-title { font-size:1.6rem; margin:6px 0; }
.vu-list-sub { color:var(--vu-mute); font-size:13px; }
.vu-filter { background:var(--vu-bg-2);border:1px solid var(--vu-line);border-radius:10px;padding:12px 16px;margin-bottom:20px; }
.vu-filter-row { display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:5px 0; }
.vu-filter-row + .vu-filter-row { border-top:1px solid var(--vu-line); }
.vu-filter-label { width:40px;font-size:12px;color:var(--vu-mute);font-weight:700; }
.vu-filter-item { padding:4px 12px;border-radius:999px;font-size:13px;color:var(--vu-ink-2); }
.vu-filter-item:hover { color:var(--vu-accent);background:var(--vu-bg); }
.vu-filter-item.is-active { background:var(--vu-accent);color:#fff; }
.vu-pagination { display:flex;flex-wrap:wrap;gap:6px;margin-top:28px; }
.vu-page-btn,.vu-page-num { min-width:36px;height:36px;display:grid;place-items:center;padding:0 10px;background:var(--vu-bg);border:1px solid var(--vu-line);border-radius:8px;font-size:13px;color:var(--vu-ink-2); }
.vu-page-btn:hover,.vu-page-num:hover { border-color:var(--vu-accent);color:var(--vu-accent); }
.vu-page-num.is-active { background:var(--vu-accent);color:#fff;border-color:transparent; }

/* === person === */
.vu-person-head { padding:20px 0; }
.vu-person-name { font-size:1.6rem; }
.vu-person-sub { color:var(--vu-mute); font-size:13px; }
.vu-person-body { padding:20px 0 40px; }
.vu-media-list { display:grid;gap:14px; }
.vu-media { display:grid;grid-template-columns:100px 1fr;gap:14px;padding:14px;background:var(--vu-bg);border:1px solid var(--vu-line);border-radius:10px; }
.vu-media-poster { position:relative;border-radius:6px;overflow:hidden;aspect-ratio:2/3; }
.vu-media-poster img { width:100%;height:100%;object-fit:cover; }
.vu-media-badge { position:absolute;bottom:5px;left:5px;padding:2px 6px;background:rgba(0,0,0,.7);color:#fff;font-size:10px;border-radius:3px; }
.vu-media-body h3 { font-size:1.05rem;margin-bottom:5px; }
.vu-media-meta { display:flex;gap:8px;font-size:12px;color:var(--vu-mute);margin-bottom:5px; }
.vu-media-score { color:var(--vu-accent);font-weight:700; }
.vu-media-blurb { font-size:13px;color:var(--vu-ink-2); }
.vu-media-link { color:var(--vu-accent);font-size:12px;font-weight:600; }
.vu-person-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px; }
.vu-person-card-link { display:grid;grid-template-columns:40px 1fr;gap:10px;align-items:center;padding:12px;background:var(--vu-bg);border:1px solid var(--vu-line);border-radius:10px; }
.vu-person-card-link:hover { border-color:var(--vu-accent); }
.vu-person-avatar { width:40px;height:40px;display:grid;place-items:center;background:var(--vu-grad);color:#fff;font-size:18px;font-weight:800;border-radius:10px; }
.vu-person-card-name { font-weight:700;font-size:14px; }
.vu-person-card-count { font-size:11px;color:var(--vu-mute); }

/* === rank === */
.vu-rank-list { display:grid;gap:10px; }
.vu-rank-item { display:grid;grid-template-columns:36px 70px 1fr;gap:12px;align-items:center;padding:12px;background:var(--vu-bg);border:1px solid var(--vu-line);border-radius:10px; }
.vu-rank-item.is-top { border-color:var(--vu-accent); }
.vu-rank-num { width:32px;height:32px;display:grid;place-items:center;font-weight:800;font-size:15px;background:var(--vu-bg-2);color:var(--vu-mute);border-radius:8px; }
.vu-rank-item.is-top .vu-rank-num { background:var(--vu-accent);color:#fff; }
.vu-rank-poster { width:70px;border-radius:6px;overflow:hidden;aspect-ratio:2/3; }
.vu-rank-poster img { width:100%;height:100%;object-fit:cover; }
.vu-rank-body h2 { font-size:15px; }
.vu-rank-body h2 a { color:var(--vu-ink); }

/* === footer（单行横条） === */
.vu-footer { background:var(--vu-ink); padding:18px 20px; }
.vu-foot-inner { max-width:var(--vu-maxw);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap; }
.vu-foot-links { display:flex;gap:16px;flex-wrap:wrap; }
.vu-foot-links a { color:rgba(255,255,255,.7);font-size:13px; }
.vu-foot-links a:hover { color:#fff; }
.vu-foot-social { display:flex;gap:8px; }
.vu-soc { width:28px;height:28px;display:grid;place-items:center;background:var(--soc,#555);color:#fff;border-radius:50%;font-size:12px;font-weight:700; }
.vu-foot-copy { color:rgba(255,255,255,.5);font-size:12px;margin:0; }
.vu-foot-copy a { color:rgba(255,255,255,.5); }

/* totop */
.vu-totop { position:fixed;right:22px;bottom:84px;z-index:80;display:grid;place-items:center;width:44px;height:44px;background:var(--vu-grad);color:#fff;border-radius:50%;box-shadow:var(--vu-shadow);transition:transform .15s; }
.vu-totop:hover { transform:translateY(-3px); }
.vu-totop[hidden] { display:none; }

/* _shared 重染 */
body .xc-footer-rich { display:none!important; }
body .xc-meta-tag { background:var(--vu-bg-2);border:1px solid var(--vu-line);color:var(--vu-ink-2); }
body .xc-meta-badge--score { background:rgba(118,75,162,.1);color:var(--vu-accent); }
body .xc-kpi-item { background:var(--vu-bg-2);border-color:var(--vu-line); }
body .xc-kpi-num { color:var(--vu-accent); }
body .xc-notice { background:var(--vu-bg-2);border-color:var(--vu-line);color:var(--vu-ink-2); }
body .xc-faq { background:var(--vu-bg-2);border:1px solid var(--vu-line);border-radius:var(--vu-radius);padding:16px 18px;margin-bottom:24px; }
body .xc-faq h2 { font-size:1.1rem; }
body .xc-appdl { background:var(--vu-grad);border:none;color:#fff; }
body .xc-appdl-text h3,body .xc-appdl-text p { color:#fff!important; }

/* 响应式 */
@media(max-width:1024px) { .vu-masonry { column-count:4; } }
@media(max-width:768px) { .vu-masonry { column-count:3; } .vu-detail-poster-float { width:90px; } }
@media(max-width:860px) {
    .vu-menu-btn { display:flex; }
    .vu-search { display:none; }
    .vu-nav { display:none; position:fixed;top:0;left:0;right:0;bottom:0;flex-direction:column;background:#fff;padding:60px 20px 20px;z-index:56;overflow-y:auto; }
    .vu-nav.is-open { display:flex; }
    .vu-nav-link { color:var(--vu-ink);padding:14px;font-size:16px;border-bottom:1px solid var(--vu-line); }
    .vu-nav-group,.vu-nav-sub { position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:none;background:none;padding-left:12px; }
}
@media(max-width:520px) {
    .vu-masonry { column-count:2; } .vu-container { padding:0 14px; }
    .vu-totop { bottom:72px;right:16px;width:40px;height:40px; }
    .vu-detail-poster-float { float:none;width:100%;max-width:160px;margin:0 auto 16px; }
    .vu-rank-item { grid-template-columns:28px 56px 1fr;gap:8px; }
    .vu-media { grid-template-columns:80px 1fr; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { transition:none!important;animation:none!important; } }
/* vodplay rank sidebar grid */
.vu-play-grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 28px; align-items: start; }
.vu-play-main { min-width: 0; }
.vu-play-aside { display: flex; flex-direction: column; gap: 18px; position: sticky; top: 80px; }
.vu-side-rank { margin: 0; }
@media (max-width: 900px) {
    .vu-play-grid { grid-template-columns: 1fr; }
    .vu-play-aside { position: static; }
}
