:root {
  --bg: #0c0c0d;
  --bg2: #121214;
  --panel: #18181b;
  --panel2: #1f1f23;
  --card: #202024;
  --ink: #f3f1ea;
  --sub: #aaa69c;
  --muted: #6f6c64;
  --line: #2b2b30;
  --accent: #d4a853;
  --accent-dim: #8f7030;
  --accent-bg: #251f12;
  --red: #c75d5d;
  --green: #5fa574;
  --blue: #6a93b0;
  --maxw: 1080px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: clip; }
body {
  margin: 0;
  padding: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(212,168,83,0.06), transparent 60%),
    radial-gradient(900px 500px at -10% 10%, rgba(106,147,176,0.05), transparent 55%),
    var(--bg);
  color: var(--ink);
  line-height: 1.8;
}
a { color: var(--accent); text-decoration: none; transition: color .15s; }
a:hover { color: #e9c47f; text-decoration: underline; }

.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 22px 90px; }

/* ---------- Top Nav ---------- */
header.site {
  position: sticky; top: 0; z-index: 50;
  background: rgba(12,12,13,0.86);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
}
.nav {
  max-width: var(--maxw); margin: 0 auto; padding: 14px 22px;
  display: flex; align-items: center; gap: 22px; flex-wrap: wrap;
}
.brand {
  font-family: "Songti SC", "STSong", Georgia, serif;
  font-size: 20px; font-weight: 700; letter-spacing: .06em;
  color: var(--ink); display: flex; align-items: center; gap: 10px;
}
.brand .en { font-size: 11px; color: var(--muted); letter-spacing: .14em; text-transform: uppercase; }
.brand .dot { width: 9px; height: 9px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 12px var(--accent); }
.nav nav { display: flex; gap: 16px; flex-wrap: wrap; }
.nav nav a { color: var(--sub); font-size: 14px; }
.nav nav a:hover, .nav nav a.active { color: var(--accent); text-decoration: none; }
.nav .search { margin-left: auto; position: relative; display: flex; align-items: center; }
/* 放大镜按钮：常驻，大小固定，不随窗口变化。 */
.nav .sbtn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; padding: 0; cursor: pointer;
  background: var(--panel); border: 1px solid var(--line); border-radius: 50%;
  color: var(--sub); transition: color .15s, border-color .15s;
}
.nav .sbtn:hover, .nav .search.open .sbtn { color: var(--accent); border-color: var(--accent-dim); }
.nav .sbtn svg {
  width: 15px; height: 15px; display: block;
  fill: none; stroke: currentColor; stroke-width: 2;
  stroke-linecap: round; stroke-linejoin: round;
}
/* 输入框：点开时从放大镜正下方浮出一个小面板，**不进导航的排版流**。
   原先试过让它横向展开，但十个栏目已经占满整行，展开的框会压住「心水单」；
   做成下方浮层就与栏目排布完全无关，窗口再窄也不会互相遮。 */
.nav .search input {
  position: absolute; top: calc(100% + 10px); right: 0; z-index: 60;
  width: 240px; padding: 9px 15px;
  border: 1px solid var(--line); border-radius: 20px;
  background: var(--panel); color: var(--ink); font-size: 13px; outline: none;
  box-shadow: 0 14px 34px rgba(0,0,0,.55);
  opacity: 0; transform: translateY(-6px); pointer-events: none;
  transition: opacity .16s ease, transform .16s ease;
}
.nav .search.open input {
  opacity: 1; transform: translateY(0); pointer-events: auto;
}
.nav .search.open input:focus { border-color: var(--accent-dim); }

/* ---------- Hero ---------- */
.hero { position: relative; border-bottom: 1px solid var(--line); }
.hero-bg {
  position: absolute; inset: 0;
  background-image:
    radial-gradient(760px 400px at 76% 14%, rgba(212,168,83,.14), transparent 70%),
    url("../img/hero-bg.jpg");
  background-size: auto, cover;
  background-position: center, center 44%;
  background-repeat: no-repeat, no-repeat;
  pointer-events: none;
}
.hero-bg::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(90deg, rgba(12,12,13,.94) 0%, rgba(12,12,13,.88) 24%, rgba(12,12,13,.72) 42%,
                            rgba(12,12,13,.40) 58%, rgba(12,12,13,.12) 78%, rgba(12,12,13,.03) 100%),
    linear-gradient(180deg, rgba(12,12,13,.34) 0%, rgba(12,12,13,0) 28%, rgba(12,12,13,0) 58%, rgba(12,12,13,.97) 100%);
}
.hero-inner { position: relative; padding: 98px 0 62px; }
.hero-inner h1, .hero-inner .lede, .hero-inner .eyebrow { text-shadow: 0 2px 20px rgba(0,0,0,.72), 0 1px 3px rgba(0,0,0,.5); }
/* 窄屏：正文几乎横跨全宽，横向渐隐不再够用，改为整体加一层纵向压暗 */
@media (max-width: 820px){
  .hero-inner { padding: 66px 0 46px; }
  .hero-bg { background-position: center, 64% 44%; }
  .hero-bg::after {
    background:
      linear-gradient(90deg, rgba(12,12,13,.90) 0%, rgba(12,12,13,.80) 55%, rgba(12,12,13,.58) 100%),
      linear-gradient(180deg, rgba(12,12,13,.55) 0%, rgba(12,12,13,.34) 26%, rgba(12,12,13,.40) 62%, rgba(12,12,13,.97) 100%);
  }
}
.eyebrow { text-transform: uppercase; letter-spacing: .22em; font-size: 12px; color: var(--accent); }
.hero h1 {
  font-family: "Songti SC", "STSong", Georgia, serif;
  font-size: 52px; margin: 14px 0 10px; letter-spacing: .03em; line-height: 1.15;
}
.hero p.lede { font-size: 18px; color: var(--sub); max-width: 640px; }
.filmstrip {
  height: 26px; border-radius: 4px; margin: 30px 0 0;
  background: repeating-linear-gradient(90deg, #1a1a1d 0 26px, #0a0a0b 26px 30px);
  border: 1px solid var(--line);
}

/* ---------- Section ---------- */
section { margin-top: 56px; }
.section-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 22px; }
.section-head h2 {
  font-family: "Songti SC", "STSong", Georgia, serif;
  font-size: 26px; margin: 0; letter-spacing: .04em;
}
.section-head .more { font-size: 13px; color: var(--accent); }

/* ---------- Cards grid ---------- */
.grid { display: grid; gap: 18px; }
.grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
.grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 860px){ .grid.cols-3,.grid.cols-4 { grid-template-columns: repeat(2,1fr);} }
@media (max-width: 560px){ .grid.cols-2,.grid.cols-3,.grid.cols-4 { grid-template-columns: 1fr;} .hero h1{font-size:36px;} }

.card {
  background: var(--panel); border: 1px solid var(--line); border-radius: 12px;
  padding: 18px; position: relative; overflow: hidden;
}
.card:hover { border-color: var(--accent-dim); }
.card .k { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .1em; }
.card h3 { margin: 8px 0 6px; font-size: 18px; }
.card h3 a { color: var(--ink); }
.card p { margin: 0; font-size: 13.5px; color: var(--sub); }
.card .meta { font-size: 12px; color: var(--muted); margin-top: 10px; }

/* poster block */
.poster {
  aspect-ratio: 2/3; border-radius: 8px; overflow: hidden; position: relative;
  background: linear-gradient(135deg, #2a2418, #15151a 70%);
  display: flex; align-items: flex-end; padding: 12px;
  border: 1px solid var(--line);
}
.poster .tt { font-family: "Songti SC", serif; font-size: 15px; color: var(--accent); line-height: 1.3; }
.poster .yr { position: absolute; top: 10px; left: 10px; font-size: 11px; color: var(--muted); }
.poster img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 8px; }

/* daily modules */
.daily { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 700px){ .daily { grid-template-columns: 1fr; } }
.daily .card { display: flex; gap: 14px; align-items: flex-start; }
.daily .icon { font-size: 22px; }
.daily h3 { font-size: 16px; }

/* ---------- Film detail ---------- */
/* 详情页 hero：左栏定宽、右栏自适应；两栏顶对齐（此前 dt/dd 浮动外溢导致错位） */
.film-hero { display: grid; grid-template-columns: 264px minmax(0, 1fr); gap: 34px; align-items: start; margin-top: 26px; }
@media (max-width: 760px){ .film-hero { grid-template-columns: 1fr; gap: 22px; }
  .film-hero .film-poster { max-width: 230px; } }
.film-hero > *:first-child { align-self: start; }
.film-hero > * + * { min-width: 0; }
.film-poster { position: relative; aspect-ratio: 2/3; border-radius: 12px; overflow: hidden;
  background: linear-gradient(160deg,#2c2417,#16161d 75%); border: 1px solid var(--line);
  display: flex; align-items: flex-end; padding: 18px; }
.film-poster .tt { font-family:"Songti SC",serif; font-size:22px; color:var(--accent); line-height:1.25; }
.film-poster > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.dhero-body { min-width: 0; }
h1.page-title { font-family:"Songti SC","STSong",Georgia,serif; font-size:38px; line-height:1.18;
  margin: 10px 0 4px; letter-spacing:.02em; }
.page-title-en { font-family: Georgia,"Times New Roman",serif; font-size:15px; letter-spacing:.05em;
  color: var(--accent); margin: 0 0 10px; }
.page-title-en.alt { color: var(--muted); font-size: 13.5px; }
.keyfacts { display:flex; flex-wrap:wrap; gap:7px 16px; align-items:center; margin:14px 0 0;
  padding:12px 0 0; border-top:1px solid var(--line); font-size:13.5px; color:var(--sub); }
.keyfacts b { color: var(--ink); font-weight: 600; }
.keyfacts .vf { color: var(--muted); }
.score { display:inline-flex; align-items:baseline; gap:6px; background:var(--panel2);
  border:1px solid var(--line); border-radius:6px; padding:3px 9px; font-size:11.5px;
  color:var(--muted); letter-spacing:.05em; }
.score b { color:var(--ink); font-size:13.5px; letter-spacing:0; }
.score.imdb b { color:#e8c15a; }
.score.douban b { color:#57b894; }
.score.na { color:var(--muted); font-style:normal; opacity:.75; }

/* CC 标准收藏卡片：评分行 + 海报右上角心水浮标（与电影库 .wishcard 同位） */
.cccard .ccscore { margin: 6px 0 0; }
.cccard .ccscore .score { padding: 1px 7px; font-size: 10.5px; }
.cccard .ccscore .score b { font-size: 12px; }
.cccard .poster .wish.wishcard { top: 5px; right: 5px; }
/* 长片名钳制：中文名最多两行（占位撑齐卡片高度），英文名一行省略；
   元信息行空值已跳过，套装条目（#241 等）不再有孤立的「·」。 */
.cccard h3.cctitle { margin: 10px 0 0; line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; min-height: 2.8em; }
.cccard .ccen { margin: 4px 0 0; font-size: 12px;
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;
  overflow: hidden; }
.cccard .ccmeta { margin: 4px 0 0; }
/* 正文段落（全站长文统一体例）
   要点：卡片宽度 = 所在栏宽度，行宽由栏宽控制，不再用 max-width 把卡片截半；
   不使用 ::first-letter 首字下沉——中文方块字下沉会把「影片」拆成「影 | 片」。 */
.longread {
  font-family: "Songti SC", "STSong", Georgia, serif;
  font-size: 16.5px; line-height: 1.95; color: #e6e3da;
  background: var(--panel);
  border-left: 3px solid var(--accent-dim);
  border-radius: 0 10px 10px 0;
  padding: 20px 26px; margin: 0 0 14px;
  text-align: justify; text-justify: inter-ideograph;
}
/* 每节首段提亮竖线，承担原本由首字下沉做的「开场」提示 */
section > .longread:first-child { border-left-color: var(--accent); }
section > .longread:first-child { font-size: 17px; color: var(--ink); }
.stills { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 14px 0; }
@media (max-width: 760px){ .stills { grid-template-columns: repeat(2, 1fr); } }
.stills img { width: 100%; height: 160px; object-fit: cover; border-radius: 8px; border: 1px solid var(--line); display: block; transition: transform .25s ease; }
.stills a:hover img { transform: scale(1.03); }
.film-meta { display: grid; grid-template-columns: max-content minmax(0,1fr);
  gap: 8px 22px; margin: 20px 0 0; padding: 16px 18px; background: var(--panel);
  border: 1px solid var(--line); border-radius: 10px; }
.film-meta dt { color: var(--muted); font-size: 12.5px; letter-spacing: .03em; padding-top: 1px; white-space: nowrap; }
.film-meta dd { margin: 0; font-size: 14px; line-height: 1.7; color: var(--sub); }
.film-meta dd a { color: var(--ink); }
@media (max-width: 560px){ .film-meta { grid-template-columns: 1fr; gap: 2px; padding: 14px; }
  .film-meta dd { margin-bottom: 8px; } }

/* ---------- 豆瓣核查链接（影片 / 影人页的对外核对入口） ---------- */
/* 做成小药丸而非普通文字链接：在满屏灰字的档案表里要一眼看得出来，
   且与站内跳转区分开（站内链接是金色下划线文本，这个是描边胶囊）。 */
.dblink {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 1px 9px 2px; border: 1px solid var(--accent-dim);
  border-radius: 999px; background: var(--accent-bg);
  font-size: 12.5px; line-height: 1.7; color: var(--accent);
  text-decoration: none; white-space: nowrap;
}
.dblink:hover { border-color: var(--accent); color: #e9c47f; text-decoration: none; }
.dblink .dbgo { font-size: 10.5px; opacity: .8; }
.dblink:hover .dbgo { opacity: 1; }
/* 影片页头部的动作行（事实条与导语之间） */
.heroacts { margin: 13px 0 0; }
.heroacts .dblink { font-size: 13px; padding: 2px 11px 3px; }

/* ---------- 详情页两栏骨架：正文 + 资料栏 ---------- */
/* 正文列约 690px（16.5px 中文约 42 字/行），资料栏 320px。
   这样 .longread 卡片填满正文列，不再出现「卡片只占半页、右侧空一大片」。 */
.cols { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 38px; align-items: start; margin-top: 8px; }
.cols > .main { min-width: 0; }
/* 资料栏：整栏吸附 + 超出视口时内部滚动。
   要点：sticky 必须挂在 .rail 本身——它才是 grid item，其承载区（grid area）
   才是可滑动的范围。此前把 sticky 挂在 .rail 内部的子盒子上，而 .cols 是
   align-items:start，.rail 高度恒等于内容高，子盒子没有任何可滑动空间，
   吸附完全失效（实测滚动 0/25/50/75/100%，盒子 top 一路变负、从未被钉住）。 */
.cols > .rail {
  min-width: 0; display: flex; flex-direction: column; gap: 16px;
  position: sticky; top: 84px; align-self: start;
  max-height: calc(100vh - 104px); overflow-y: auto; overscroll-behavior: contain;
  scrollbar-width: thin; scrollbar-color: var(--line) transparent;
  padding-right: 2px;
}
.cols > .rail::-webkit-scrollbar { width: 6px; }
.cols > .rail::-webkit-scrollbar-track { background: transparent; }
.cols > .rail::-webkit-scrollbar-thumb { background: var(--line); border-radius: 3px; }
@media (max-width: 880px){
  .cols { grid-template-columns: 1fr; gap: 26px; }
  .cols > .rail { position: static; max-height: none; overflow: visible; padding-right: 0; }
}
.railbox { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; }
.railbox > h3 {
  margin: 0 0 12px; font-size: 13px; font-weight: 600; letter-spacing: .1em;
  color: var(--accent); text-transform: uppercase;
}
.railbox > h3::after { content: ""; display: block; height: 1px; margin-top: 9px;
  background: linear-gradient(90deg, rgba(212,168,83,.5), transparent 72%); }
/* 窄栏里事实表改为纵向堆叠，避免长值（如获奖电影节串）被挤成碎片 */
.rail .film-meta { display: block; background: none; border: 0; border-radius: 0; padding: 0; margin: 0; }
.rail .film-meta dt { color: var(--muted); font-size: 11.5px; letter-spacing: .06em; margin-top: 13px; }
.rail .film-meta dt:first-child { margin-top: 0; }
.rail .film-meta dd { margin: 2px 0 0; font-size: 13.5px; line-height: 1.65; color: var(--sub); word-break: break-word; }
.rail .film-meta dd a { color: var(--ink); }
.railtoc { list-style: none; padding: 0; margin: 0; counter-reset: t; }
.railtoc li { counter-increment: t; margin: 0; font-size: 13px; }
.railtoc a { display: block; padding: 6px 0 6px 26px; position: relative; color: var(--sub); border-bottom: 1px dashed var(--line); }
.railtoc li:last-child a { border-bottom: 0; }
.railtoc a::before {
  content: counter(t, decimal-leading-zero); position: absolute; left: 0; top: 6px;
  font-size: 11px; color: var(--accent-dim); font-variant-numeric: tabular-nums;
}
.railtoc a:hover { color: var(--accent); text-decoration: none; }

/* 长文页（导演志 / 电影节 / 美学运动 / 影评人 / 知识库 / 影史）：收敛页面宽度，
   让正文行宽落在中文舒适的 45 字上下，同时不让卡片与右边界之间出现空档 */
.wrap.prose { max-width: 880px; }
@media (max-width: 940px){ .wrap.prose { max-width: 100%; } }

/* 详情页头部与正文列的细节 */
.film-head { min-width: 0; }
.film-head .lede2 { margin: 16px 0 0; max-width: none; }
.cols .main .richlist { max-width: none; }
.cols .main .stills { grid-template-columns: repeat(2, 1fr); }
.cols .main .cine-table { font-size: 13.5px; }
.cols .main .cine-table th { width: 96px; }
@media (max-width: 880px){
  .cols .main .stills { grid-template-columns: repeat(2, 1fr); }
}

.cine-table { width: 100%; border-collapse: collapse; margin: 18px 0; font-size: 14px; }
.cine-table th, .cine-table td { padding: 11px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.cine-table th { color: var(--accent); font-weight: 600; width: 120px; }
.cine-table tr:hover td { background: var(--panel); }

/* related links */
.related { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { background: var(--panel2); border: 1px solid var(--line); border-radius: 18px; padding: 5px 13px; font-size: 13px; color: var(--sub); }
.chip:hover { border-color: var(--accent-dim); color: var(--accent); text-decoration: none; }

/* quote */
.quote { border-left: 3px solid var(--accent); padding: 14px 18px; background: var(--accent-bg); border-radius: 0 8px 8px 0; margin: 16px 0; }
.quote p { margin: 0; font-style: italic; color: var(--ink); }
.quote .by { margin-top: 8px; font-size: 13px; color: var(--muted); }

/* award badge */
.badge { display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 4px; background: #2a2014; color: var(--accent); border: 1px solid var(--accent-dim); }

.box { border-left: 3px solid var(--accent); background: var(--panel); padding: 16px 18px; border-radius: 0 10px 10px 0; margin: 18px 0; }
.box.warn { border-left-color: var(--red); background: #1d1414; }
.box.info { border-left-color: var(--blue); background: #141b22; }
.box.good { border-left-color: var(--green); background: #141d18; }
.box strong { color: var(--ink); }

.tag { font-size: 11px; padding: 2px 8px; border-radius: 4px; background: var(--panel2); color: var(--sub); border:1px solid var(--line); margin-right:6px; }

/* footer */
footer.site { border-top: 1px solid var(--line); margin-top: 70px; padding: 30px 0 10px; color: var(--muted); font-size: 13px; }
footer.site a { color: var(--sub); }

.breadcrumb { font-size: 13px; color: var(--muted); margin: 24px 0 0; }
.breadcrumb a { color: var(--sub); }

h2.page-title { font-family: "Songti SC","STSong",Georgia,serif; font-size: 34px; margin: 10px 0 6px; }
.lede2 { color: var(--sub); font-size: 16px; max-width: 720px; }

/* glossary list */
.alpha { columns: 3; column-gap: 22px; }
.alpha a { display: block; padding: 4px 0; color: var(--sub); font-size: 14px; border-bottom: 1px dotted var(--line); }
.alpha a:hover { color: var(--accent); text-decoration: none; }
@media (max-width: 700px){ .alpha { columns: 2; } }

/* ================= 图片本地化补充 ================= */
.poster:has(img) { padding: 0; background: #101013; }
.poster.sm { max-width: 190px; }
.grid.cols-5 { grid-template-columns: repeat(5, 1fr); }
@media (max-width: 980px){ .grid.cols-5 { grid-template-columns: repeat(3,1fr);} }
@media (max-width: 560px){ .grid.cols-5 { grid-template-columns: repeat(2,1fr);} }

.avatar {
  aspect-ratio: 1/1; border-radius: 10px; overflow: hidden; position: relative;
  background: linear-gradient(160deg,#2a2a31,#15151a); border: 1px solid var(--line);
  display: flex; align-items: center; justify-content: center;
}
.avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.avatar.ph span { font-family: "Songti SC", serif; font-size: 30px; color: var(--accent-dim); }
.avatar.sm { border-radius: 8px; }
.avatar.sm.ph span { font-size: 20px; }
.avatar.xl { border-radius: 14px; }
.dhero-avatar .avatar.xl { aspect-ratio: 3/4; }

/* 导演卡。四列网格下每张卡只有约 245px，原先 82px 的头像 + 18px 内边距
   把文字区压到只剩 ~113px ——「正典指数 95 · 8 部」必然折行、把「部」甩到下一行。
   所以：头像收窄、内边距收窄、英文名超长省略、指数行禁止折行、指数行贴底对齐。 */
.dir-card { display: flex; gap: 12px; align-items: stretch; padding: 13px; }
.dir-card .avatar { width: 64px; flex: 0 0 64px; }
.dir-card .dir-txt { min-width: 0; flex: 1; display: flex; flex-direction: column; }
.dir-card h3 { margin: 0 0 4px; font-size: 17px; line-height: 1.35; }
.dir-card .k {
  font-size: 11px; letter-spacing: .04em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;   /* 长英文名走省略号，不折行 */
}
.dir-card p {
  font-size: 12.5px; line-height: 1.55; margin: 0;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.dir-card .meta {
  margin-top: auto; padding-top: 8px; font-size: 11.5px;
  display: flex; align-items: center; gap: 5px;
  white-space: nowrap;                                             /* 指数与作品数不许断开 */
}
.dir-card .meta .badge { font-size: 10.5px; padding: 2px 7px; }
.dir-card .meta span { color: var(--muted); }

/* 导演志的「地区活页」：一排可点的地区标签 + 只显示当前地区。
   以前是二十来个地区竖着铺满整页，滚到第三个地区就已经不知道自己在哪了。
   标签有 46 个，一行排不下也不折行——改成**单行横向滑动**，
   右侧用渐隐提示「还有更多」，不要让它折成好几排反而更乱。 */
.regbar-wrap { position: relative; margin: 2px 0 26px; }
/* 两端渐隐：暗示可以往左右滑。滑到头就由 JS 加 at-start / at-end 收掉，
   否则最后一个标签会被渐隐层压住看不清。 */
.regbar-wrap::before, .regbar-wrap::after {
  content: ""; position: absolute; top: 0; bottom: 14px; width: 52px;
  pointer-events: none; z-index: 1; transition: opacity .2s;
}
.regbar-wrap::before { left: 0; background: linear-gradient(to right, var(--bg) 30%, rgba(12,12,13,0)); }
.regbar-wrap::after { right: 0; background: linear-gradient(to left, var(--bg) 30%, rgba(12,12,13,0)); }
.regbar-wrap.at-start::before { opacity: 0; }
.regbar-wrap.at-end::after { opacity: 0; }
.regbar {
  display: flex; flex-wrap: nowrap; gap: 8px;
  padding: 0 0 12px; border-bottom: 1px solid var(--line);
  overflow-x: auto; overflow-y: hidden;
  scrollbar-width: thin; scrollbar-color: var(--line) transparent;
  -webkit-overflow-scrolling: touch;
}
.regbar::-webkit-scrollbar { height: 6px; }
.regbar::-webkit-scrollbar-track { background: transparent; }
.regbar::-webkit-scrollbar-thumb { background: var(--line); border-radius: 3px; }
.regbar::-webkit-scrollbar-thumb:hover { background: var(--accent-dim); }
.regtab {
  flex: 0 0 auto;                          /* 不许被压缩，否则标签会挤成一团 */
  font: inherit; font-size: 13.5px; line-height: 1.6; cursor: pointer;
  padding: 6px 14px 7px; border-radius: 999px; white-space: nowrap;
  background: var(--panel); color: var(--sub); border: 1px solid var(--line);
  transition: color .15s, border-color .15s, background .15s;
}
.regtab:hover { color: var(--accent); border-color: var(--accent-dim); }
.regtab:focus-visible { outline: 2px solid var(--accent-dim); outline-offset: 2px; }
.regtab b { margin-left: 4px; font-size: 11.5px; font-weight: 600; opacity: .62; }
.regtab.on {
  background: var(--accent); border-color: var(--accent); color: #1a1408; font-weight: 600;
}
.regtab.on b { opacity: .8; }
/* display 一旦被显式设过就会盖掉 hidden 属性，这里主动补一刀 */
.regpanel[hidden] { display: none; }
.card.mini { padding: 12px; text-align: center; }
.card.mini .avatar { width: 100%; margin-bottom: 8px; }
.card.mini h4 { margin: 0; font-size: 14px; }
.card.mini h4 a { color: var(--ink); }

/* 每日模块配图 */
.daily .card { align-items: stretch; }
.daily-poster { width: 150px; flex: 0 0 150px; }
.daily-poster .poster { aspect-ratio: 2/3; max-width: none; }
.daily-avatar { width: 150px; flex: 0 0 150px; }
.daily-avatar .avatar { width: 100%; }
.daily-txt { min-width: 0; }
.daily-txt h3 { margin: 4px 0 8px; font-size: 20px; }
.daily-txt p { font-size: 13.5px; }
.dim { color: var(--muted); }
@media (max-width: 700px){ .daily-poster,.daily-avatar { width: 110px; flex: 0 0 110px; } }

/* 电影库筛选面板（参考爱奇艺的分行式筛选：左标签 + 右选项） */
.fbox {
  background: var(--panel); border: 1px solid var(--line); border-radius: 12px;
  padding: 4px 16px 10px; margin: 20px 0 22px;
}
.ftop { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 0 8px; }
.fsearch { flex: 1 1 260px; }
.fsearch input {
  width: 100%; background: var(--bg2); border: 1px solid var(--line); border-radius: 8px;
  padding: 9px 13px; color: var(--ink); font-size: 14px; outline: none; font-family: inherit;
}
.fsearch input:focus { border-color: var(--accent-dim); }
.fsort {
  display: flex; gap: 2px; padding: 2px; border: 1px solid var(--line);
  border-radius: 8px; background: var(--bg2);
}
.fsbtn {
  background: none; border: 0; border-radius: 6px; padding: 6px 12px; cursor: pointer;
  color: var(--sub); font-size: 13px; font-family: inherit; white-space: nowrap;
}
.fsbtn:hover { color: var(--accent); }
.fsbtn.on { background: rgba(212,168,83,.14); color: var(--accent); font-weight: 600; box-shadow: inset 0 0 0 1px rgba(212,168,83,.36); }
.freset {
  background: transparent; border: 1px solid var(--line); border-radius: 8px;
  padding: 8px 14px; color: var(--sub); font-size: 13px; cursor: pointer; font-family: inherit;
}
.freset:hover { color: var(--accent); border-color: var(--accent-dim); }
.fcount { color: var(--muted); font-size: 13px; margin-left: auto; white-space: nowrap; }

.frow { display: flex; gap: 10px; align-items: flex-start; padding: 7px 0; }
.frow + .frow { border-top: 1px dashed rgba(255,255,255,.055); }
.flab {
  flex: 0 0 auto; margin-top: 2px; padding: 2px 9px; border-radius: 4px;
  font-size: 12px; letter-spacing: .04em; color: var(--muted);
  background: var(--panel2); border: 1px solid var(--line);
}
.fopts { display: flex; flex-wrap: wrap; gap: 2px 3px; align-items: center; }
.fopt {
  background: none; border: 0; padding: 3px 9px; border-radius: 5px; cursor: pointer;
  color: var(--sub); font-size: 13px; line-height: 1.5; font-family: inherit;
  white-space: nowrap; transition: color .12s, background .12s;
}
.fopt:hover { color: var(--accent); background: rgba(212,168,83,.07); }
.fopt.on {
  color: var(--accent); background: rgba(212,168,83,.14); font-weight: 600;
  box-shadow: inset 0 0 0 1px rgba(212,168,83,.36);
}
.fopt.fx { display: none; }
.frow.open .fopt.fx { display: inline-block; }
.ftog {
  background: none; border: 0; padding: 3px 9px; cursor: pointer; font-family: inherit;
  color: var(--accent-dim); font-size: 12.5px; white-space: nowrap;
}
.ftog:hover { color: var(--accent); }
.fhint { color: var(--muted); font-size: 14px; text-align: center; margin: 26px 0; }
@media (max-width: 640px){
  .fbox { padding: 2px 12px 8px; }
  .frow { flex-direction: column; gap: 4px; }
  .fopts { gap: 1px 2px; }
  .fopt { font-size: 12.5px; padding: 3px 7px; }
  .fcount { margin-left: 0; }
}
.libcard h3 { font-size: 14.5px; line-height: 1.4; margin: 0; }
.libcard p { font-size: 12px; }
.libcard h4 { font-size: 14px; margin: 0; }

/* 知识库 */
.kbidx { display: flex; flex-direction: column; gap: 10px; }
.kbcat { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.kbcat-k { font-size: 12px; color: var(--accent); letter-spacing: .1em; min-width: 96px; }
.kbcat a { font-size: 13px; color: var(--sub); background: var(--panel2); border: 1px solid var(--line); border-radius: 14px; padding: 3px 11px; }
.kbcat a:hover { color: var(--accent); border-color: var(--accent-dim); text-decoration: none; }
.term { border-left: 2px solid var(--line); padding: 4px 0 4px 18px; margin: 26px 0; }
.term h3 { font-family: "Songti SC", serif; font-size: 21px; margin: 0 0 6px; }
.term h3 .en { font-size: 12px; letter-spacing: .1em; }
.term .brief { color: var(--accent); font-size: 14px; margin: 0 0 10px; }
.longread2 { font-family: "Songti SC", Georgia, serif; font-size: 15.5px; line-height: 1.95; color: var(--sub); margin: 0 0 12px; }
.term .row { display: flex; gap: 10px; align-items: flex-start; margin: 8px 0; }
.term .rowk { font-size: 12px; color: var(--muted); min-width: 62px; padding-top: 4px; }

/* 理论卡片 */
.theory { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 14px 18px; margin: 12px 0; border-left: 3px solid var(--accent-dim); }
.theory h4 { margin: 0 0 6px; font-size: 15px; color: var(--ink); }
.theory p { margin: 0; font-size: 13.5px; color: var(--sub); }

/* 行内自动链接 */
a.ilink { color: var(--ink); border-bottom: 1px solid rgba(212,168,83,0.45); }
a.ilink:hover { color: var(--accent); border-bottom-color: var(--accent); text-decoration: none; }
.cine-table a.ilink, .term .row a.ilink, .longread a.ilink, .longread2 a.ilink { color: var(--accent); border-bottom: none; }
.longread a.ilink, .longread2 a.ilink { border-bottom: 1px dotted var(--accent-dim); }

ul { padding-left: 22px; }
ul li { margin: 7px 0; font-size: 14px; color: var(--sub); }

/* ---------- 长文阅读（史料条目） ---------- */
/* 注：此处曾有一份 .longread 的「长文式」定义（max-width:74ch / margin / font-size / color），
   与上面的卡片式定义互相覆盖，结果卡片只有 538px 宽、右侧留 500px 空白。
   现已合并到上方单一定义，本处仅保留修饰类。 */
.longread + .longread { text-indent: 0; }
.longread.dimline {
  color: var(--sub);
  font-size: 14.5px;
  padding-left: 14px;
  border-left: 2px solid var(--line);
  text-align: left;
}
section .longread:last-child { margin-bottom: 0; }

/* 章首引导：改由首段竖线 + 字号承担，已移除首字下沉规则 */

/* 视听语言要点 */
.richlist { list-style: none; padding: 0; margin: 0; max-width: 78ch; }
.richlist li {
  position: relative;
  padding: 9px 0 9px 24px;
  border-bottom: 1px dashed var(--line);
  font-size: 15px; line-height: 1.85; color: #d9d6cd;
}
.richlist li:last-child { border-bottom: 0; }
.richlist li::before {
  content: "◆";
  position: absolute; left: 4px; top: 9px;
  color: var(--accent-dim); font-size: 10px;
}

/* 代表作细读 */
.keyread {
  padding: 14px 0 16px 18px;
  border-left: 2px solid var(--accent-dim);
  margin-bottom: 16px;
  background: linear-gradient(90deg, rgba(212,168,83,0.045), transparent 70%);
}
.keyread:last-child { margin-bottom: 0; }
.keyread h4 {
  margin: 0 0 7px;
  font-family: "Songti SC", "STSong", Georgia, serif;
  font-size: 17px; font-weight: 700; letter-spacing: .02em;
}
.keyread h4 a { color: var(--ink); }
.keyread h4 a:hover { color: var(--accent); text-decoration: none; }
.keyread p {
  margin: 0; max-width: 70ch;
  font-size: 15px; line-height: 1.9; color: #d3d0c7; text-align: justify;
}

/* 引语 */
blockquote.quote {
  margin: 0 0 14px;
  padding: 12px 18px;
  background: var(--panel);
  border-left: 3px solid var(--accent);
  border-radius: 0 6px 6px 0;
}
blockquote.quote:last-child { margin-bottom: 0; }
blockquote.quote p {
  margin: 0; font-family: "Songti SC", "STSong", Georgia, serif;
  font-size: 16px; line-height: 1.85; color: var(--ink);
}
blockquote.quote cite {
  display: block; margin-top: 7px;
  font-size: 12.5px; font-style: normal; color: var(--muted); letter-spacing: .04em;
}

/* 词条档案表（紧排） */
section table.film-meta { margin: 0; }

/* ---------- 排版片名卡（无可靠海报时的替代呈现） ---------- */
/* 设计意图：不展示未经验证的图片，改以站点自身的排版语言呈现片名与年份。 */
.poster.ph, .film-poster.ph {
  background:
    repeating-linear-gradient(0deg, rgba(255,255,255,0.022) 0 1px, transparent 1px 7px),
    radial-gradient(120% 80% at 20% 100%, rgba(212,168,83,0.16), transparent 62%),
    linear-gradient(158deg, #262117 0%, #16161b 58%, #101014 100%);
  border: 1px solid #3a3323;
  box-shadow: inset 0 0 0 1px rgba(212,168,83,0.06);
}
.poster.ph::after, .film-poster.ph::after {
  content: "";
  position: absolute; inset: 9px;
  border: 1px solid rgba(212,168,83,0.20);
  border-radius: 4px;
  pointer-events: none;
}
.poster.ph .yr, .film-poster.ph .yr {
  position: absolute; top: 18px; left: 20px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 11px; letter-spacing: .22em; color: var(--accent-dim);
}
.poster.ph .tt, .film-poster.ph .tt {
  font-family: "Songti SC", "STSong", Georgia, serif;
  font-weight: 700; letter-spacing: .04em;
  color: var(--ink); text-shadow: 0 1px 12px rgba(0,0,0,.6);
}
.poster.ph .tt { font-size: 15px; line-height: 1.35; }
.film-poster.ph .tt { font-size: 24px; line-height: 1.3; }
.poster.ph .tt::before, .film-poster.ph .tt::before {
  content: ""; display: block;
  width: 26px; height: 2px; margin-bottom: 9px;
  background: var(--accent);
}

/* ---------------- CC 标准收藏 ---------------- */
/* 占位卡里的脊号：比片名更突出，像碟片背脊编号 */
.poster.ph.ccph { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; }
.poster.ph.ccph .sp {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 30px; font-weight: 700; letter-spacing: .04em;
  color: var(--accent); text-shadow: 0 1px 10px rgba(0,0,0,.55);
}
.poster.ph.ccph .tt { font-size: 13px; }
.ccspine {
  display: inline-block; margin-top: 8px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 12px; letter-spacing: .12em; color: var(--accent);
  border: 1px solid var(--accent-dim); border-radius: 999px;
  padding: 1px 8px;
}
.card.cccard.muted { opacity: .62; }
.card.cccard.muted .poster.ph.ccph .sp { color: var(--muted); }

/* 分页控件 */
.pager {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin-top: 28px; padding-top: 18px;
  border-top: 1px solid var(--line);
}
.pgbtn {
  min-width: 38px; padding: 6px 12px; cursor: pointer;
  font: inherit; font-size: 13px; color: var(--ink);
  background: var(--card); border: 1px solid var(--line); border-radius: 7px;
  transition: border-color .15s, color .15s, background .15s;
}
.pgbtn:hover:not(:disabled):not(.cur) { border-color: var(--accent-dim); color: var(--accent); }
.pgbtn.cur { background: var(--accent); border-color: var(--accent); color: #1a160d; font-weight: 700; }
.pgbtn:disabled { opacity: .4; cursor: default; }
.pdots { color: var(--muted); padding: 0 2px; }
.pginfo { margin-left: auto; color: var(--sub); font-size: 13px; letter-spacing: .02em; }

/* ---------------- 完整作品年表（IMDb） ---------------- */
.cine-table.filmo { margin-top: 14px; }
.cine-table.filmo th { width: auto; font-size: 12.5px; letter-spacing: .04em; padding: 10px 12px; }
.cine-table.filmo td { padding: 8px 12px; font-size: 13.5px; }
.cine-table.filmo td:first-child { font-variant-numeric: tabular-nums; }
/* 只给**末尾那三列**（类型 / 片长 / 已收录）禁止折行。
   原来写的是 `nth-child(n+3)`，那是「补中文名一列之前」的写法：当时英文名在第 2 列，
   从第 3 列起正好是这三列。中文名插到第 2 列之后，英文名被挤到第 3 列，
   于是超长的英文原名（如 "The Men Who Tread on the Tiger's Tail"）也被 nowrap 钉死，
   整张表跟着撑破 880px 的正文栏——黑泽明页实测溢出 11px。
   改用 `:nth-last-child(-n+3)`：6 列（含中文名）与 5 列（不含）两种版式都恰好命中后三列。 */
.cine-table.filmo td:nth-last-child(-n+3) { white-space: nowrap; }
.film-meta .score, .cine-table.filmo .score { vertical-align: 1px; }
.cine-table.filmo .score { margin-left: 6px; padding: 1px 7px; font-size: 10.5px; }
.cine-table.filmo .score b { font-size: 12px; }
details.fold { margin: 16px 0 0; border: 1px solid var(--line); border-radius: 10px; background: var(--panel); }
details.fold > summary { cursor: pointer; padding: 11px 16px; font-size: 13.5px; color: var(--sub); letter-spacing: .02em; }
details.fold > summary:hover { color: var(--ink); }
details.fold[open] > summary { border-bottom: 1px solid var(--line); color: var(--ink); }
details.fold .cine-table { margin: 0; }
details.fold .cine-table th, details.fold .cine-table td { padding: 8px 12px; font-size: 13px; }
.libcard .score { padding: 1px 7px; }

/* ---------------- 重要作品序列（导演页） ----------------
   与「完整作品年表」的分工：这张表回答「哪几部重要、为什么」，
   那张表回答「一共拍过什么」。所以这里的行更疏、理由列占最大宽度。 */
.cine-table.impworks { margin-top: 14px; }
.cine-table.impworks th { width: auto; font-size: 12.5px; letter-spacing: .04em; padding: 10px 10px; }
.cine-table.impworks td { padding: 10px 10px; font-size: 13.5px; line-height: 1.6; }
.cine-table.impworks td:first-child { font-variant-numeric: tabular-nums; white-space: nowrap; }
.cine-table.impworks .score { margin-left: 6px; padding: 1px 7px; font-size: 10.5px; vertical-align: 1px; }
.cine-table.impworks .score b { font-size: 12px; }

/* 入选依据：五个代号做成一排小方牌。
   单看字母没意义，靠 title 悬停与表下的标准说明兜住——
   标准必须摊开写在页面上，否则「重要」二字没有信用。 */
.cine-table.impworks .crt { white-space: nowrap; }
/* ⚠ 2026-09-24 试过给末列设宽度下限（470px / 500px），都不解决问题甚至更糟：
   末列一旦被钉死，浏览器就把余下空间从「作品」「收录于」两列里抽回去补偿，
   那两列的中文被压窄、片名开始折行，最差行反而从 6 行涨到 7–8 行。
   auto table-layout 下末列就该拿「剩余」，硬指定只会打乱分配。
   真正的解法在内容侧——「一句话理由」控制在 40 字以内，别撑破末列。 */
.crit-S, .crit-A, .crit-F, .crit-M, .crit-D {
  display: inline-block; width: 18px; margin-right: 3px;
  font-size: 11px; font-weight: 700; line-height: 18px; text-align: center;
  border-radius: 5px; letter-spacing: 0; cursor: help;
}
.crit-S { background: #1b2a33; color: #7fc4e8; border: 1px solid #2c4653; }  /* 评分 */
.crit-A { background: #33291a; color: #e8c15a; border: 1px solid #4d3d22; }  /* 获奖 */
.crit-F { background: #2a2033; color: #c19ae8; border: 1px solid #43325a; }  /* 形式 */
.crit-M { background: #1d2b22; color: #7fd6a4; border: 1px solid #2c4636; }  /* 大众 */
.crit-D { background: #331d1d; color: #e88a8a; border: 1px solid #4d2c2c; }  /* 争议 */

/* 「详读」小牌：词条页已附全文详读，故做成真链接（2026-09-24） */
.dpill {
  display: inline-block; margin-left: 6px; padding: 1px 7px; vertical-align: 1px;
  font-size: 10.5px; letter-spacing: .06em; border-radius: 4px;
  background: var(--accent-bg); color: var(--accent); border: 1px solid var(--accent-dim);
  white-space: nowrap;
}
a.dpill { text-decoration: none; }
a.dpill:hover { color: var(--accent); border-color: var(--accent); }

/* 标准说明。收在 details 里，不占版面，但随时可查。 */
details.crit { margin: 14px 0 0; border: 1px dashed var(--line); border-radius: 10px; }
details.crit > summary { cursor: pointer; padding: 10px 14px; font-size: 13px; color: var(--sub); }
details.crit > summary:hover { color: var(--ink); }
details.crit[open] > summary { color: var(--ink); border-bottom: 1px dashed var(--line); }
details.crit ul.critlist { margin: 12px 0 6px; padding: 0 16px 0 30px; font-size: 13.5px; color: var(--sub); line-height: 1.9; }
details.crit ul.critlist b { margin-right: 4px; }
details.crit p { margin: 4px 16px 14px; font-size: 12.5px; }

/* 年表 / 重要作品表里的豆瓣核查小链接 */
.dblink.sm { font-size: 11.5px; padding: 1px 8px 2px; }

/* ---------------- 全站检索页 ---------------- */
.page-sub { color: var(--sub); font-size: 14px; margin: 6px 0 24px; }
.search.big { margin: 0 0 10px; }
.search.big input {
  width: 100%; background: var(--panel); border: 1px solid var(--line); border-radius: 12px;
  padding: 14px 18px; color: var(--ink); font-size: 15px; outline: none;
}
.search.big input:focus { border-color: var(--accent-dim); }
.smeta { color: var(--muted); font-size: 13.5px; margin: 0 0 26px; }
.smeta b { color: var(--accent); font-family: Georgia, serif; font-size: 15px; }
.sgroup { margin: 0 0 26px; }
.sgh {
  font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--sub);
  border-bottom: 1px solid var(--line); padding-bottom: 8px; margin-bottom: 6px;
}
.sgh span { margin-left: 10px; color: var(--muted); letter-spacing: .04em; }
.srow {
  display: flex; align-items: baseline; gap: 12px; padding: 8px 10px; border-radius: 8px;
  color: var(--ink); text-decoration: none;
}
.srow:hover { background: var(--panel); text-decoration: none; }
.srow .st { font-size: 15px; min-width: 190px; }
.srow .ss { font-size: 12.5px; color: var(--muted); }
.smore { color: var(--muted); font-size: 12.5px; padding: 8px 10px 0; }
@media (max-width: 620px) {
  .srow { display: block; }
  .srow .st { min-width: 0; display: block; }
}

/* ---------------- 心水单（我的收藏） ----------------
   站点是纯静态的，收藏只落在本机 localStorage；
   这里只管两件事：星标按钮长什么样，以及收藏页怎么把卡片排出来。 */

/* 星标按钮。影片页动作区里与「豆瓣核查」并排，所以沿用 .dblink 的胶囊语言，
   但「未收藏 / 已收藏」要用两种明显不同的填充来区分状态。 */
.wish {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 1px 10px 2px; border: 1px solid var(--line);
  border-radius: 999px; background: var(--panel2);
  font: inherit; font-size: 12.5px; line-height: 1.7;
  color: var(--sub); cursor: pointer; white-space: nowrap;
  transition: color .15s, border-color .15s, background .15s;
}
.wish:hover { color: var(--accent); border-color: var(--accent-dim); }
.wish:focus-visible { outline: 2px solid var(--accent-dim); outline-offset: 2px; }
.wish .wstar { font-size: 14px; line-height: 1; color: var(--muted); transition: color .15s, transform .15s; }
.wish:hover .wstar { transform: scale(1.15); }
.wish.on {
  color: var(--accent); border-color: var(--accent-dim); background: var(--accent-bg);
}
.wish.on .wstar { color: var(--accent); text-shadow: 0 0 9px rgba(212,168,83,.55); }
.heroacts .wish { font-size: 13px; padding: 2px 11px 3px; }

/* 电影库卡片上的浮标：压在封面右上角，只留一颗星，不带文字。
   .poster 本身是定位容器且 overflow:hidden，所以用 absolute 脱离 flex 流，
   否则会和封面图并排挤在一起。不用 hover 才出现——触屏没有 hover，
   常显（半透明）才点得到，悬停再提亮。 */
.wishcard {
  position: absolute; top: 8px; right: 8px; z-index: 3;
  padding: 5px 7px; border-radius: 999px;
  background: rgba(12,12,13,.62); backdrop-filter: blur(4px);
  border-color: rgba(255,255,255,.16); opacity: .6;
}
.wishcard .wlbl { display: none; }
.wishcard .wstar { font-size: 16px; color: #eae6da; }
.wishcard:hover { opacity: 1; background: rgba(20,20,24,.9); transform: scale(1.05); }
.wishcard.on { opacity: 1; background: rgba(37,31,18,.92); border-color: var(--accent-dim); }
.wishcard.on .wstar { color: var(--accent); }

/* 导演卡上的浮标：与影片卡压在封面右上角是同一个位置语言。
   卡片文字区只有 ~137px，塞不下任何常驻按钮（上次「· 8 部」折行就是因为宽度），
   所以必须 absolute 脱离 flex 流。肖像本身 overflow:hidden，浮标只能内嵌，
   于是做小一点（约 25×19px）、默认半透明，悬停再提亮。 */
.wishav {
  position: absolute; top: 3px; right: 3px; z-index: 3;
  gap: 0; padding: 2px 5px; border-radius: 999px;
  background: rgba(12,12,13,.66); backdrop-filter: blur(4px);
  border-color: rgba(255,255,255,.18); opacity: .62;
}
.wishav .wlbl { display: none; }
.wishav .wstar { font-size: 13px; color: #eae6da; }
.wishav:hover { opacity: 1; background: rgba(20,20,24,.92); }
.wishav.on { opacity: 1; background: rgba(37,31,18,.94); border-color: var(--accent-dim); }
.wishav.on .wstar { color: var(--accent); }

/* 没有肖像的卡片（获奖影人名录）把同一个浮标挂到卡片自己的右上角。
   卡片内边距是 18px，所以这里退到 8px，视觉上才和肖像上那颗对齐。
   名称那一行要留出位置，否则长电影节名会钻到浮标底下。 */
.wishcorner { top: 8px; right: 8px; }
.card.dirwish .k { padding-right: 34px; }

/* 顶栏「心水单」后面的计数徽标 */
.nav nav a .navbadge {
  display: inline-block; min-width: 17px; margin-left: 5px; padding: 0 5px;
  font-size: 11px; line-height: 17px; text-align: center; vertical-align: 1px;
  font-weight: 700; letter-spacing: 0; border-radius: 9px;
  background: var(--accent); color: #1a1408;
}
.nav nav a .navbadge[hidden] { display: none; }   /* 覆盖上面的 inline-block */

/* 收藏页工具条与空状态 */
.wlacts { display: flex; gap: 10px; flex-wrap: wrap; margin: 4px 0 24px; }
/* 同上：display:flex 会盖掉 hidden 属性，必须显式补一刀，
   否则「还没有收藏」时「清空 / 复制清单」仍然堂而皇之显示着。 */
.wlacts[hidden] { display: none; }
.wlbtn {
  font: inherit; font-size: 13px; cursor: pointer;
  padding: 8px 16px; border-radius: 9px;
  background: var(--panel2); color: var(--sub); border: 1px solid var(--line);
  transition: color .15s, border-color .15s;
}
.wlbtn:hover { color: var(--accent); border-color: var(--accent-dim); }
.wlbtn.danger:hover { color: var(--red); border-color: var(--red); }
.wlempty {
  padding: 30px 22px; text-align: center; color: var(--muted); font-size: 14px;
  border: 1px dashed var(--line); border-radius: 12px; background: var(--bg2);
}

/* 收藏页卡片里的移除按钮：一行小字，不抢封面 */
.wlrow { margin-top: 10px; }
.wlrow .wish { font-size: 12px; padding: 3px 10px 4px; }

/* 云端同步状态徽标（工具条行内，跟在按钮后面） */
.wlsync {
  align-self: center; font-size: 12px; color: var(--muted);
  padding: 2px 10px; border-radius: 999px; border: 1px dashed var(--line);
}
.wlsync[hidden] { display: none; }
.wlsync.ok { color: #57b894; border-color: rgba(87,184,148,.4); }
.wlsync.busy { color: var(--accent); border-color: var(--accent-dim); }
.wlsync.err { color: var(--red); border-color: var(--red); }

/* 收藏页的三块版块（心水导演 / 心水收藏 / 心水电影）。
   块内为空时整块收掉，不留一个空标题；但 [hidden] 必须显式写——
   这条已经踩过两次（.navbadge、.wlacts），凡是「按条件隐藏」的元素都补一刀。 */
.wlsec { margin-top: 34px; }
.wlsec[hidden] { display: none; }
.wlsec:first-of-type { margin-top: 26px; }
/* 收藏页的导演卡用方肖像（默认 1/1），不要详情页左栏那个 3/4 的比例 */
.wlsec .avatar.xl { border-radius: 12px; max-width: 190px; }

/* 收藏 / 移出的浮动提示 */
.wish-toast {
  position: fixed; left: 50%; bottom: 34px; transform: translate(-50%, 14px);
  z-index: 200; max-width: min(88vw, 460px);
  padding: 11px 20px; border-radius: 24px; font-size: 13.5px;
  background: var(--panel2); color: var(--ink);
  border: 1px solid var(--accent-dim);
  box-shadow: 0 14px 40px rgba(0,0,0,.5);
  opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s;
}
.wish-toast.show { opacity: 1; transform: translate(-50%, 0); }
