:root{
  --paper:#f5f2ec;
  --paper-2:#fffdf8;
  --ink:#17151a;
  --ink-2:#4a4550;
  --ink-3:#8b8490;
  --line:#17151a;
  --line-soft:#d9d3c7;
  --red:#d63a1e;
  --red-wash:#fbe9e4;
  --teal:#0d6b63;
  --amber:#8a6100;
  --shadow:0 1px 0 var(--line-soft), 0 10px 24px -18px rgba(23,21,26,.5);
  --serif:"Songti SC","STSong","SimSun","Noto Serif CJK SC",serif;
  --sans:"DFYuan","ZCOOL KuaiLe","PingFang SC","Microsoft YaHei","Hiragino Sans GB",system-ui,sans-serif;
  --mono:Consolas,"SFMono-Regular","Courier New",monospace;
  --rail:236px;
}
*{box-sizing:border-box}
html{overflow-x:clip}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:16px;line-height:1.7;
  background-image:
    repeating-linear-gradient(0deg,rgba(23,21,26,.028) 0 1px,transparent 1px 28px),
    radial-gradient(120% 60% at 50% -10%,#fffdf6 0%,var(--paper) 60%);
}
.shell{width:min(1180px,100% - 32px);margin-inline:auto}
.mono{font-family:var(--mono);font-size:.82em;letter-spacing:.02em}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
h1,h2,h3,dd,p,li,.chip,.code{overflow-wrap:anywhere}
.mono,.dl-link a{overflow-wrap:anywhere;word-break:break-all}
.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--paper);padding:8px 14px;z-index:50}
.skip:focus{left:8px}
:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.rule{height:5px;background:var(--line);position:relative}
.rule::after{content:"";position:absolute;inset:0 0 auto 0;top:7px;height:2px;background:var(--red)}
.masthead{padding-top:14px}
.masthead-top{display:flex;justify-content:flex-end}
.ledger-note{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--ink-3);text-transform:uppercase}
.masthead-main{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:14px 0 20px}
.brand{display:flex;align-items:center;gap:14px}
.brand-mark{
  width:54px;height:54px;flex:none;display:grid;place-items:center;
  font-family:var(--serif);font-size:32px;line-height:1;color:var(--paper-2);
  background:var(--ink);border:3px solid var(--ink);position:relative
}
.brand-mark::after{content:"";position:absolute;inset:4px;border:1px solid rgba(245,242,236,.4)}
.brand-text{display:flex;flex-direction:column;line-height:1.2}
.brand-text strong{font-family:var(--serif);font-size:32px;letter-spacing:.14em}
.brand-text small{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--ink-2);margin-top:4px}
.nav{display:flex;gap:6px;flex-wrap:wrap}
.nav a{
  font-family:var(--serif);font-size:17px;letter-spacing:.1em;padding:8px 14px;border:2px solid transparent
}
.nav a:hover{border-color:var(--line-soft)}
.nav a[aria-current="page"]{border-color:var(--ink);background:var(--paper-2);box-shadow:3px 3px 0 var(--red)}

/* ---------- list ---------- */
.board{display:grid;grid-template-columns:var(--rail) minmax(0,1fr);gap:34px;padding:28px 0 60px;align-items:start}
.rail{position:sticky;top:16px}
.rail h2{margin:0 0 10px;font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--ink-3);text-transform:uppercase}
.cat-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-soft)}
.cat-list li{border-bottom:1px solid var(--line-soft)}
.cat-list a{display:flex;justify-content:space-between;gap:10px;padding:9px 4px 9px 12px;font-family:var(--serif);font-size:17px;letter-spacing:.04em;border-left:4px solid transparent;transition:.16s}
.cat-list a:hover{background:var(--paper-2);border-left-color:var(--ink-3)}
.cat-list a[aria-current="true"]{border-left-color:var(--red);background:var(--paper-2);font-weight:700}
.cat-list a[aria-current="true"]::before{content:"▸ ";color:var(--red)}
.cat-list .count{font-family:var(--mono);font-size:12px;color:var(--ink-3);align-self:center}

.toolbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.toolbar h1{margin:0;font-family:var(--serif);font-size:30px;letter-spacing:.06em;flex:1 1 auto}
.search{display:flex;align-items:center;border:2px solid var(--ink);background:var(--paper-2);padding:0 4px 0 12px;gap:8px;flex:0 1 320px;min-width:0}
.search input{border:0;background:transparent;font:inherit;padding:8px 0;width:auto;flex:1 1 0;min-width:0}
.search input:focus-visible{outline:none}
.search:focus-within{border-color:#ff9ec8}
.search button{border:0;background:var(--ink);color:var(--paper);font:inherit;font-size:13px;padding:7px 14px;cursor:pointer;letter-spacing:.1em}
.search button:hover{background:var(--red)}
.meta-line{font-family:var(--mono);font-size:12px;color:var(--ink-2);letter-spacing:.06em;margin:0 0 18px;padding-bottom:10px;border-bottom:1px dashed var(--line-soft)}

.ledger{list-style:none;margin:0;padding:0}
.entry{display:grid;grid-template-columns:54px 104px minmax(0,1fr);gap:18px;padding:18px 0;border-bottom:1px solid var(--line-soft);transition:background .16s}
.entry:hover{background:var(--paper-2)}
.entry-no{font-family:var(--mono);font-size:12px;color:var(--ink-3);padding-top:6px;letter-spacing:.04em}
.entry-no b{display:block;font-family:var(--serif);font-size:18px;color:var(--ink);font-weight:400;letter-spacing:0;white-space:nowrap}
.entry-cover{width:104px;aspect-ratio:2/3;background:var(--ink-3);overflow:hidden;border:1px solid var(--line);box-shadow:4px 4px 0 rgba(23,21,26,.12)}
.entry-cover img{width:100%;height:100%;object-fit:cover}
.entry-body{min-width:0}
.entry-title{font-family:var(--serif);font-size:21px;line-height:1.35;margin:0 0 6px;letter-spacing:.02em}
.entry-title a:hover{color:var(--red);text-decoration:underline;text-decoration-color:var(--red);text-underline-offset:4px}
.entry-sub{font-family:var(--mono);font-size:12px;color:var(--ink-2);margin:0 0 10px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{font-family:var(--mono);font-size:11px;letter-spacing:.06em;padding:2px 8px;border:1px solid var(--line-soft);background:var(--paper-2);color:var(--ink-2);white-space:nowrap}
.chip-magnet{border-color:var(--teal);color:var(--teal);background:#e6f2f0}
.chip-pan{border-color:var(--amber);color:var(--amber);background:#faf3e2}
.chip-spec{border-color:var(--ink);color:var(--ink);background:transparent}
.chip-cat{border-color:var(--red);color:var(--red);background:var(--red-wash)}
.pager{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:34px 0 0}
.pager a,.pager span{min-width:38px;text-align:center;padding:7px 12px;border:2px solid var(--line-soft);font-family:var(--mono);font-size:13px;background:var(--paper-2)}
.pager a:hover{border-color:var(--ink)}
.pager [aria-current="page"]{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.pager .off{color:var(--ink-3);opacity:.6}

/* ---------- post ---------- */
.post{padding:28px 0 60px;max-width:900px;margin-inline:auto}
#main:focus{outline:none}
.post:has(> .post-hero.has-bg){padding-top:0}
.post-head{border-bottom:3px solid var(--ink);padding-bottom:18px;margin-bottom:22px}
.eyebrow{display:flex;gap:10px;flex-wrap:wrap;font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--ink-3);text-transform:uppercase;margin:0 0 10px}
.post-head h1{margin:0;font-family:var(--serif);font-size:clamp(24px,4vw,38px);line-height:1.28;letter-spacing:.01em}
.card-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:26px;margin-bottom:30px}
.poster{border:1px solid var(--ink);background:var(--paper-2);padding:6px;box-shadow:7px 7px 0 rgba(23,21,26,.1)}
.poster img{width:100%;aspect-ratio:2/3;object-fit:cover;background:var(--line-soft)}
.poster .bgm-link{display:block;font-family:var(--mono);font-size:11px;text-align:center;padding-top:8px;color:var(--teal);text-decoration:underline}
.spec-table{margin:0;display:grid;grid-template-columns:auto 1fr;gap:2px 14px;font-size:14px;align-content:start}
.spec-table dt{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ink-3);text-transform:uppercase;padding-top:5px;border-top:1px solid var(--line-soft)}
.spec-table dd{margin:0;padding-top:3px;border-top:1px solid var(--line-soft);font-family:var(--serif);font-size:16px}
.notice{border-left:4px solid var(--amber);background:#fbf5e6;padding:12px 16px;margin:0 0 28px;font-size:14px;color:#5d4300}
.notice a{color:var(--amber);text-decoration:underline}
h2.sec{font-family:var(--serif);font-size:24px;margin:34px 0 14px;padding-bottom:6px;border-bottom:2px solid var(--ink);display:flex;justify-content:space-between;align-items:baseline;gap:12px}
h2.sec small{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--ink-3)}
.grp{margin:0 0 22px}
.grp-title{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--ink);background:var(--line-soft);padding:5px 10px;display:inline-block;margin:0 0 10px}
.dl{list-style:none;margin:0;padding:0}
.dl li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 14px;align-items:center;padding:11px 12px;border:1px solid var(--line-soft);border-bottom:0;background:var(--paper-2)}
.dl li:last-child{border-bottom:1px solid var(--line-soft)}
.dl-link{font-family:var(--mono);font-size:12.5px;word-break:break-all;color:var(--ink);display:flex;flex-direction:column;gap:3px;min-width:0}
.dl-link em{font-style:normal;font-family:var(--sans);font-size:13px;color:var(--ink-2)}
.dl-link a:hover{color:var(--red)}
.dl-act{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.code{font-family:var(--mono);font-size:12px;background:var(--ink);color:var(--paper);padding:3px 9px;letter-spacing:.14em}
.btn{border:1px solid var(--ink);background:var(--paper-2);font:inherit;font-size:12.5px;padding:5px 12px;cursor:pointer;letter-spacing:.06em;white-space:nowrap}
.btn:hover{background:var(--ink);color:var(--paper)}
.btn-red{border-color:var(--red);color:var(--red)}
.btn-red:hover{background:var(--red);color:#fff}
.prose p{margin:0 0 12px}
.staff{list-style:none;margin:0;padding:0;columns:2;column-gap:30px}
.staff li{break-inside:avoid;padding:7px 0;border-bottom:1px dotted var(--line-soft);display:flex;gap:12px;font-size:14.5px}
.staff .role{font-family:var(--mono);font-size:12px;color:var(--ink-3);flex:none;width:98px}
.staff .who{font-family:var(--serif);font-size:16px}
.quote{border:2px dashed var(--line-soft);padding:14px 18px;font-size:13.5px;color:var(--ink-2);margin:26px 0 0}
.more{display:flex;gap:10px;flex-wrap:wrap;margin-top:30px;padding-top:16px;border-top:2px solid var(--ink)}

/* ---------- admin ---------- */
.panel{max-width:940px;margin-inline:auto;padding:28px 0 60px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;margin-bottom:8px}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field.wide{grid-column:1/-1}
.field label{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.field input,.field textarea,.field select{font:inherit;font-size:15px;padding:9px 11px;border:2px solid var(--line-soft);background:var(--paper-2);color:var(--ink);width:100%}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--ink);outline:none}
.field textarea{min-height:96px;resize:vertical;line-height:1.6}
.field .hint{font-size:12px;color:var(--ink-3)}
.rows{display:flex;flex-direction:column;gap:8px}
.row-item{display:flex;gap:8px;align-items:center}
.row-item input{flex:1 1 0;min-width:0;font-family:var(--mono);font-size:12.5px;padding:8px 10px;border:2px solid var(--line-soft);background:var(--paper-2)}
.row-item input:first-child{flex:0 1 170px}
.row-item .rm{flex:none;border:1px solid var(--red);color:var(--red);background:transparent;cursor:pointer;font-size:16px;line-height:1;padding:4px 10px}
.row-item .rm:hover{background:var(--red);color:#fff}
.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:22px;padding-top:16px;border-top:2px solid var(--ink)}
.btn-lg{font-size:15px;padding:11px 26px;letter-spacing:.12em;background:var(--ink);color:var(--paper);border:2px solid var(--ink);cursor:pointer;font-family:var(--serif)}
.btn-lg:hover{background:var(--red);border-color:var(--red)}
.btn-lg[disabled]{opacity:.5;cursor:progress}
.import{border:2px solid var(--teal);background:#eef6f5;padding:16px 18px;margin-bottom:26px}
.import h3{margin:0 0 10px;font-family:var(--serif);font-size:19px;color:var(--teal)}
.import .row{display:flex;gap:8px;flex-wrap:wrap}
.results{list-style:none;margin:12px 0 0;padding:0;max-height:300px;overflow:auto}
.results li{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;padding:8px 0;border-top:1px solid #cfe2df;font-size:14px}
.results img{width:44px;aspect-ratio:2/3;object-fit:cover;border:1px solid var(--line-soft)}
.results .t{font-family:var(--serif);font-size:16px;line-height:1.3}
.results .s{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.danger{margin-left:auto}
.signin{border:2px solid var(--ink);background:var(--paper-2);padding:26px;text-align:center}
.signin p{margin:0 0 16px}
.signin .btn-lg{display:inline-block}
.signin .pwbox{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:0 0 10px}
.pwbox input{flex:1;min-width:190px;max-width:320px;font:inherit;font-size:16px;padding:10px 12px;border:2px solid var(--line-soft);background:var(--paper-2);color:var(--ink)}
.pwbox input:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.pwmsg{min-height:20px;margin:0;color:var(--red);font-size:14px}

/* ---------- states ---------- */
.empty{border:2px dashed var(--line-soft);padding:44px 20px;text-align:center;color:var(--ink-2);margin:10px 0}
.empty h3{font-family:var(--serif);font-size:22px;margin:0 0 8px;color:var(--ink)}
.err{border-left:4px solid var(--red);background:var(--red-wash);padding:14px 18px;margin:0 0 20px;font-size:14px}
.err b{font-family:var(--mono);font-size:12px;letter-spacing:.1em}
.skel{border-bottom:1px solid var(--line-soft);padding:18px 0}
.skel i,.skel-row i{display:block;background:linear-gradient(90deg,var(--line-soft) 25%,#efe9dd 37%,var(--line-soft) 63%);background-size:400% 100%;animation:sk 1.2s infinite;border-radius:2px}
.skel-row{display:grid;grid-template-columns:44px 104px minmax(0,1fr);gap:18px;padding:18px 0;border-bottom:1px solid var(--line-soft);list-style:none}
@keyframes sk{0%{background-position:100% 0}100%{background-position:0 0}}
.toast{position:fixed;left:50%;bottom:32px;transform:translate(-50%,140%);opacity:0;visibility:hidden;background:var(--ink);color:var(--paper);padding:10px 22px;font-family:var(--mono);font-size:12.5px;letter-spacing:.08em;transition:transform .22s,opacity .22s;z-index:40;pointer-events:none}
.toast.on{transform:translate(-50%,0);opacity:1;visibility:visible}
.colophon{padding-bottom:40px}
.colophon-inner{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:22px;font-size:13px;color:var(--ink-2)}

@media (max-width:900px){
  .board{grid-template-columns:minmax(0,1fr);gap:18px}
  .rail{position:static;min-width:0}
  .cat-list{display:flex;flex-wrap:wrap;gap:0 6px;border-top:0}
  .cat-list li{border-bottom:1px solid var(--line-soft);flex:0 1 auto}
  .staff{columns:1}
  .card-grid{grid-template-columns:1fr}
  .poster{max-width:220px}
  .form-grid{grid-template-columns:1fr}
  .row-item{flex-wrap:wrap}
  .row-item input,.row-item input:first-child{flex:1 1 40%}
  .dl li{grid-template-columns:1fr}
  .dl-act{justify-content:flex-start}
}
@media (max-width:620px){
  .toolbar h1{flex:1 1 100%}
  .search{flex:1 1 100%}
  .entry{grid-template-columns:74px minmax(0,1fr);gap:12px}
  .entry-no{display:none}
  .entry-cover{width:74px}
  .masthead-main{flex-direction:column;align-items:flex-start;gap:12px}
}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* ============ 樱色糖果主题（方案 A · 已并为主样式） ============ */
:root{
  --paper:#fff6fa; --paper-2:#ffffff; --ink:#4b3350; --ink-2:#8c6f95; --ink-3:#bba1c6;
  --line:#ffb6d2; --line-soft:#ffdae8; --red:#ff5f9e; --red-wash:#fff0f6;
  --teal:#3fa9ff; --amber:#ffab00;
  --serif:"DFYuan","ZCOOL KuaiLe","PingFang SC","Microsoft YaHei",sans-serif;
}
body{
  background-image:
    radial-gradient(circle at 12% 8%, #ffe3ef 0 14px, transparent 15px),
    radial-gradient(circle at 88% 22%, #e3f1ff 0 10px, transparent 11px),
    radial-gradient(circle at 72% 78%, #ffeaf4 0 18px, transparent 19px),
    radial-gradient(120% 70% at 50% -10%, #ffffff 0%, #fff6fa 55%, #ffeef6 100%);
  background-repeat:repeat; background-size:520px 520px,380px 380px,460px 460px,100% 100%;
  color:var(--ink);
}
.rule{height:6px;border-radius:99px;background:linear-gradient(90deg,#ff9ec4,#c6a8ff 45%,#8fd3ff)}
.rule::after{display:none}
.masthead{padding-top:18px}
.ledger-note{color:#c39ac6;letter-spacing:.16em}
.masthead-main{padding-bottom:22px}
.brand-mark{
  width:58px;height:58px;border:0;border-radius:22px;color:#fff;
  background:linear-gradient(140deg,#ff8fb8,#ff5f9e 55%,#c86bff);
  box-shadow:0 10px 22px -10px #ff5f9e, inset 0 -3px 0 rgba(255,255,255,.35);
}
.brand-mark::after{inset:5px;border-radius:17px;border-color:rgba(255,255,255,.55)}
.brand-text strong{color:#3f2a45;letter-spacing:.1em}
.brand-text small{color:#c07ec0}
.nav a{border:2px solid transparent;border-radius:99px;padding:9px 18px;color:#7a5b83}
.nav a:hover{border-color:#ffd0e2;background:#fff}
.nav a[aria-current="page"]{background:linear-gradient(120deg,#ff8fb8,#ff5f9e);color:#fff;border-color:transparent;box-shadow:0 8px 18px -8px #ff5f9e}
.rail h2{color:#c39ac6}
.cat-list{border-top:0}
.cat-list li{border-bottom:0;margin-bottom:6px}
.cat-list a{border:2px solid #ffe0ec;border-radius:99px;background:#fff;padding:9px 16px;color:#7a5b83}
.cat-list a:hover{border-color:#ffbcd6;background:#fff5fa}
.cat-list a[aria-current="true"]{background:linear-gradient(120deg,#ffe3ee,#ffd0e8);border-color:#ff9ec8;color:#c0246b;font-weight:700}
.cat-list a[aria-current="true"]::before{content:"♡ "}
.cat-list .count{color:#c99ac9}
.toolbar h1{color:#3f2a45}
.search{border:2px solid #ffd0e2;border-radius:99px;padding:0 6px 0 16px;box-shadow:0 8px 20px -16px #ff5f9e}
.search button{border-radius:99px;background:linear-gradient(120deg,#ff8fb8,#ff5f9e);color:#fff}
.search button:hover{background:linear-gradient(120deg,#ff7aad,#f4478c)}
.meta-line{color:#a986b0;border-bottom-color:#ffe0ec}
.ledger{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px}
.entry{display:block;border:2px solid #ffe0ec;border-radius:24px;background:#fff;box-shadow:0 16px 34px -28px #d96fa8;padding:14px;transition:transform .18s,box-shadow .18s}
.entry:hover{transform:translateY(-4px);box-shadow:0 22px 40px -24px #e07fb2;border-color:#ffc4dd}
.entry-no{padding:0 0 8px;color:#d7a8d8}
.entry-no b{display:inline;font-size:15px;color:#ff5f9e}
.entry-cover{width:100%;aspect-ratio:2/3;border:0;border-radius:18px;box-shadow:none;overflow:hidden;background:var(--line-soft)}
.entry-cover img{transition:filter .3s}
.entry:hover .entry-cover img{filter:brightness(1.04)}
.entry-title{font-size:19px;color:#3f2a45}
.entry-title a:hover{color:#ff2f7f}
.entry-sub{color:#b28fb8}
.chip{border-radius:99px;border-color:#ffdcea;background:#fff6fa;color:#9c6fa5;font-weight:600}
.chip-spec{border-color:#e6d4ff;background:#f7f0ff;color:#7a4fb5}
.skel-row{border:2px solid #ffe0ec;border-radius:24px;background:#fff;padding:14px}
.pager a,.pager span{border:2px solid #ffdcea;border-radius:99px;background:#fff;color:#8c6f95}
.pager [aria-current="page"]{border-color:transparent;background:linear-gradient(120deg,#ff8fb8,#ff5f9e);color:#fff}
.post-head{border-bottom:3px solid #ffdcea}
.post-head h1{color:#3f2a45}
.eyebrow{color:#c39ac6}
.eyebrow span:not(:first-child)::before{content:"· "}
.poster{border:0;border-radius:24px;background:#fff;padding:10px;box-shadow:0 20px 40px -28px #d96fa8}
.poster img{border-radius:16px}
.poster .bgm-link{color:#3fa9ff}
.post-hero{position:relative;isolation:isolate;border-radius:32px;overflow:hidden;padding:clamp(20px,2.6vw,38px);margin-bottom:22px}
.post-hero.has-bg{border:0;border-radius:0;margin-inline:calc(50% - 50vw);padding:0 0 clamp(18px,2vw,30px);background:#fff5fa}
/* PC 也照手机端那套：剧照整幅完整显示（不裁切），海报压在剧照下沿，文字落在渐隐的浅色区 */
.post-hero .hero-stage{position:absolute;inset:0 0 auto 0;height:clamp(260px,46vw,680px);overflow:hidden}
.post-hero .hero-blur{position:absolute;inset:-40px;background-position:center 22%;background-size:cover;filter:blur(30px) saturate(1.12);opacity:.55}
.post-hero .hero-bg{position:absolute;inset:0;background-position:center 20%;background-size:cover;background-repeat:no-repeat}
/* 淡出层只盖剧照那一条，别按整个 hero 算百分比，否则文字会压在没淡出的画上；
   它必须叠在剧照之上（z-index:-1 会被 hero 自己的底色盖掉，底部就会切成一条硬边） */
.post-hero .hero-scrim{position:absolute;inset:0;pointer-events:none;background:
  linear-gradient(180deg,rgba(255,245,250,0) 0%,rgba(255,245,250,0) 44%,rgba(255,245,250,.7) 74%,#fff5fa 96%)}
.hero-inner{position:relative;z-index:3;display:grid;grid-template-columns:minmax(170px,236px) minmax(0,1fr);gap:clamp(20px,2.6vw,36px);align-items:start;max-width:1120px;margin-inline:auto;margin-top:clamp(260px,46vw,680px);padding:0 clamp(16px,3vw,40px)}
.hero-poster{margin-top:-186px}
.hero-poster{display:flex;flex-direction:column;gap:10px}
.hero-info{min-width:0}
.post-hero.has-bg .hero-poster .poster{box-shadow:0 22px 44px -26px rgba(140,60,105,.55)}
.hero-info h1{margin:2px 0 10px;font-family:var(--serif);font-size:clamp(26px,3.4vw,44px);line-height:1.2;color:#3f2a45;display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 14px}
.hero-alt{font-size:.48em;font-weight:400;letter-spacing:.02em;color:#b48cc0}
.hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin:0 0 14px;font-family:var(--mono);font-size:13px;letter-spacing:.04em;color:#8c6f95}
.hero-score{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-size:12px;color:#8c6f95}
.hero-score b{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%;background:linear-gradient(140deg,#ff8fb8,#ff5f9e);color:#fff;font-family:var(--serif);font-size:19px;box-shadow:0 12px 24px -14px #ff5f9e}
.hero-chips{margin:0 0 14px}
.hero-lead{margin:0;max-width:62ch;color:#5d4162;font-size:15px;line-height:1.75}
.post-split{display:grid;grid-template-columns:minmax(0,1fr) 288px;gap:clamp(20px,2.4vw,34px);align-items:start}
.post-main{min-width:0}
.post-side{position:sticky;top:18px;border:2px solid #ffe0ec;border-radius:26px;background:#fff;padding:20px;box-shadow:0 18px 40px -34px #d96fa8}
.side-h{margin:0 0 12px;font-family:var(--serif);font-size:17px;color:#3f2a45;display:flex;justify-content:space-between;align-items:baseline;gap:10px;border-bottom:2px solid #ffdcea;padding-bottom:8px}
.side-h small{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:#c39ac6}
.facts{margin:0}
.facts dt{margin-top:10px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#c39ac6}
.facts dt:first-child{margin-top:0}
.facts dd{margin:3px 0 0;font-size:14px;line-height:1.6;color:#4b3350}
.side-acts{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.side-acts .btn{text-align:center}
/* bgm 式：左栏放图片与资料，右栏放正文（窄屏仍旧单列，资料跟在正文后面） */
@media (min-width:901px){
  .post-split{grid-template-columns:288px minmax(0,1fr)}
  .post-side{order:-1}
}
.post-side .side-h{margin-top:18px}
.post-side .side-h:first-child{margin-top:0}
.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 4px}
.gallery a{display:block;border:2px solid #ffe0ec;border-radius:12px;overflow:hidden;background:#fff}
.gallery a:hover{border-color:#ffbcd6}
.gallery img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}
.gallery .hint{grid-column:1/-1}
.people{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:12px}
.person{min-width:0;border:2px solid #ffe0ec;border-radius:18px;background:#fff;padding:10px;text-align:center}
.person img,.person .ph{display:block;width:100%;aspect-ratio:2/3;object-fit:cover;object-position:center top;border-radius:12px;background:var(--line-soft)}
.person b{display:block;margin-top:8px;font-size:14px;color:#3f2a45}
.person span{display:block;margin-top:2px;font-size:12px;color:#a986b0}
.person em{display:inline-block;margin-top:6px;padding:2px 8px;border-radius:99px;background:#fff0f6;color:#c0246b;font-size:11px;font-style:normal}
@media (max-width:900px){
  .post-split{grid-template-columns:1fr}
  .post-side{position:static}
}
/* 手机：剧照整条完整铺在顶部（16:9 不裁切），海报压在剧照下沿，标题在旁边 */
@media (max-width:700px){
  .post-hero.has-bg{padding:0 0 18px;border-radius:0;border-left:0;border-right:0;margin-inline:-16px;background:#fff5fa}
  .post-hero .hero-stage{height:min(56.25vw,260px)}
  .post-hero .hero-blur{inset:-24px;background-position:center 26%;filter:blur(18px) saturate(1.1);opacity:.6}
  .post-hero .hero-scrim{background:linear-gradient(180deg,rgba(255,245,250,0) 0%,rgba(255,245,250,0) 46%,rgba(255,245,250,.9) 72%,#fff5fa 88%)}
  .hero-inner{grid-template-columns:100px minmax(0,1fr);gap:14px;align-items:start;padding:0 14px;margin-top:min(56.25vw,260px)}
  .hero-poster{margin-top:-72px}
  .hero-poster{max-width:none;gap:8px}
  .hero-poster .poster{padding:5px;border-radius:16px}
  .hero-poster .poster img{border-radius:12px}
  .hero-poster .bgm-link{font-size:10px;padding-top:4px}
  .hero-info .eyebrow{font-size:10px;margin-bottom:6px}
  .hero-info .eyebrow span:nth-child(3){display:none}
  .hero-info h1{font-size:23px;line-height:1.25;margin:0 0 8px;gap:6px}
  .hero-alt{font-size:.6em}
  .hero-meta{font-size:11px;gap:8px;margin-bottom:0}
  .hero-score b{width:44px;height:44px;font-size:16px}
  .hero-chips,.hero-lead{display:none}
}
.spec-table dd{border-top-color:#ffe0ec;color:#4b3350}
.spec-table dt{border-top-color:#ffe0ec;color:#c39ac6}
.notice{border:2px solid #ffe1b8;border-left-width:2px;border-radius:18px;background:#fff8e8;color:#8a5b00}
h2.sec{border-bottom:3px solid #ffdcea;color:#3f2a45}
h2.sec small{color:#c39ac6}
.grp-title{border-radius:99px;border:2px solid #ffd0e2;background:#fff;color:#c0246b}
.dl li{border:2px solid #ffe0ec;border-radius:18px;margin-bottom:8px}
.dl li:last-child{border-bottom:2px solid #ffe0ec}
.dl li:hover{background:#fff8fb}
.dl-link em{color:#a986b0}
.dl-link a{color:#3f8fd6}
.code{border-radius:99px;background:linear-gradient(120deg,#ff8fb8,#ff5f9e);color:#fff;box-shadow:0 6px 14px -8px #ff5f9e}
.btn{border:2px solid #ffd0e2;border-radius:99px;background:#fff;color:#8c4a70}
.btn:hover{background:linear-gradient(120deg,#ff8fb8,#ff5f9e);border-color:transparent;color:#fff}
.btn-red{border-color:#ffb3cd;color:#ff2f7f}
.staff li{border-bottom-color:#ffe0ec}
.staff .role{color:#c39ac6}
.staff .who{color:#4b3350}
.quote{border:2px dashed #ffd0e2;border-radius:18px;background:#fff8fb;color:#9c6fa5}
.more{border-top:3px solid #ffdcea}
.empty{border:2px dashed #ffd0e2;border-radius:24px;background:#fff}
.err{border-radius:18px}
.import{border:2px solid #bfe3ff;border-radius:24px;background:linear-gradient(160deg,#f2f9ff,#e9f5ff)}
.import h3{color:#2b86d6}
.field label{color:#a986b0}
.field input,.field textarea,.field select{border:2px solid #ffdcea;border-radius:16px;color:#4b3350}
.field input:focus,.field textarea:focus,.field select:focus{border-color:#ff9ec8}
.row-item input{border:2px solid #ffdcea;border-radius:14px}
.btn-lg{border:0;border-radius:99px;background:linear-gradient(120deg,#ff8fb8,#ff5f9e);color:#fff;box-shadow:0 12px 26px -14px #ff5f9e}
.btn-lg:hover{background:linear-gradient(120deg,#ff7aad,#f4478c)}
.results li{border-top-color:#dcefff}
.colophon-inner{color:#a986b0}

/* ============ 替换原生控件外观 ============ */
::selection{background:#ffd7e8;color:#8a2560}
:focus-visible{outline:2px solid #ff5f9e;outline-offset:3px;border-radius:6px}
html{scrollbar-color:#ffb3cd #fff2f8;scrollbar-width:thin}
::-webkit-scrollbar{width:13px;height:13px}
::-webkit-scrollbar-track{background:#fff2f8;border-left:1px solid #ffdcea}
::-webkit-scrollbar-thumb{background:linear-gradient(#ffa9c9,#ff5f9e);border:3px solid #fff2f8;border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:linear-gradient(#ff8fb8,#f4478c)}
.results{scrollbar-color:#ffb3cd #fff}
input,textarea,select,button{font-family:inherit}
input,textarea{caret-color:#ff2f7f}
::placeholder{color:#c9a6cc;opacity:1}
input[type=search]{-webkit-appearance:none;appearance:none}
input[type=search]::-webkit-search-decoration,
input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
input[type=search]::-webkit-search-cancel-button{
  width:16px;height:16px;margin-right:2px;cursor:pointer;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='7' fill='%23ff5f9e'/%3E%3Cpath d='M5.4 5.4l5.2 5.2M10.6 5.4l-5.2 5.2' stroke='%23fff' stroke-width='1.7' stroke-linecap='round'/%3E%3C/svg%3E") center/16px 16px no-repeat;
}
select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23ff5f9e' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:11px 8px;padding-right:32px}
textarea{resize:vertical}
/* 删除确认：站内对话框，不用浏览器 confirm() */
.modal{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:20px;background:rgba(75,51,80,.34);backdrop-filter:blur(2px)}
.modal[hidden]{display:none}
.modal-card{width:min(420px,100%);background:#fff;border:2px solid #ffd0e2;border-radius:24px;box-shadow:0 30px 60px -30px #b0447e;padding:22px 24px 18px}
.modal-card h2{margin:0 0 8px;font-family:var(--serif);font-size:21px;color:#3f2a45}
.modal-card p{margin:0 0 18px;font-size:14px;line-height:1.7;color:#8c6f95}
.modal-act{display:flex;gap:10px;justify-content:flex-end}
.modal-act .btn{padding:8px 20px;border-radius:99px;cursor:pointer}
.modal-act .go{border:0;background:linear-gradient(120deg,#ff8fb8,#ff5f9e);color:#fff}
.modal-act .go:hover{background:linear-gradient(120deg,#ff7aad,#f4478c)}
