/* ============ 短剧站 · 网页剧场风格 ============ */
:root{
  --bg:#07080d; --bg2:#0f121b; --card:#12151f; --card2:#171b28;
  --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.14);
  --txt:#f3f5fb; --muted:#a4abbe; --dim:#6a7183;
  --brand:#ff3b52; --brand2:#ff7a45; --gold:#ffc24b;
  --ai1:#8b5cff; --ai2:#22d3ee;
  --radius:16px; --wrap:1220px;
  --grad:linear-gradient(135deg,var(--brand),var(--brand2));
  --ai-grad:linear-gradient(135deg,var(--ai1),var(--ai2));
  --glass:rgba(20,24,36,.6);
  --shadow:0 12px 34px -14px rgba(0,0,0,.65);
  --shadow-lg:0 28px 70px -24px rgba(0,0,0,.75);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",Segoe UI,sans-serif;
  background:var(--bg); color:var(--txt); line-height:1.6;
  -webkit-font-smoothing:antialiased; letter-spacing:.1px; position:relative; min-height:100vh;
}
/* 层次光晕背景 */
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(70vw 55vh at 82% -8%, rgba(139,92,255,.18), transparent 60%),
    radial-gradient(60vw 50vh at 6% 4%, rgba(34,211,238,.12), transparent 55%),
    radial-gradient(80vw 60vh at 50% 120%, rgba(255,59,82,.10), transparent 60%);}
::selection{background:rgba(139,92,255,.35)}
.ai-text{background:var(--ai-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 16px}
.brand-txt{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ---------- 顶部导航 ---------- */
header{position:sticky;top:0;z-index:100;background:rgba(9,11,17,.7);
  backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);
  border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;gap:12px;height:66px}
.logo{display:flex;align-items:center;gap:9px;font-size:22px;font-weight:900;letter-spacing:.2px}
.logo .dot{width:11px;height:26px;border-radius:7px;background:var(--grad);display:inline-block;
  box-shadow:0 0 20px rgba(255,59,82,.55)}
.menu{display:flex;align-items:center;justify-content:space-between;list-style:none;flex:1;min-width:0}
.menu > li:not(.menu-user){flex:0 0 auto}
.menu a{display:flex;align-items:center;justify-content:center;padding:7px 6px;border-radius:10px;font-size:14px;color:var(--muted);transition:.18s;font-weight:500;white-space:nowrap}
.menu a:hover{color:#fff;background:rgba(255,255,255,.07)}
.menu a.active{color:#fff;background:var(--grad)}
.search-box{display:flex;align-items:center;background:rgba(255,255,255,.05);border:1px solid var(--line);
  border-radius:24px;padding:8px 16px;gap:9px;width:260px;transition:.2s}
.search-box:focus-within{border-color:rgba(139,92,255,.7);background:rgba(255,255,255,.07);
  box-shadow:0 0 0 3px rgba(139,92,255,.16)}
.search-box input{background:none;border:none;outline:none;color:var(--txt);width:100%;font-size:14px}
.search-box input::placeholder{color:var(--dim)}
.search-box svg{width:16px;height:16px;fill:var(--ai1);flex-shrink:0}
.menu-toggle{display:none;background:none;border:none;color:#fff;font-size:26px;cursor:pointer}
.m-search{display:none}
/* 搜索：图标按钮（替代原搜索框） */
.search-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
  width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.06);border:1px solid var(--line);
  color:#fff;transition:.18s}
.search-btn:hover{background:rgba(255,255,255,.1);border-color:var(--line2)}
.search-btn .sb-ico{display:flex}
.search-btn .sb-ico svg{width:19px;height:19px;fill:#fff}
.search-btn .sb-lbl{display:none}   /* 桌面：圆图标按钮，不显示文字 */

/* ============ 用户系统：顶栏用户区 + 登录弹窗 ============ */
.user-area{position:relative;flex-shrink:0}
.menu-user{display:none}   /* 桌面隐藏（登录在顶栏）；手机端显示在导航菜单底部 */
.btn-login{background:var(--grad);color:#fff;border:none;border-radius:20px;padding:8px 16px;
  font-size:13.5px;font-weight:700;cursor:pointer;white-space:nowrap;transition:transform .15s,box-shadow .2s}
.btn-login:hover{transform:translateY(-1px);box-shadow:0 8px 20px -6px rgba(255,59,82,.5)}
/* 顶栏头像按钮：只显示头像 */
.u-chip{display:flex;align-items:center;background:none;border:none;padding:0;cursor:pointer;border-radius:50%;
  transition:.15s;line-height:0}
.u-chip:hover{transform:translateY(-1px)}
.u-ava{width:34px;height:34px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:800;font-size:14px;object-fit:cover}
.u-chip .u-ava{box-shadow:0 0 0 2px rgba(255,255,255,.12)}
.u-chip .u-nick{display:none}   /* 顶栏只留头像 */
.u-menu{position:absolute;top:calc(100% + 10px);right:0;width:220px;background:var(--bg2);
  border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);padding:8px;z-index:130}
.u-menu-head{display:flex;align-items:center;gap:10px;padding:8px 8px 12px;border-bottom:1px solid var(--line);margin-bottom:6px}
.u-menu-head .u-ava{width:38px;height:38px;font-size:16px}
.u-menu-id b{display:block;color:var(--txt);font-size:14px}
.u-menu-id small{color:var(--dim);font-size:12px}
.u-menu-item{display:block;width:100%;text-align:left;background:none;border:none;cursor:pointer;
  color:var(--muted);font-size:14px;padding:10px 8px;border-radius:8px;transition:.15s}
.u-menu-item:hover{background:rgba(255,255,255,.06);color:#fff}

.auth-mask{position:fixed;inset:0;z-index:200;background:rgba(4,6,12,.72);backdrop-filter:blur(6px);
  display:none;align-items:center;justify-content:center;padding:20px}
.auth-mask.show{display:flex}
.auth-box{position:relative;width:100%;max-width:360px;background:var(--bg2);border:1px solid var(--line2);
  border-radius:20px;padding:26px 24px 22px;box-shadow:var(--shadow-lg)}
.auth-x{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--dim);font-size:24px;cursor:pointer;line-height:1}
.auth-x:hover{color:#fff}
.auth-brand{margin-bottom:18px}
.auth-logo{height:34px;width:auto}
.auth-tabs{display:flex;gap:6px;background:var(--card);border-radius:12px;padding:4px;margin-bottom:16px}
.auth-tabs button{flex:1;background:none;border:none;color:var(--muted);font-size:14px;font-weight:700;
  padding:9px;border-radius:9px;cursor:pointer;transition:.18s}
.auth-tabs button.active{background:var(--grad);color:#fff}
.auth-body{display:flex;flex-direction:column;gap:10px}
.auth-body input{background:var(--card);border:1px solid var(--line);border-radius:10px;color:var(--txt);
  padding:11px 14px;font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s}
.auth-body input::placeholder{color:var(--dim)}
.auth-body input:focus{border-color:rgba(139,92,255,.6);box-shadow:0 0 0 3px rgba(139,92,255,.15)}
.auth-err{color:var(--brand);font-size:12.5px;min-height:16px}
.auth-submit{background:var(--grad);color:#fff;border:none;border-radius:10px;padding:12px;font-size:15px;
  font-weight:700;cursor:pointer;transition:transform .15s,box-shadow .2s;margin-top:2px}
.auth-submit:hover{transform:translateY(-1px);box-shadow:0 10px 24px -8px rgba(255,59,82,.55)}
.auth-note{color:var(--dim);font-size:11.5px;line-height:1.6;margin-top:4px}
/* 个人设置 */
.set-row{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.set-ava{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:800;font-size:18px}
.set-user{color:var(--dim);font-size:13px}
.set-label{color:var(--muted);font-size:13px;font-weight:600;margin-top:2px}
/* 头像选择网格 */
.ava-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.ava-opt{background:none;border:2px solid transparent;border-radius:50%;padding:0;cursor:pointer;
  line-height:0;transition:.15s;border-radius:50%}
.ava-opt img{width:100%;aspect-ratio:1;border-radius:50%;display:block}
.ava-opt:hover{transform:translateY(-2px)}
.ava-opt.active{border-color:#fff;box-shadow:0 0 0 3px rgba(139,92,255,.5)}
/* ===== 段位头像边框（SVG 装饰外框，叠在头像外圈） ===== */
.avf{position:relative;display:inline-block;line-height:0;vertical-align:middle;flex-shrink:0}
.avf-inner{display:block;line-height:0}
.avf-inner img{display:block;border-radius:50%}
.avf-deco{position:absolute;inset:-32%;pointer-events:none}
.avf-deco svg{width:100%;height:100%;display:block;overflow:visible}
.avf-king .avf-deco,.avf-grandmaster .avf-deco{animation:avfPulse 2.6s ease-in-out infinite}
@keyframes avfPulse{0%,100%{filter:drop-shadow(0 0 2px rgba(255,215,80,.5))}50%{filter:drop-shadow(0 0 7px rgba(255,215,80,.85))}}
/* ===== 边框领取卡片 ===== */
.frame-note{color:var(--muted);font-size:13px;margin-bottom:18px}
.frame-note b{color:var(--gold)}
.frame-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.frame-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 12px 14px;text-align:center}
.frame-card.locked{opacity:.55}
.frame-card .fr-ava{width:60px;height:60px}
.frame-card .fr-name{font-size:15px;font-weight:700;color:var(--txt);margin:12px 0 3px}
.frame-card .fr-need{font-size:12px;color:var(--dim);margin-bottom:12px}
.frame-card .fr-btn{width:100%;border:none;border-radius:10px;padding:9px;font-size:13px;font-weight:700;cursor:pointer;transition:.15s}
.fr-btn.claim{background:var(--grad);color:#fff}
.fr-btn.use{background:rgba(255,255,255,.08);border:1px solid var(--line2);color:#fff}
.fr-btn.using{background:none;border:1px solid var(--brand);color:var(--brand2)}
.fr-btn.lock{background:var(--card2);color:var(--dim);cursor:not-allowed}
.fr-btn:hover:not(.lock):not(.using){transform:translateY(-1px)}
/* 个人空间头部 */
.sp-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.sp-ava{width:64px;height:64px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:800;font-size:26px;object-fit:cover}
.sp-meta{flex:1;min-width:0}
.sp-meta h1{font-size:22px;font-weight:800;margin-bottom:4px}
.sp-meta p{color:var(--dim);font-size:13px}
.sp-stats{display:flex;gap:26px;margin-top:6px}
.sp-stats b{color:var(--txt);font-weight:800;font-size:17px}
.sp-stats small{color:var(--dim);font-size:12px;display:block}
.sp-empty{color:var(--dim);font-size:14px;padding:24px 0;text-align:center}
/* 个人空间：顶部 tab */
.sp-tabs{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}
.sp-tabs button{background:var(--card);border:1px solid var(--line);color:var(--muted);
  font-size:14px;font-weight:600;padding:8px 18px;border-radius:20px;cursor:pointer;transition:.15s;
  display:inline-flex;align-items:center;gap:6px}
.sp-tabs button em{font-style:normal;font-size:12px;color:var(--dim)}
.sp-tabs button:hover{color:#fff;border-color:var(--line2)}
.sp-tabs button.active{background:var(--grad);color:#fff;border-color:transparent}
.sp-tabs button.active em{color:rgba(255,255,255,.85)}
.sp-guest{text-align:center;padding:40px 0}
.sp-guest p{color:var(--muted);margin-bottom:16px}

/* ---------- 通用区块标题 ---------- */
.section{padding:30px 0}
/* 含面包屑的列表/详情页：顶部留白收紧，不影响首页区块节奏 */
.section:has(.crumb){padding-top:12px}
.sec-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
/* 标签详情 /biaoqian/{slug}/：「相关内容」贴着页头、「相关标签」贴着网格，都缺上边距 */
.page-tag-detail .sec-head{margin-top:26px}
.sec-head h2{font-size:23px;font-weight:800;display:flex;align-items:center;gap:11px;letter-spacing:-.3px}
.sec-head h2::before{content:"";width:4px;height:20px;border-radius:4px;background:var(--grad)}
.sec-head a{color:var(--muted);font-size:14px;transition:.15s;display:inline-flex;align-items:center;gap:4px}
.sec-head a:hover{color:var(--brand2)}

/* ---------- 首页 Banner ---------- */
.hero{position:relative;border-radius:24px;overflow:hidden;margin-top:26px;
  min-height:380px;display:flex;align-items:flex-end;padding:44px;
  border:1px solid var(--line);box-shadow:var(--shadow-lg);
  background:linear-gradient(120deg,#2b1055,#7597de)}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(7,8,13,.97),rgba(7,8,13,.35) 58%,transparent),
    radial-gradient(60% 80% at 85% 20%,rgba(139,92,255,.28),transparent 70%)}
.hero-inner{position:relative;z-index:2;max-width:580px}
.hero .tag{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.1);
  border:1px solid var(--line2);backdrop-filter:blur(8px);color:#fff;font-size:12px;
  padding:6px 14px;border-radius:30px;font-weight:700;margin-bottom:16px}
.hero h1{font-size:40px;font-weight:900;line-height:1.14;margin-bottom:12px;letter-spacing:-1.2px}
.hero p{color:#d7dbe8;margin-bottom:20px;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;max-width:520px}
.hero-meta{display:flex;gap:16px;color:#cbd0e0;font-size:14px;margin-bottom:22px}
.hero-meta b{color:var(--gold)}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;gap:8px;padding:12px 28px;border-radius:14px;
  font-weight:700;font-size:15px;cursor:pointer;border:none;transition:transform .18s,box-shadow .18s,background .18s}
.btn-play{background:var(--grad);color:#fff;box-shadow:0 10px 26px -8px rgba(255,59,82,.55)}
.btn-play:hover{transform:translateY(-2px);box-shadow:0 16px 34px -8px rgba(255,59,82,.65)}
.btn-ghost{background:rgba(255,255,255,.08);color:#fff;border:1px solid var(--line2);backdrop-filter:blur(6px)}
.btn-ghost:hover{background:rgba(255,255,255,.16)}
/* 收藏 / 分享：图标+文字方形按钮 */
.btn-ico{flex-direction:column;gap:4px;padding:10px 16px;background:rgba(255,255,255,.08);color:#fff;
  border:1px solid var(--line2);font-size:12px;font-weight:600;line-height:1}
.btn-ico:hover{background:rgba(255,255,255,.16)}
.btn-ico svg{width:22px;height:22px;fill:currentColor;transition:transform .18s}
.btn-ico:active svg{transform:scale(.85)}
.btn-ico.on{color:#ff3b52;border-color:rgba(255,59,82,.5);background:rgba(255,59,82,.12)}
/* 轻提示 toast */
.toast{position:fixed;left:50%;bottom:40px;transform:translate(-50%,10px);z-index:2000;
  background:rgba(20,22,30,.96);color:#fff;font-size:14px;font-weight:600;padding:11px 20px;border-radius:12px;
  border:1px solid rgba(255,255,255,.12);box-shadow:0 12px 30px -8px rgba(0,0,0,.6);
  opacity:0;visibility:hidden;transition:opacity .2s,transform .2s;pointer-events:none;
  max-width:min(88vw,360px);text-align:center;line-height:1.5}
.toast.show{opacity:1;visibility:visible;transform:translate(-50%,0)}

/* ---------- 分类标签条 ---------- */
.cat-bar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:22px}
.cat-bar a{padding:7px 18px;border-radius:20px;background:var(--card);border:1px solid var(--line);
  color:var(--muted);font-size:14px;transition:.15s}
.cat-bar a:hover,.cat-bar a.active{background:var(--grad);color:#fff;border-color:transparent}
/* 标签榜 chip 条:恒定两行分批展示(drama-tags-hub.js 量真实行高分批)。
   JS 就绪前用 max-height 截断防闪(84px ≈ 两行 chip + 行距);就绪后交给 JS 管 hidden */
.cat-bar--two-rows{max-height:84px;overflow:hidden}
.cat-bar--two-rows.js-batched{max-height:none;overflow:visible}
.tag-more{display:inline-block;margin:-12px 0 22px;background:none;border:none;color:var(--brand2);
  font-size:13px;font-weight:700;cursor:pointer;padding:4px 2px;transition:color .15s}
.tag-more:hover{color:var(--brand)}

/* ---------- 剧集网格 ---------- */
.grid{display:grid;grid-template-columns:repeat(6,1fr);gap:18px}
.card{background:var(--card);border-radius:var(--radius);overflow:hidden;
  border:1px solid var(--line);display:block;position:relative;
  transition:transform .28s cubic-bezier(.2,.7,.2,1),box-shadow .28s,border-color .28s}
.card:hover{transform:translateY(-6px);border-color:var(--line2);box-shadow:var(--shadow-lg)}
.card:hover .poster::after{opacity:.35}
.poster{position:relative;width:100%;aspect-ratio:9/16;display:flex;align-items:center;justify-content:center;
  text-align:center;overflow:hidden}
.poster .p-title{font-weight:900;font-size:17px;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.5);
  z-index:2;line-height:1.25}
.poster .p-sub{position:absolute;top:14px;left:14px;right:14px;z-index:2;font-size:11px;
  color:rgba(255,255,255,.85);font-weight:600}
.poster::after{content:"";position:absolute;inset:0;transition:opacity .28s;background:none}
.badge{position:absolute;top:10px;right:10px;z-index:3;font-size:11px;font-weight:800;
  padding:3px 9px;border-radius:8px;color:#fff}
.badge.free{background:linear-gradient(135deg,#0ca678,#34d399)}   /* 免费看=绿 */
.badge.hot{background:var(--grad)}                                 /* 热播=红橙 */
.badge.new{background:linear-gradient(135deg,#3b82f6,#22d3ee)}    /* 新剧=蓝青 */
.badge.only{background:#7c4dff}
.eps-flag{position:absolute;bottom:10px;left:10px;z-index:3;font-size:11px;font-weight:700;
  padding:3px 8px;border-radius:8px;background:rgba(0,0,0,.6);color:#fff}
.play-ico{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;opacity:0;transition:.2s}
.card:hover .play-ico{opacity:1}
.play-ico span{width:56px;height:56px;border-radius:50%;background:var(--grad);
  box-shadow:0 8px 26px rgba(255,59,82,.55);display:flex;align-items:center;justify-content:center;
  transform:scale(.85);transition:transform .28s}
.card:hover .play-ico span{transform:scale(1)}
.play-ico span::after{content:"";border-left:16px solid #fff;border-top:10px solid transparent;
  border-bottom:10px solid transparent;margin-left:4px}
.card-info{padding:10px 10px}
.card-info h3{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-info .meta{font-size:11.5px;color:var(--dim);margin-top:3px;display:flex;align-items:center;justify-content:space-between;gap:4px}
.card-info .meta > span:first-child{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-info .meta .score{color:var(--gold);font-weight:700;flex-shrink:0}

/* 榜单编号 */
.rank-num{position:absolute;top:0;left:0;z-index:3;font-size:34px;font-weight:900;
  font-style:italic;padding:2px 12px;background:linear-gradient(180deg,rgba(0,0,0,.6),transparent);
  color:#fff;text-shadow:0 2px 6px rgba(0,0,0,.6)}
.card:nth-child(1) .rank-num{color:var(--gold)}
.card:nth-child(2) .rank-num{color:#d9d9d9}
.card:nth-child(3) .rank-num{color:#ff9d5c}

/* ---------- 详情页 ---------- */
/* 详情页大标题：面包屑正下方，横跨整行（封面与简介在其下方） */
.detail-title{font-size:32px;font-weight:900;letter-spacing:-.5px;line-height:1.16;margin:2px 0 14px}
.detail{display:grid;grid-template-columns:321px 1fr;gap:32px;margin-top:14px}   /* 321×570 ≈ 9:16；信息列撑满行高，操作钮贴封面底 */
.detail .d-poster{border-radius:var(--radius);overflow:hidden;position:relative;width:100%;aspect-ratio:9/16;align-self:start}   /* 竖屏短剧比例 9:16，不被信息列拉高 */
.d-info{display:flex;flex-direction:column;min-width:0}
.detail h1{font-size:30px;font-weight:900;margin-bottom:12px}
.d-meta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.d-meta span,.d-meta a{background:var(--card);border:1px solid var(--line);padding:5px 14px;border-radius:20px;font-size:13px;color:var(--muted)}
.d-meta a{transition:.15s}
.d-meta a:hover{color:#fff;border-color:var(--brand);background:rgba(255,59,59,.12)}
.d-meta span.hl{color:var(--gold);border-color:var(--gold)}
.d-stat{display:flex;align-items:flex-end;gap:28px;margin:18px 0;padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.d-stat div{text-align:center}
.d-stat b{display:block;font-size:15px;font-weight:900;color:#fff}   /* 数值与主演字号一致 */
.d-stat small{color:var(--dim);font-size:12px}
.work-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;margin:10px 0 18px;
  padding:15px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.work-meta div{display:grid;grid-template-columns:3.5em 1fr;gap:8px;min-width:0;font-size:13px;line-height:1.6}
.work-meta dt{color:var(--dim)}
.work-meta dd{margin:0;color:var(--txt);min-width:0;word-break:break-word}
.work-meta a{color:var(--brand2)}
@media(max-width:560px){.work-meta{grid-template-columns:1fr}}
.d-desc{color:var(--muted);margin:16px 0 22px;font-size:15px}
/* 详情页 h3 子标题（评分 / 标签），比 h2 小一号，同款品牌色竖条 */
.d-sub{font-size:15px;font-weight:700;color:var(--txt);margin:20px 0 10px;display:flex;align-items:center;gap:8px}
.d-sub::before{content:"";width:3px;height:14px;border-radius:2px;background:var(--grad)}
/* 评分：五星星条(按 score/10 填充) + 数字 */
.d-rating{display:flex;align-items:baseline;gap:10px}
.d-rating .stars{position:relative;display:inline-block;font-size:18px;line-height:1;color:#39404f;letter-spacing:3px}
.d-rating .stars::before{content:"★★★★★"}
.d-rating .stars i{position:absolute;left:0;top:0;overflow:hidden;white-space:nowrap;color:var(--gold);letter-spacing:3px}
.d-rating .stars i::before{content:"★★★★★"}
.d-rating .rv{font-size:22px;font-weight:900;color:var(--gold);line-height:1}
.d-rating .rd{color:var(--dim);font-size:13px}
/* 用户评分：可点击星星 */
.my-rate{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
.my-rate .mr-label{font-size:13px;color:var(--muted)}
.my-rate .mr-stars{display:inline-flex;gap:2px}
.my-rate .mr-star{background:none;border:none;padding:0;cursor:pointer;font-size:22px;line-height:1;
  color:#39404f;transition:color .12s,transform .12s}
.my-rate .mr-star:hover{transform:scale(1.15)}
.my-rate .mr-star.on{color:var(--gold)}
.my-rate .mr-hint{font-size:12px;color:var(--dim)}
/* 标签：chip 样式，同 .d-meta */
.d-tags{display:flex;flex-wrap:wrap;gap:10px}
.d-tags a,.d-tags span{background:var(--card);border:1px solid var(--line);padding:5px 14px;border-radius:20px;font-size:13px;color:var(--muted);transition:.15s}
.d-tags a:hover{color:#fff;border-color:var(--brand);background:rgba(255,59,59,.12)}
/* 视频简介：标题栏用站点左侧品牌色竖条，正文字体与 .page-desc 保持一致。
   展开钮叠在末行右侧，不另占一行，避免把 .d-actions 顶出封面底边。 */
.video-intro{margin:0;position:relative}
/* 与 .sec-head h2（选集/相关推荐）保持一致的标题样式 */
.vi-label{display:flex;align-items:center;gap:11px;font-size:23px;font-weight:800;letter-spacing:-.3px;color:var(--txt);margin:0 0 10px}
.vi-label::before{content:"";width:4px;height:20px;border-radius:4px;background:var(--grad)}
.vi-text{color:var(--muted);font-size:14.5px;line-height:1.75;overflow:hidden;
  transition:max-height .36s ease}
/* 默认最多两行，超出截断（配合 JS「展开/收起」按钮；高度动画由 max-height 承担） */
.vi-text.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding-right:3.8em}
@media(prefers-reduced-motion:reduce){.vi-text{transition:none}}
.vi-toggle{position:absolute;right:0;bottom:0;z-index:1;margin:0;border:none;padding:0;
  background:none;cursor:pointer;
  color:var(--brand2);font-size:13px;font-weight:700;line-height:1.75;transition:color .15s}
.vi-toggle:hover{color:var(--brand)}
.video-intro.is-open .vi-toggle{position:static;display:block;margin-top:8px}
.d-actions{display:flex;gap:12px;margin-top:auto}   /* PC：贴齐左侧封面底边 */

/* 选集 */
.ep-panel{margin-top:38px}
/* ===== 评论区 ===== */
.cm-panel{margin-top:44px}
.cm-count{color:var(--dim);font-weight:600;font-size:16px}
.cm-form{margin-bottom:24px}
.cm-form textarea{width:100%;background:var(--card);border:1px solid var(--line);border-radius:12px;
  color:var(--txt);padding:12px 14px;font-size:14px;line-height:1.6;resize:vertical;min-height:76px;
  font-family:inherit;outline:none;transition:border-color .2s,box-shadow .2s}
.cm-form textarea::placeholder{color:var(--dim)}
.cm-form textarea:focus{border-color:rgba(139,92,255,.6);box-shadow:0 0 0 3px rgba(139,92,255,.15)}
.cm-form-bar{display:flex;align-items:center;gap:10px;margin-top:10px}
.cm-name{flex:0 0 170px;background:var(--card);border:1px solid var(--line);border-radius:10px;
  color:var(--txt);padding:9px 12px;font-size:13px;outline:none;transition:border-color .2s}
.cm-name::placeholder{color:var(--dim)}
.cm-name:focus{border-color:rgba(139,92,255,.6)}
.cm-send{margin-left:auto;background:var(--grad);color:#fff;border:none;border-radius:10px;
  padding:9px 26px;font-size:14px;font-weight:700;cursor:pointer;transition:transform .15s,box-shadow .2s}
.cm-send:hover{transform:translateY(-1px);box-shadow:0 8px 20px -6px rgba(255,59,82,.5)}
.cm-empty{color:var(--dim);font-size:14px;padding:22px 0;text-align:center}
.cm-list{display:flex;flex-direction:column;gap:20px}
.cm-item{display:flex;gap:12px}
.cm-ava{flex-shrink:0;width:40px;height:40px;border-radius:50%;background:var(--ai-grad);color:#0a0a12;
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px}
.cm-body{flex:1;min-width:0}
.cm-meta{display:flex;align-items:center;gap:10px}
.cm-meta b{color:var(--txt);font-weight:700;font-size:14px}
.cm-meta span{color:var(--dim);font-size:12px}
.cm-text{color:var(--muted);font-size:14.5px;line-height:1.7;margin:4px 0 6px;word-break:break-word}
.cm-acts{display:flex;gap:16px}
.cm-acts button{background:none;border:none;color:var(--dim);font-size:12.5px;cursor:pointer;padding:0;transition:color .15s}
.cm-acts button:hover{color:var(--brand2)}
.cm-acts .cm-like.on{color:var(--brand)}
.cm-more{display:block;width:100%;margin-top:6px;padding:10px;background:var(--card);
  border:1px solid var(--line);border-radius:10px;color:var(--muted);font-size:13px;font-weight:600;
  cursor:pointer;transition:.15s}
.cm-more:hover{color:#fff;border-color:var(--line2);background:var(--card2)}
.ep-tabs{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.ep-tabs button{background:var(--card);border:1px solid var(--line);color:var(--muted);
  padding:6px 16px;border-radius:10px;font-size:13px;cursor:pointer}
.ep-tabs button.active{background:var(--grad);color:#fff;border-color:transparent}
.ep-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:10px}   /* 每行 10 个，一组 20 集正好两行 */
.ep-grid a{position:relative;background:var(--card);border:1px solid var(--line);border-radius:10px;
  text-align:center;padding:12px 4px;font-size:14px;font-weight:600;color:var(--txt);transition:.15s}
.ep-grid a:hover{border-color:var(--brand);color:var(--brand2)}
.ep-grid a.locked::after{content:"🔒";position:absolute;top:2px;right:5px;font-size:10px}
.ep-grid a.cur{background:var(--grad);color:#fff;border-color:transparent}

/* ---------- 播放页 ---------- */
.player-wrap{display:grid;grid-template-columns:1fr 340px;gap:24px;margin-top:24px}
.stage{background:#000;border-radius:var(--radius);overflow:hidden;position:relative}
.stage video{width:100%;display:block;aspect-ratio:16/9;background:#000;object-fit:contain}
.stage.portrait video{aspect-ratio:auto;max-height:78vh;margin:0 auto}
.lock-mask{position:absolute;inset:0;background:rgba(8,9,14,.94);display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;padding:24px;z-index:5}
.lock-mask .ic{font-size:44px;margin-bottom:14px}
.lock-mask h3{font-size:20px;margin-bottom:8px}
.lock-mask p{color:var(--muted);margin-bottom:20px;max-width:320px}
.play-head{display:flex;align-items:center;justify-content:space-between;margin:16px 0 6px}
.play-head h1{font-size:22px;font-weight:800}
.orient-toggle{display:flex;gap:8px}
.orient-toggle button{background:var(--card);border:1px solid var(--line);color:var(--muted);
  padding:6px 14px;border-radius:10px;cursor:pointer;font-size:13px}
.orient-toggle button.active{background:var(--grad);color:#fff;border-color:transparent}
.play-nav{display:flex;gap:12px;margin:14px 0}
.side-eps{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;
  max-height:78vh;overflow-y:auto}
.side-eps h4{font-size:16px;margin-bottom:14px;display:flex;justify-content:space-between;align-items:center}
.side-eps h4 small{color:var(--dim);font-weight:400}
.side-eps .ep-grid{grid-template-columns:repeat(auto-fill,minmax(56px,1fr))}

/* ---------- 底部 ---------- */
footer{border-top:1px solid var(--line);margin-top:50px;padding:36px 0;color:var(--dim);font-size:13px}
.foot-grid{display:flex;justify-content:space-between;flex-wrap:wrap;gap:24px;margin-bottom:24px}
.foot-grid a{color:var(--muted);display:block;margin-bottom:8px}
.foot-grid a:hover{color:var(--brand2)}
.foot-title{color:#fff;margin-bottom:12px;font-size:14px;font-weight:700}
.foot-bottom{border-top:1px solid var(--line);padding-top:18px;text-align:center;line-height:1.8}

/* ---------- 空状态 ---------- */
.empty{text-align:center;padding:80px 20px;color:var(--dim)}
.empty .ic{font-size:52px;margin-bottom:14px}
.nf-search{display:flex;max-width:560px;margin:22px auto 0;padding:5px;background:var(--card);
  border:1px solid var(--line);border-radius:13px;transition:border-color .15s,box-shadow .15s}
.nf-search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px rgba(139,92,255,.14)}
.nf-search input{min-width:0;flex:1;height:40px;padding:0 12px;border:0;outline:0;background:transparent;
  color:var(--txt);font-size:14px}
.nf-search input::placeholder{color:var(--dim)}
.nf-search button{height:40px;padding:0 20px;border:0;border-radius:9px;background:var(--grad);
  color:#fff;font-size:14px;font-weight:700;cursor:pointer}

/* ---------- 响应式 ---------- */
@media(max-width:1024px){
  .grid{grid-template-columns:repeat(4,1fr)}
  .player-wrap{grid-template-columns:1fr}
  .side-eps{max-height:none}
}
@media(max-width:768px){
  /* 手机端顶栏：☰导航在左 · logo 居中 · 搜索在右，整体压矮 */
  .nav{position:relative;justify-content:space-between;gap:8px;height:54px}
  .nav .logo-img{height:30px}
  .menu,.search-box{display:none}
  .menu-toggle,.m-search{display:flex;flex-direction:column;align-items:center;gap:2px;
    background:none;border:none;padding:0;width:auto;height:auto;color:#fff;line-height:1}
  .menu-toggle{order:0}
  .m-search{order:2}
  .menu-toggle .ico{font-size:20px}
  .m-search .ico{display:flex}
  .m-search .ico svg{width:20px;height:20px;fill:#fff}
  .menu-toggle .lbl,.m-search .lbl{font-size:10px;font-weight:600;color:var(--muted)}
  .nav .logo{position:absolute;left:50%;transform:translateX(-50%);margin:0}
  /* 手机端保留 AI 小标：绝对定位浮在 logo 右侧，不占宽度，保证 logo 图居中 */
  .nav .logo .ai-tag{display:inline-block;position:absolute;left:100%;top:50%;
    transform:translateY(-50%);margin-left:5px}
  /* 手机端：☰导航在左，搜索图标靠右；登录/用户区移到导航菜单底部 */
  .menu-toggle{order:0}
  /* 手机端搜索：图标+文字（与☰导航同款竖排），去掉圆底 */
  .search-btn{order:1;margin-left:auto;flex-direction:column;gap:2px;width:auto;height:auto;
    background:none;border:none;border-radius:0}
  .search-btn:hover{background:none}
  .search-btn .sb-ico svg{width:22px;height:22px}
  .search-btn .sb-lbl{display:block;font-size:10px;font-weight:600;color:var(--muted);line-height:1}
  #userArea{display:none}                       /* 顶栏不显示登录，改放菜单底部 */
  /* 手机端导航：悬浮卡片面板 + 分类两列网格 */
  .menu.open{display:grid;grid-template-columns:1fr 1fr;gap:8px;position:absolute;
    top:calc(100% + 8px);left:10px;right:10px;z-index:120;border-radius:18px;padding:12px;
    background:rgba(13,16,24,.92);border:1px solid rgba(255,255,255,.12);
    backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);
    box-shadow:0 24px 60px -18px rgba(0,0,0,.7);
    pointer-events:none}                        /* 面板空隙不拦点击，可穿透到下面内容 */
  .menu.open > li{position:relative;list-style:none;pointer-events:auto}  /* 分类卡片本身可点 */
  .menu.open a{display:flex;align-items:center;justify-content:center;text-align:center;
    padding:13px 6px;border-radius:12px;font-size:14.5px;font-weight:600;color:#eef1f7;
    background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);transition:.15s}
  .menu.open a:active{transform:scale(.97)}
  .menu.open a.active{color:#fff;background:var(--grad);border-color:transparent}
  .menu-user{display:block;grid-column:1 / -1;margin-top:4px;padding-top:12px;border-top:1px solid var(--line)}
  .menu-user .btn-login{width:100%;padding:13px;font-size:14.5px}
  .menu-user .u-chip{display:none}              /* 手机端菜单里不再显示折叠头像行，直接展开下方菜单 */
  .menu-user .u-menu{display:block;position:static;width:auto;box-shadow:none;background:transparent;border:none;padding:0}
  /* ⚠️ 必须连 [hidden] 一起放行：.u-menu 的初始 markup 带 hidden（桌面是点头像才展开的
     下拉），而本项目比原型多一条兜底 [hidden]{display:none!important}（原型没有），
     它会把上面这条 display:block 盖掉 → 手机抽屉里用户块整块塌成 0 高，只剩一条分隔线
     （2026-08-13 用户实测 495px 复现；此前我在桌面点过 chip 把 hidden 翻掉了，
     才误以为正常）。手机抽屉里这块本就是常驻展开的，不参与 hidden 折叠语义。 */
  .menu-user .u-menu[hidden]{display:block!important}
  .grid{grid-template-columns:repeat(3,1fr);gap:12px}
  .hero{min-height:260px;padding:22px}
  .hero h1{font-size:24px}
  .detail-title{font-size:24px;margin:0 0 12px}
  .ep-grid{grid-template-columns:repeat(5,1fr)}   /* 手机端 10 列太挤，改 5 列 */
  .detail{grid-template-columns:1fr;gap:20px}
  /* 显式宽度：封面内元素都是绝对定位，用 max-width+auto 会收缩到 0 高度塌陷，必须给定宽 */
  /* 手机端单列不与信息列同高，按 9:16 显示，高度自适应 */
  .detail .d-poster{width:200px;max-width:70%;margin:4px auto 2px;height:auto;aspect-ratio:9/16}
  .poster .p-title{font-size:15px}
  .sec-head h2{font-size:19px}
  .vi-label{font-size:19px}
  /* 手机端操作按钮：第一个（继续/立即）更宽，其余三个等宽；文字横向不竖排 */
  .d-actions{gap:8px}
  .d-actions .btn{flex:1 1 0;min-width:0;padding:12px 4px;font-size:14px;white-space:nowrap}
  .d-actions .btn-play{flex:1.7 1 0;white-space:normal}   /* 继续阅读第X话 允许在空格处换行 */
  .d-actions .btn-ico{padding:10px 4px;font-size:12px}
  .d-actions .btn-ico svg{width:20px;height:20px}
}
@media(max-width:480px){
  .grid{grid-template-columns:repeat(2,1fr)}
}

/* ============ 抖音式竖屏刷剧 feed（play.html） ============ */
body.feed-mode{overflow:hidden}
.feed{position:fixed;inset:0;background:#000;overflow-y:scroll;scroll-snap-type:y mandatory;
  -webkit-overflow-scrolling:touch;scrollbar-width:none}
.feed::-webkit-scrollbar{display:none}
.slide{position:relative;height:100vh;height:100dvh;scroll-snap-align:start;scroll-snap-stop:always;
  display:flex;align-items:center;justify-content:center;overflow:hidden}
/* 居中的竖屏“手机”舞台，两侧纯黑 */
.v-stage{position:relative;z-index:1;width:100%;height:100%;max-width:min(52vh,460px);
  display:flex;align-items:center;justify-content:center;overflow:hidden;background:#000}
.slide .sbg{position:absolute;inset:0;filter:blur(30px) brightness(.5);transform:scale(1.2);z-index:0}
.slide.is-playing .sbg{opacity:0;filter:none;transform:none}
.slide .player-poster{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:contain;background:#000}
.slide.mounted .player-poster{opacity:0;pointer-events:none}
/* 视频统一完整展示：保持片源原比例，不裁切；比例不一致时由 .sbg 模糊背景补足空白。 */
.slide video{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;background:transparent}
.slide .tap-ic{position:absolute;z-index:4;inset:0;display:flex;align-items:center;justify-content:center;
  pointer-events:none;opacity:0;transition:.2s}
.slide .tap-ic.show{opacity:1}
.slide .tap-ic span{width:78px;height:78px;border-radius:50%;background:rgba(0,0,0,.45);
  display:flex;align-items:center;justify-content:center}
.slide .tap-ic span::after{content:"";border-left:26px solid #fff;border-top:16px solid transparent;
  border-bottom:16px solid transparent;margin-left:6px}
.slide .grad-b{position:absolute;z-index:2;left:0;right:0;bottom:0;height:45%;
  background:linear-gradient(to top,rgba(0,0,0,.85),transparent);pointer-events:none}
/* buffering 指示 */
.slide .spin{position:absolute;z-index:3;width:38px;height:38px;border:3px solid rgba(255,255,255,.25);
  border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite;display:none}
.slide.buffering .spin{display:block}
.slide .player-error{position:absolute;z-index:8;left:50%;top:50%;transform:translate(-50%,-50%);width:min(84%,340px);
  padding:20px;border:1px solid rgba(255,255,255,.18);border-radius:14px;background:rgba(8,9,14,.9);
  color:#fff;text-align:center;box-shadow:0 12px 40px rgba(0,0,0,.45)}
.slide .player-error strong,.slide .player-error span{display:block}
.slide .player-error strong{font-size:17px;margin-bottom:8px}
.slide .player-error span{color:var(--muted);font-size:13px;line-height:1.6}
.slide .player-error div{display:flex;gap:10px;justify-content:center;margin-top:14px}
.slide .player-error button,.slide .player-error a{border:0;border-radius:18px;padding:8px 15px;font-size:13px;cursor:pointer}
.slide .player-error button{background:var(--grad);color:#fff}
.slide .player-error a{background:rgba(255,255,255,.12);color:#fff}
.slide.has-error .spin{display:none}
@keyframes spin{to{transform:rotate(360deg)}}

/* 底部剧集信息 */
.slide .s-info{position:absolute;z-index:3;left:16px;right:78px;bottom:26px;color:#fff}
.slide .s-info .s-title{font-size:18px;font-weight:800;margin-bottom:6px;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.slide .s-info .s-ep{display:inline-block;background:var(--grad);font-size:12px;font-weight:700;
  padding:2px 10px;border-radius:20px;margin-bottom:8px}
.slide .s-info .s-desc{font-size:13px;color:#dfe2ec;line-height:1.5;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.slide .s-info .s-tags{margin-top:8px;font-size:12px;color:#b9c0d4}
/* 全屏沉浸态：隐藏底部剧集文案、渐变和右侧操作栏；视频继续按原比例完整显示，不放大裁切。 */
body.feed-mode.is-clean-fullscreen .slide .s-info,
body.feed-mode.is-clean-fullscreen .slide .grad-b,
body.feed-mode.is-clean-fullscreen .slide .rail{display:none}
body.feed-mode.is-clean-fullscreen .v-stage{max-width:none;width:100%;height:100%;border-radius:0}

.ls-exit{display:none;position:absolute;z-index:8;top:12px;left:12px;width:40px;height:40px;
  border:none;border-radius:50%;background:rgba(0,0,0,.45);color:#fff;font-size:28px;
  line-height:1;cursor:pointer;align-items:center;justify-content:center;padding:0 0 4px;
  touch-action:manipulation}
body.feed-mode.is-ls-full .ls-exit{display:flex}
body.feed-mode.is-ls-full .feed-top,
body.feed-mode.is-ls-full .hint{display:none}
html.is-ls-rotate,body.feed-mode.is-ls-rotate{overflow:hidden!important;touch-action:none}
body.feed-mode.is-ls-rotate .feed{
  inset:0!important;width:100%!important;height:100%!important;transform:none!important;
  overflow:hidden!important;scroll-snap-type:none;-webkit-overflow-scrolling:auto!important}
body.feed-mode.is-ls-rotate .slide{width:100%!important;height:100%!important;max-height:none}
body.feed-mode.is-ls-rotate .v-stage{
  position:fixed!important;top:0;left:100vw;width:100vh;height:100vw;width:100dvh;height:100dvw;
  max-width:none;border-radius:0;z-index:50;transform-origin:top left;transform:rotate(90deg)}

/* 右侧操作栏 */
.rail{position:absolute;z-index:4;right:12px;bottom:30px;display:flex;flex-direction:column;
  gap:20px;align-items:center}
.rail .r-btn{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;
  background:none;border:none;color:#fff;font-size:12px}
.rail .r-btn .ic{width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.14);
  display:flex;align-items:center;justify-content:center;font-size:22px;transition:.15s}
.rail .r-btn:active .ic{transform:scale(.88)}
.rail .r-btn.on .ic{background:rgba(255,59,59,.9)}
.rail .r-cover{width:48px;height:48px;border-radius:50%;border:2px solid #fff;overflow:hidden;
  margin-bottom:6px;display:flex;align-items:center;justify-content:center;font-weight:900;color:#fff;font-size:11px;text-align:center;line-height:1.1}

/* 顶部返回条 */
.feed-top{position:fixed;z-index:20;top:0;left:0;right:0;display:flex;align-items:center;gap:12px;
  padding:14px 16px;background:linear-gradient(to bottom,rgba(0,0,0,.6),transparent);color:#fff}
.feed-top .back{font-size:24px;cursor:pointer;background:none;border:none;color:#fff;line-height:1}
.feed-top .ft-title{font-weight:700;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feed-top .ft-sub{margin-left:auto;font-size:12px;color:#cfd3e0}
.feed-top .ft-full{margin-left:auto;flex-shrink:0;background:none;border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;padding:6px;opacity:.9;transition:opacity .15s}
.feed-top .ft-full:hover{opacity:1}
.feed-top .ft-full svg{width:22px;height:22px;fill:#fff}

/* 底部进度条常驻显示，热区可拖 */
.slide .s-prog-dock{position:absolute;z-index:6;left:0;right:0;bottom:0;height:56px;
  padding:0 12px calc(12px + env(safe-area-inset-bottom,0px));
  display:flex;align-items:flex-end;touch-action:none}
.slide .s-prog{position:relative;width:100%;height:4px;border-radius:2px;
  background:rgba(255,255,255,.28);cursor:pointer}
.slide .s-prog i{position:relative;display:block;height:100%;width:0;background:var(--brand2);border-radius:2px}
.slide .s-prog i::after{content:"";position:absolute;right:-5px;top:50%;transform:translateY(-50%);
  width:11px;height:11px;border-radius:50%;background:var(--brand2);box-shadow:0 0 0 2px rgba(255,255,255,.85);transition:.12s}
.slide .s-prog.seeking{height:6px}
.slide .s-prog.seeking i::after{width:15px;height:15px}
@media(hover:none),(pointer:coarse){
  .slide .s-prog-dock{height:68px}
  .slide .s-prog{height:5px}
  .slide .s-prog i::after{width:14px;height:14px}
  .slide .s-prog.seeking i::after{width:18px;height:18px}
}

/* 竖屏锁集遮罩 */
.slide .v-lock{position:absolute;z-index:6;inset:0;background:rgba(8,9,14,.9);display:flex;
  flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;color:#fff}
.slide .v-lock .ic{font-size:46px;margin-bottom:14px}
.slide .v-lock h3{font-size:19px;margin-bottom:8px}
.slide .v-lock p{color:var(--muted);margin-bottom:20px;max-width:260px;font-size:14px}

/* 选集 bottom sheet */
.sheet-mask{position:fixed;inset:0;z-index:30;background:rgba(0,0,0,.5);display:none}
.sheet-mask.open{display:block}
.sheet{position:fixed;z-index:31;left:0;right:0;bottom:0;max-height:70vh;background:var(--bg2);
  border-radius:20px 20px 0 0;padding:18px 16px 30px;transform:translateY(100%);transition:.28s;overflow-y:auto}
.sheet.open{transform:translateY(0)}
.sheet h2{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font-size:17px;font-weight:700}
.sheet h2 .close{background:none;border:none;color:var(--muted);font-size:22px;cursor:pointer}
.sheet .ep-grid{grid-template-columns:repeat(auto-fill,minmax(56px,1fr))}
.hint{position:fixed;z-index:15;left:50%;bottom:14px;transform:translateX(-50%);color:rgba(255,255,255,.6);
  font-size:12px;pointer-events:none;animation:fade 3s ease-in-out forwards}
@keyframes fade{0%,60%{opacity:1}100%{opacity:0}}

/* ============ 阅读器（漫画 comic.html / 小说 novel.html） ============ */
.reader-mode{background:var(--bg)}
.rd-top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;
  padding:0 14px;height:52px;background:rgba(9,11,17,.85);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
.rd-top .back{font-size:24px;background:none;border:none;color:#fff;cursor:pointer;line-height:1;flex-shrink:0}
.rd-title{flex:1;font-weight:700;font-size:15px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rd-menu{flex-shrink:0;background:rgba(255,255,255,.08);border:1px solid var(--line);color:#fff;
  font-size:13px;font-weight:600;padding:6px 14px;border-radius:16px;cursor:pointer;transition:.15s}
.rd-mini{flex-shrink:0;background:none;border:1px solid var(--line);color:var(--muted);font-size:12px;
  font-weight:700;min-width:32px;height:28px;border-radius:8px;cursor:pointer;transition:.15s}
.rd-mini:hover,.rd-menu:hover{color:#fff;border-color:var(--line2)}
/* 漫画：竖向滚动看图 */
.comic{max-width:720px;margin:0 auto;display:flex;flex-direction:column}
.comic img{display:block;width:100%;height:auto}
.comic-cover{max-height:60vh;object-fit:contain}
.comic-end{text-align:center;color:var(--dim);font-size:14px;padding:26px 0 8px}
/* 小说：文字阅读 */
.novel{max-width:720px;margin:0 auto;padding:22px 20px 6px;color:#d7dbe8;line-height:2}
.novel .novel-h{font-size:1.35em;font-weight:800;color:#fff;margin:4px 0 20px;text-align:center}
.novel p{margin:0 0 1.1em;text-indent:2em}
.novel img{display:block;max-width:100%;height:auto;margin:1.2em auto;border-radius:8px}
.novel ul,.novel ol{margin:0 0 1.1em;padding-left:2em}
.novel li{margin:.35em 0}
.novel blockquote{margin:1.2em 0;padding:.2em 1em;border-left:3px solid var(--accent);color:var(--dim)}
.novel h1,.novel h2,.novel h3,.novel h4{margin:1.4em 0 .7em;color:#fff;line-height:1.45}
/* 上一/下一 章节导航 */
.rd-nav{max-width:720px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;
  gap:12px;padding:14px 20px 42px}
.rd-btn{flex:1;background:var(--card);border:1px solid var(--line);color:var(--txt);font-size:14px;font-weight:600;
  padding:11px;border-radius:12px;cursor:pointer;transition:.15s}
.rd-btn:hover:not(:disabled){border-color:var(--brand);color:var(--brand2)}
.rd-btn:disabled{opacity:.4;cursor:not-allowed}
.rd-ch{flex-shrink:0;color:var(--muted);font-size:13px;white-space:nowrap}

@media(min-width:768px){
  .v-stage{border-radius:16px}
  /* 顶栏面包屑对齐中间的竖屏舞台（宽度一致、居中），像手机端一样贴在竖屏顶部 */
  .feed-top{left:50%;right:auto;transform:translateX(-50%);width:min(52vh,460px);
    max-width:calc(100% - 24px);border-radius:16px 16px 0 0}
}

/* feed 里可点击的标签 */
.slide .s-tags a{display:inline-block;color:#ffd7c2;margin-right:10px;padding:1px 0;
  text-shadow:0 1px 3px rgba(0,0,0,.6)}
.slide .s-tags a:active{opacity:.6}

/* footer 发布页 / 永久地址 */
.foot-addr{margin-top:10px;display:flex;flex-direction:column;gap:0}
.foot-addr .addr-row{font-size:13px;display:flex;flex-wrap:wrap;align-items:center;line-height:1.5}
/* 社交图标 */
.foot-social{display:flex;gap:12px;margin-top:18px}
.foot-social a{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--muted);transition:.18s}
.foot-social a:hover{background:rgba(255,255,255,.1);border-color:var(--line2);color:#fff;transform:translateY(-2px)}
.foot-social svg{width:18px;height:18px;fill:currentColor}
/* 标签(含冒号)统一宽度 + 两端对齐：三行冒号与网址对齐成一竖列 */
.foot-addr .addr-label{color:var(--gold);font-weight:700;flex-shrink:0;
  display:inline-block;width:6.5em;text-align:justify;text-align-last:justify}
.foot-addr a{color:var(--muted);word-break:break-all;margin-bottom:0}
.foot-addr a:hover{color:var(--brand2)}

/* 一级导航下拉二级 */
.menu li{position:relative}
.menu .caret{font-size:10px;opacity:.55}
.dropdown{position:absolute;top:calc(100% + 4px);left:0;min-width:220px;background:var(--bg2);
  border:1px solid var(--line);border-radius:12px;padding:8px;display:none;
  grid-template-columns:1fr 1fr;gap:2px;z-index:200;box-shadow:0 14px 34px rgba(0,0,0,.55)}
.menu li:hover .dropdown{display:grid}
.dropdown a{padding:8px 12px;border-radius:8px;font-size:13px;color:var(--muted);white-space:nowrap}
.dropdown a:hover{background:var(--card);color:#fff}
@media(max-width:768px){
  .dropdown{position:static;display:grid;box-shadow:none;border:none;background:transparent;
    padding:2px 0 8px 14px;min-width:0}
  .menu li:hover .dropdown{display:grid}
}

/* 首页一级分类导航（一排六个） */
.cat-tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.cat-tile{position:relative;border-radius:14px;overflow:hidden;aspect-ratio:16/10;
  display:flex;flex-direction:column;justify-content:flex-end;padding:14px;color:#fff;
  transition:.2s;border:1px solid var(--line)}
.cat-tile::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.5),transparent 65%)}
.cat-tile:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(0,0,0,.5)}
.cat-tile .ct-name{position:relative;z-index:2;font-weight:800;font-size:16px;text-shadow:0 1px 4px rgba(0,0,0,.4)}
.cat-tile .ct-count{position:relative;z-index:2;font-size:12px;opacity:.9;margin-top:2px}
@media(max-width:768px){.cat-tiles{grid-template-columns:repeat(3,1fr)}}

/* ============ AI 元素 & 现代化组件 ============ */
/* 顶栏 AI 小标 */
.logo .ai-tag{font-size:9px;font-weight:800;letter-spacing:.5px;padding:2px 6px;border-radius:6px;
  background:var(--ai-grad);color:#0a0a12;margin-left:2px;transform:translateY(-8px)}

/* AI 智能推荐 板块标题的紫青强调 */
.sec-head h2.ai-head::before{background:var(--ai-grad)}
.ai-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;
  padding:3px 10px;border-radius:20px;background:rgba(139,92,255,.14);
  border:1px solid rgba(139,92,255,.4);color:#c9b6ff;margin-left:8px}
.ai-chip .spark{filter:drop-shadow(0 0 4px rgba(139,92,255,.8))}

/* AI 推荐横幅 */
.ai-strip{position:relative;margin-top:26px;border-radius:20px;overflow:hidden;
  border:1px solid rgba(139,92,255,.35);
  background:linear-gradient(120deg,rgba(139,92,255,.16),rgba(34,211,238,.10));
  padding:20px 24px;display:flex;align-items:center;gap:18px}
.ai-strip::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(40% 120% at 12% 20%,rgba(139,92,255,.28),transparent 60%)}
.ai-strip .ai-orb{position:relative;z-index:2;width:52px;height:52px;border-radius:16px;flex-shrink:0;
  background:var(--ai-grad);display:flex;align-items:center;justify-content:center;font-size:26px;
  box-shadow:0 8px 26px rgba(139,92,255,.5)}
.ai-strip .ai-txt{position:relative;z-index:2}
.ai-strip .ai-txt h3{font-size:17px;font-weight:800;margin-bottom:2px}
.ai-strip .ai-txt p{font-size:13px;color:var(--muted)}
.ai-strip .ai-go{position:relative;z-index:2;margin-left:auto}

/* 悬浮 AI 助手按钮 */
.ai-fab{position:fixed;right:22px;bottom:24px;z-index:60;width:60px;height:60px;border-radius:50%;
  background:var(--ai-grad);border:none;cursor:pointer;color:#0a0a12;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  box-shadow:0 12px 34px rgba(139,92,255,.55);transition:transform .2s}
.ai-fab .fi{font-size:22px;line-height:1}
.ai-fab .fl{font-size:9px;font-weight:800;line-height:1;color:#fff;white-space:nowrap}
.ai-fab:hover{transform:translateY(-3px) scale(1.05)}
.ai-fab::after{content:"";position:absolute;inset:-6px;border-radius:50%;
  border:2px solid rgba(139,92,255,.5);animation:aipulse 2.4s ease-out infinite}
@keyframes aipulse{0%{transform:scale(.9);opacity:.8}100%{transform:scale(1.5);opacity:0}}

/* AI 助手面板 */
.ai-panel{position:fixed;right:22px;bottom:96px;z-index:61;width:340px;max-width:calc(100vw - 44px);
  background:var(--glass);backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px);
  border:1px solid var(--line2);border-radius:20px;box-shadow:var(--shadow-lg);
  padding:18px;transform:translateY(12px) scale(.96);opacity:0;pointer-events:none;transition:.22s}
.ai-panel.open{transform:none;opacity:1;pointer-events:auto}
.ai-panel .aph{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.ai-panel .aph .orb{width:36px;height:36px;border-radius:11px;background:var(--ai-grad);
  display:flex;align-items:center;justify-content:center;font-size:18px}
.ai-panel .aph b{font-size:15px}
.ai-panel .aph small{color:var(--muted);font-size:11px;display:block}
.ai-panel .aph .x{margin-left:auto;background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer}
.ai-panel .tips{display:flex;flex-direction:column;gap:8px}
.ai-panel .tips a{display:block;padding:11px 13px;border-radius:12px;background:rgba(255,255,255,.05);
  border:1px solid var(--line);font-size:13.5px;color:var(--txt);transition:.15s}
.ai-panel .tips a:hover{border-color:rgba(139,92,255,.6);background:rgba(139,92,255,.12)}
.ai-panel .tips a{cursor:pointer} /* 随机两项无 href(JS 跳转),保持手型 */
.ai-panel .aibar{display:flex;gap:8px;margin-top:14px}
.ai-panel .aibar input{flex:1;background:rgba(255,255,255,.05);border:1px solid var(--line);
  border-radius:12px;padding:10px 12px;color:var(--txt);outline:none;font-size:13px}
.ai-panel .aibar input:focus{border-color:rgba(139,92,255,.6)}
.ai-panel .aibar button{background:var(--ai-grad);border:none;border-radius:12px;padding:0 15px;
  color:#0a0a12;font-weight:800;cursor:pointer;font-size:14px}

/* badge 渐变化 */
.badge{box-shadow:0 4px 12px rgba(0,0,0,.3)}
.badge.hot{background:var(--grad)}
.badge.only{background:linear-gradient(135deg,#7c4dff,#b06dff)}
.eps-flag{background:rgba(0,0,0,.5);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.12)}

@media(max-width:768px){
  .ai-fab{width:54px;height:54px;font-size:23px;right:16px;bottom:18px}
  .ai-panel{right:16px;bottom:82px}
  .ai-strip{flex-wrap:wrap}
  .hero h1{font-size:26px;letter-spacing:-.5px}
  .hero{padding:24px;min-height:280px}
}

/* ============ 面包屑 & 页头（SEO） ============ */
.crumb{display:flex;flex-wrap:wrap;align-items:center;gap:7px;font-size:13px;color:var(--dim);margin:6px 0 14px}
.crumb a{color:var(--muted);transition:.15s}
.crumb a:hover{color:var(--brand2)}
.crumb .sep{opacity:.45}
.crumb .cur{display:inline-block;max-width:min(56vw,420px);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;color:#fff;font-weight:700;vertical-align:bottom}
.page-head{margin-bottom:24px;position:relative}
/* 分类页排序按钮（最热 / 最新） */
.sort-bar{position:absolute;top:4px;right:0;display:inline-flex;gap:4px;
  background:var(--card);border:1px solid var(--line);border-radius:22px;padding:3px}
.sort-bar button{background:none;border:none;color:var(--muted);font-size:13px;font-weight:600;
  padding:6px 16px;border-radius:18px;cursor:pointer;transition:.15s;white-space:nowrap}
.sort-bar button:hover{color:#fff}
.sort-bar button.active{background:var(--grad);color:#fff}
.sort-bar button:disabled{cursor:wait;opacity:.65}
@media(max-width:768px){ .sort-bar{position:static;margin-top:14px} }

/* ============ 官方发布页 addr.html ============ */
.ap-wrap{max-width:760px;padding-bottom:50px}
.ap-hero{text-align:center;padding:26px 0 22px}
.ap-logo{height:52px;width:auto;margin:0 auto 16px}
.ap-title{font-size:26px;font-weight:900;letter-spacing:-.5px;margin-bottom:10px}
.ap-sub{color:var(--muted);font-size:14px;line-height:1.9;margin-bottom:22px}
.ap-enter{display:inline-block;background:var(--grad);color:#fff;font-size:17px;font-weight:800;
  padding:14px 46px;border-radius:30px;box-shadow:0 14px 34px -12px rgba(255,59,82,.6);transition:transform .15s}
.ap-enter:hover{transform:translateY(-2px)}
.ap-warn{margin-top:16px;color:var(--gold);font-size:12.5px;background:rgba(255,194,75,.08);
  border:1px solid rgba(255,194,75,.25);border-radius:10px;padding:8px 14px;display:inline-block}
.ap-sec{margin-top:30px}
.ap-h{font-size:17px;font-weight:800;display:flex;align-items:center;gap:10px;margin-bottom:14px}
.ap-h::before{content:"";width:4px;height:17px;border-radius:3px;background:var(--grad)}
.ap-lines{display:flex;flex-direction:column;gap:12px}
.ap-line{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:14px 16px;flex-wrap:wrap}
.ap-idx{flex-shrink:0;font-size:12px;font-weight:700;color:#fff;background:rgba(255,255,255,.1);
  border:1px solid var(--line);border-radius:8px;padding:4px 10px}
.ap-linfo{flex:1;min-width:150px;display:flex;flex-direction:column;gap:2px}
.ap-lbl{color:var(--gold);font-size:12.5px;font-weight:700}
.ap-url{color:var(--muted);font-size:15px;word-break:break-all;transition:.15s}
.ap-url:hover{color:var(--brand2)}
.ap-copy{flex-shrink:0;background:rgba(255,255,255,.08);border:1px solid var(--line2);color:#fff;
  border-radius:10px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:.15s}
.ap-copy:hover{background:rgba(255,255,255,.14)}
.ap-visit{flex-shrink:0;background:var(--grad);color:#fff;border-radius:10px;padding:9px 18px;
  font-size:13px;font-weight:700;transition:transform .15s}
.ap-visit:hover{transform:translateY(-1px)}
.ap-line-sm{padding:12px 16px}
.ap-contacts{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.ap-contact{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;
  background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 12px;transition:.15s}
.ap-contact:hover{border-color:var(--line2);background:var(--card2);transform:translateY(-2px)}
.ap-cico{font-size:26px}
.ap-clbl{color:var(--txt);font-size:14px;font-weight:700}
.ap-cval{color:var(--dim);font-size:12px;word-break:break-all}
.ap-backup{display:flex;flex-direction:column;gap:10px}
.ap-tips{color:var(--muted);font-size:14px;line-height:2;padding-left:20px}
.ap-tips b{color:var(--txt)}
.ap-foot{text-align:center;color:var(--dim);font-size:12.5px;margin-top:34px;line-height:1.9}
@media(max-width:768px){ .ap-contacts{grid-template-columns:repeat(2,1fr)} .ap-visit{order:3} }
.page-head h1{font-size:28px;font-weight:800;letter-spacing:-.5px;margin-bottom:10px;line-height:1.2}
.page-desc{color:var(--muted);font-size:14.5px;line-height:1.75;max-width:820px}
@media(max-width:768px){.page-head h1{font-size:22px}}

/* ---------- 相关分类互链（分类页 FAQ 上方 SEO 内链） ---------- */
.rel-sec{padding-top:6px}
.rel-list{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;list-style:none;margin:0;padding:0}
.rel-list li{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 18px;transition:.18s;cursor:pointer}
.rel-list li:hover{border-color:var(--line2);background:var(--card2);
  transform:translateY(-2px);box-shadow:var(--shadow)}
.rel-t{display:inline-flex;align-items:center;gap:6px;font-size:16px;font-weight:800;letter-spacing:-.2px}
.rel-t::after{content:"›";color:var(--brand2);font-weight:700;transition:.18s}
.rel-t::before{content:"";position:absolute;inset:0;z-index:1}   /* 整卡可点，锚文本仍只有标题 */
.rel-list li:hover .rel-t{color:var(--brand2)}
.rel-list li:hover .rel-t::after{transform:translateX(3px)}
.rel-d{margin-top:7px;color:var(--muted);font-size:13.5px;line-height:1.65}
@media(max-width:900px){.rel-list{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.rel-list{grid-template-columns:1fr;gap:10px}
  .rel-list li{padding:14px 16px}.rel-d{font-size:13px}}

/* ============ 常见问题 FAQ（分类页 · 原生 details 折叠） ============ */
.faq-sec{padding-top:10px}
/* 电脑端两列一排；每格按自身内容高度排列，展开不撑高同排另一格 */
.faq-list{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:12px 16px}
.faq-item{background:var(--card);border:1px solid var(--line);border-radius:14px;
  overflow:hidden;transition:border-color .2s,background .2s,box-shadow .2s}
.faq-item:hover{border-color:var(--line2)}
.faq-item[open]{background:var(--card2);border-color:rgba(139,92,255,.38);box-shadow:var(--shadow)}
.faq-item summary{list-style:none;cursor:pointer}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.faq-q{padding:16px 18px;font-size:15px;font-weight:600;color:var(--txt);display:flex;
  align-items:center;justify-content:space-between;gap:14px;transition:color .15s}
.faq-item:hover .faq-q{color:#fff}
/* +/− 图标：展开时竖线隐藏、变减号并转品牌红 */
.faq-ic{position:relative;flex-shrink:0;width:18px;height:18px}
.faq-ic::before,.faq-ic::after{content:"";position:absolute;background:var(--brand2);border-radius:2px;
  transition:transform .25s ease,opacity .2s,background .2s}
.faq-ic::before{top:8px;left:1px;width:16px;height:2px}
.faq-ic::after{left:8px;top:1px;width:2px;height:16px}
.faq-item[open] .faq-ic::before{background:var(--brand)}
.faq-item[open] .faq-ic::after{transform:rotate(90deg);opacity:0}
.faq-a{padding:0 18px 16px;color:var(--muted);font-size:14px;line-height:1.85;max-width:800px}
.faq-item[open] .faq-a{animation:faqIn .26s ease}
@keyframes faqIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
@media(max-width:768px){
  .faq-list{grid-template-columns:1fr}
  .faq-q{font-size:14px;padding:14px}
  .faq-a{padding:0 14px 14px;font-size:13.5px}
}

/* 播放页顶栏面包屑 */
.feed-top .ft-title a{color:#fff;opacity:.85}
.feed-top .ft-title a:hover{opacity:1}
.feed-top .ft-title .sep{opacity:.5;margin:0 6px;font-weight:400}

/* 视觉隐藏但对爬虫/读屏可见（SEO/无障碍） */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* 分页器 */
.pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin:32px 0 8px}
.pg{min-width:38px;height:38px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:11px;border:1px solid var(--line);background:var(--card);color:var(--muted);
  font-size:14px;font-weight:600;cursor:pointer;transition:.15s}
.pg:hover{border-color:var(--brand);color:#fff;background:var(--card2)}
.pg.cur{background:var(--grad);color:#fff;border-color:transparent}
.pg.disabled{opacity:.4;cursor:not-allowed}
.pg.dots{border:none;background:none;cursor:default;min-width:22px;padding:0}
.pg-total{color:var(--dim);font-size:13px;margin-left:8px}
.pg-wrap{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:13px;margin-left:6px}
.pg-input{width:58px;height:38px;text-align:center;border-radius:10px;border:1px solid var(--line);
  background:var(--card);color:var(--txt);outline:none;font-size:14px;-moz-appearance:textfield}
.pg-input::-webkit-outer-spin-button,.pg-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.pg-input:focus{border-color:var(--brand)}
.pg-jump{min-width:auto;padding:0 14px;color:var(--txt)}
@media(max-width:768px){ .pg-total,.pg-prev,.pg-next{font-size:13px} .pg-wrap{width:100%;justify-content:center;margin:6px 0 0} }

/* 封面图（有 cover 就盖住渐变；标题/角标仍叠在上面） */
.poster .p-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.d-poster .p-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}   /* 铺满容器裁切，无留空 */

/* ============ 层叠展开式横向轮播（coverflow） ============ */
.reel{display:flex;overflow:hidden;padding:12px 2px 16px;scrollbar-width:none;margin-top:4px}
.reel::-webkit-scrollbar{display:none}
/* 折叠卡弹性均分剩余空间 → 整行铺满，不留白 */
.reel-item{position:relative;flex:1 1 0;min-width:0;height:460px;border-radius:16px;overflow:hidden;
  background-size:cover;background-position:center;cursor:pointer;z-index:1;
  margin-left:-14px;border:2px solid rgba(255,255,255,.08);
  box-shadow:0 16px 30px -12px rgba(0,0,0,.75);
  transition:flex-grow .45s cubic-bezier(.2,.7,.2,1),flex-basis .45s cubic-bezier(.2,.7,.2,1),border-color .3s,box-shadow .3s}
.reel-item:first-child{margin-left:0}
.reel-item.active{flex:0 0 320px;z-index:5;border-color:var(--brand);
  box-shadow:0 26px 50px -14px rgba(0,0,0,.9)}
.reel-shade{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgba(0,0,0,.92),rgba(0,0,0,.2) 46%,transparent 72%)}
.reel-badge{position:absolute;top:12px;left:12px;z-index:3;font-size:11px;font-weight:800;
  padding:3px 9px;border-radius:8px;background:var(--grad);color:#fff;box-shadow:0 4px 10px rgba(0,0,0,.4)}
.reel-badge.free{background:linear-gradient(135deg,#0ca678,#34d399)}
.reel-badge.new{background:linear-gradient(135deg,#3b82f6,#22d3ee)}
.reel-badge.hot{background:var(--grad)}
.reel-info{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:18px 20px}
.reel-title{font-size:20px;font-weight:800;color:#fff;line-height:1.25;text-shadow:0 2px 8px rgba(0,0,0,.7)}
.reel-item:not(.active) .reel-title{font-size:14.5px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.reel-desc{max-height:0;opacity:0;overflow:hidden;color:#e2e5ef;font-size:13.5px;line-height:1.65;
  transition:max-height .45s,opacity .35s,margin .45s}
.reel-item.active .reel-desc{max-height:48px;opacity:1;margin:10px 0 8px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.reel-meta{max-height:0;opacity:0;overflow:hidden;font-size:12.5px;font-weight:700;color:var(--gold);
  transition:max-height .35s,opacity .35s}
.reel-item.active .reel-meta{max-height:26px;opacity:1}
@media(max-width:768px){
  .reel{overflow-x:auto}
  .reel-item{flex:0 0 74px;height:360px;margin-left:-12px}
  .reel-item.active{flex:0 0 240px}
  .reel-title{font-size:17px}
}

/* logo 图片：按高度自适应，不改导航/页脚尺寸 */
.logo-img{height:46px;width:auto;display:block}
footer .logo-img{height:48px}

/* 首页站点标题 + 描述 */
.home-intro{padding:30px 0 6px}
.home-intro h1{font-size:32px;font-weight:900;letter-spacing:-.6px;line-height:1.2;margin-bottom:10px}
/* 描述不设固定 max-width：880px 比单行所需的 1188px 窄一截，桌面下必然折行且第二行只剩「享。」两个字（2026-08-13 实测）。
   放开到容器宽后 ≥1024px 单行放得下。窄屏仍会折行，用 text-wrap:balance 把各行拉平：
   实测 900px 下 pretty 与不写完全一样（59/3 字，末行只剩「畅享。」）——pretty 是按
   「词」避孤字的，中文没有空格分词，对它无效；balance 才有效（33/29 字）。
   375px 下同理 24/25/13 → 20/22/20。老浏览器不认这个属性时退回普通折行，与改造前一致。 */
.home-intro p{color:var(--muted);font-size:15px;max-width:100%;line-height:1.75;text-wrap:balance}
.intro-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.intro-tags span{font-size:13px;font-weight:500;color:var(--txt);background:rgba(255,255,255,.05);
  border:1px solid var(--line);border-radius:20px;padding:6px 14px}
@media(max-width:768px){
  .home-intro{padding:20px 0 4px}
  .home-intro h1{font-size:23px}
  .home-intro p{font-size:14px}
}

/* ============ 悬浮：返回顶部 + 浏览记录 ============ */
.side-fab{position:fixed;right:22px;width:56px;height:56px;border-radius:50%;z-index:59;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  background:var(--grad);color:#fff;border:none;cursor:pointer;
  box-shadow:0 12px 28px -8px rgba(255,59,82,.55);transition:transform .2s,opacity .25s,visibility .25s}
.side-fab:hover{transform:translateY(-3px)}
.side-fab .fi{font-size:20px;line-height:1}
.side-fab .fl{font-size:9px;font-weight:800;line-height:1;white-space:nowrap}
#fabHist{bottom:92px}
#fabTop{bottom:160px;opacity:0;visibility:hidden;transform:translateY(10px)}
#fabTop.show{opacity:1;visibility:visible;transform:none}
/* 浏览记录面板 */
.hist-panel{position:fixed;right:22px;bottom:160px;z-index:61;width:330px;max-width:calc(100vw - 44px);
  background:var(--glass);backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px);
  border:1px solid var(--line2);border-radius:20px;box-shadow:var(--shadow-lg);padding:16px;
  transform:translateY(12px) scale(.96);opacity:0;pointer-events:none;transition:.22s}
.hist-panel.open{transform:none;opacity:1;pointer-events:auto}
.hp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.hp-head b{font-size:15px}
.hp-head .x{background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer;line-height:1}
.hist-list{display:flex;flex-direction:column;gap:8px;max-height:54vh;overflow-y:auto}
.hist-item{display:flex;gap:11px;align-items:center;padding:8px;border-radius:12px;
  background:rgba(255,255,255,.04);border:1px solid var(--line);transition:.15s}
.hist-item:hover{border-color:var(--brand);background:rgba(255,59,82,.09)}
.ht-cover{width:40px;height:71px;border-radius:8px;background-size:cover;background-position:center;
  flex-shrink:0;border:1px solid var(--line)}
.ht-title{font-size:13.5px;font-weight:600;color:var(--txt);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;max-width:215px}
.ht-sub{font-size:12px;color:var(--muted);margin-top:2px}
.hist-empty{color:var(--dim);text-align:center;padding:28px 0;font-size:14px;line-height:1.9}
@media(max-width:768px){
  .side-fab{right:16px;width:50px;height:50px}
  #fabHist{bottom:82px}
  #fabTop{bottom:142px}
  .hist-panel{right:16px;bottom:142px}
}

/* ===================================================================
   dx158 SSR 适配层 —— 原型 styles.css 之下的增量段（勿改上方原型段落）
   =================================================================== */
/* 加密封面：<img data-src> 经 lazyload+crypto-worker 解密后换 src；
   解密前是透明 gif，露出下层 posterBG 渐变兜底（对齐原型 c1/c2 渐变海报） */
.reel-item .reel-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.reel-item .reel-shade,.reel-item .reel-info,.reel-item .reel-badge{pointer-events:none}
/* 顶部公告条（sq_setting: drama_notice_text/link，SSR 直出；原型为 JS 注入内联样式） */
.site-notice{display:block;background:linear-gradient(90deg,#ff3b52,#ff8a5b);color:#fff;text-align:center;
  padding:9px 16px;font-size:14px;font-weight:600}
.site-notice:hover{color:#fff}
/* 文字 logo：无品牌图时的兜底（.logo .dot 样式来自上方原型段落） */
.logo .brand-name{white-space:nowrap}
/* 顶栏导航项不折行：DB 驱动的菜单项数可多于原型的 6 个，
   单项内部禁止断字，整行放不下自然换到第二行 */
.menu{flex-wrap:wrap}
.menu a{white-space:nowrap}
/* 页脚「热门分类」双栏排布：DB 分类数可多于原型，单列过长导致 footer 失衡 */
.foot-links{columns:2;column-gap:22px}
.foot-links a{break-inside:avoid}
/* 地址行标签防爆版兜底：标签不折行（正常应 ≤4 字，见 dramaShellData 短标签重写） */
.foot-addr .addr-label{white-space:nowrap}
/* 竖屏播放页：统一 xgplayer 播放器挂载层（实例填满 v-stage，rail/信息浮层其上） */
.v-stage .dp-player{position:absolute;inset:0;z-index:1}
.v-stage .dp-player .xgplayer{position:absolute!important;inset:0;width:100%!important;height:100%!important;background:transparent}
.slide.mounted .spin{display:none}
.slide .grad-b{z-index:2;pointer-events:none}
.slide .s-info,.slide .rail{z-index:3}
.slide .ls-exit{z-index:8}
.rail a.r-btn{text-decoration:none;display:flex}
.hint.gone{opacity:0;transition:opacity .6s}

/* ① xgplayer 内部样式兜底：横竖片源都保持完整展示，空白区域露出 .sbg 模糊背景。 */
.slide .dp-player video{object-fit:contain}

/* ② 列表页描述铺满可用宽度：原型 .page-desc 有 max-width:820px 的阅读宽度上限
   （与原型逐字节一致，不动那一行），但本站分类描述更长，820px 会让第二行只剩几个字
   （2026-08-13 用户反馈"没顶到最右边就换行"）。列表页头这一处放开上限。 */
.page-head .page-desc{max-width:none}

/* ⚠️ hidden 属性兜底：作者样式里的 display（如 .cm-item{display:flex}）会盖过
   UA 的 [hidden]{display:none}，导致 JS 设 el.hidden=true 视觉上毫无变化
   （2026-08-08 实测：评论"展开全部"点了没反应，因为 10 条一直全显示）。 */
[hidden]{display:none!important}


/* 章节目录（小说「第N章」/漫画「第N话」标题是文字，不是集号数字）：
   原型 .ep-grid 固定 10 列是为纯数字集号设计的，文字标题会挤爆/截断，
   故对带文字标题的目录用自适应列宽（仍复用 .ep-grid 的卡片样式，观感一致）。
   2026-08-08：此前误用了自造类名 .ch-list（drama.css 内无定义）导致章节挤成一行无间距。 */
.ep-panel .ep-grid.ep-text, .sheet .ep-grid.ep-text{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}
.ep-grid.ep-text a{padding:10px 12px;font-size:13.5px;font-weight:500;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 上/下一章(话)禁用态：原型用 <button disabled> 命中 .rd-btn:disabled；
   本项目为保留可抓取内链改用 <a>/<span>，需补 aria-disabled 选择器，
   否则首/末章的禁用按钮与可点按钮外观完全一致（2026-08-08 阅读器样式检验）。 */
.rd-btn[aria-disabled="true"]{opacity:.4;cursor:not-allowed;pointer-events:none}

/* 个人中心 tab：原型用 <button>（JS 切换）+ CSS 只选 .sp-tabs button；
   本项目改用 <a>（SSR 跳转、可被抓取、可分享带 tab 的 URL），故补选择器
   —— 否则 tab 条退化成纯文字（2026-08-08 阅读器禁用态同类坑，第 3 次同款）。 */
.sp-tabs a{background:var(--card);border:1px solid var(--line);color:var(--muted);
  font-size:14px;font-weight:600;padding:8px 18px;border-radius:20px;cursor:pointer;transition:.15s;
  display:inline-flex;align-items:center;gap:6px}
.sp-tabs a:hover{color:#fff;border-color:var(--line2)}
.sp-tabs a.active{background:var(--grad);color:#fff;border-color:transparent}
/* 计数 <em>：原型只写了 .sp-tabs button em / button.active em，换成 <a> 后这两条同样
   要补，否则计数会退回 <em> 默认的斜体+继承色（换元素类型必补选择器，§六c）。 */
.sp-tabs a em{font-style:normal;font-size:12px;color:var(--dim)}
.sp-tabs a.active em{color:rgba(255,255,255,.85)}

/* 本地态卡（浏览记录/我的评分）：数据来自 localStorage，无封面图 —— 用标题哈希渐变兜底，
   避免空白海报（与 posterGradient 同族观感）。 */
#spLocalGrid .poster{background:linear-gradient(150deg,#4c6ef5,#22b8cf);opacity:.55}

/* ===== 法务/静态单页正文（layouts/drama-legal）=====
   正文是 sq_setting 里的整段 HTML，用的是 .page-legal/.legal-wrap/.legal-title/.legal-sec
   这套类名（旧站遗留结构，不改它——改了后台六篇正文全要重排）。
   cyber 那边在 cyber-overrides.css 里有一份等价规则，drama 页不加载那个文件，
   所以这里按 drama 调色重写一份，布局沿用 880 宽阅读容器。 */
.legal-body { max-width: 880px; margin: 0 auto; padding: 8px 0 40px; }
.legal-body .page-legal { background: transparent; min-height: 0; }
.legal-body .legal-wrap { max-width: 100%; margin: 0; padding: 0; }
.legal-body .legal-title {
  margin: 0 0 6px; color: var(--txt);
  font-size: clamp(24px, 4vw, 30px); line-height: 1.35; font-weight: 800; letter-spacing: -.4px;
}
.legal-body .legal-title small,
.legal-body .legal-meta,
.legal-body .legal-sec h2 small {
  color: var(--muted); font-size: 12.5px; line-height: 1.5; letter-spacing: .04em; font-weight: 400;
}
.legal-body .legal-title small { display: block; margin-top: 4px; }
.legal-body .legal-meta { margin: 0 0 28px; padding-bottom: 18px; border-bottom: 1px solid var(--line); }
.legal-body .legal-sec { margin: 0 0 26px; }
.legal-body .legal-sec h2 { margin: 0 0 6px; color: var(--txt); font-size: 17px; line-height: 1.45; font-weight: 700; }
.legal-body .legal-sec h2 small { display: block; margin: 2px 0 8px; }
.legal-body .legal-sec p,
.legal-body .legal-sec li { color: var(--muted); font-size: 14px; line-height: 1.85; margin: 0 0 9px; }
.legal-body .legal-sec p.en { color: var(--muted); opacity: .75; font-size: 13px; }
.legal-body .legal-sec ul { margin: 0 0 9px; padding-left: 20px; }
.legal-body .legal-sec strong { color: var(--txt); font-weight: 700; }
.legal-body a, .legal-body .legal-link { color: var(--brand, #ff4d6d); text-decoration: none; }
.legal-body a:hover, .legal-body .legal-link:hover { text-decoration: underline; }

/* 剧卡封面：全站 9:16；库内横图靠 object-fit:cover 裁进竖框，不改容器比例 */
