/* 视觉小说入口：档案柜热区、菜单图标、番茄回剧情的提示条（见 js/novel-entry.js） */
.sa-novel-hit { position: absolute; left: 30.6%; top: 44%; width: 9.6%; height: 19.5%; z-index: 16; padding: 0; border: 0; border-radius: 6px; background: transparent; cursor: pointer; }
.sa-novel-hit:focus-visible { outline: 2px solid rgba(230, 180, 104, .9); outline-offset: 2px; }
#cabinet { transition: filter .35s ease; }
#cabinet.sa-novel-glow { filter: drop-shadow(0 0 6px rgba(255, 214, 150, .85)) drop-shadow(0 0 16px rgba(230, 180, 104, .5)); }
body.lights-off #cabinet.sa-novel-glow { filter: brightness(.5) saturate(.7) drop-shadow(0 0 8px rgba(255, 214, 150, .7)); }
/* 慢速呼吸亮边，保留白天/关灯的基础明暗；从未打开的新章才常驻。
   档案柜本体定在最暗那一刻，上面叠一张定在最亮那一刻的副本（#saNovelBeacon，js/novel-entry.js 放），只动副本的透明度。
   以前是 filter 动画（两层 drop-shadow），每一帧都要重画，手机主线程约 5%、GPU 约 8%（10-24 实测）；透明度不用重画。 */
:is(#cabinet.sa-novel-unopened, #saNovelBeacon) { --novel-light: 1; --novel-saturation: 1; }
body[data-daylight="day"]:not(.lights-off) :is(#cabinet.sa-novel-unopened, #saNovelBeacon) { --novel-light: 1.16; --novel-saturation: .85; }
body.lights-off :is(#cabinet.sa-novel-unopened, #saNovelBeacon) { --novel-light: .5; --novel-saturation: .7; }
#cabinet.sa-novel-unopened { filter: brightness(var(--novel-light)) saturate(var(--novel-saturation)) drop-shadow(0 0 3px rgba(255, 214, 150, .3)) !important; }
#saNovelBeacon { filter: brightness(calc(var(--novel-light) + .14)) saturate(var(--novel-saturation)) drop-shadow(0 0 10px rgba(255, 214, 150, .95)) drop-shadow(0 0 22px rgba(230, 180, 104, .65)); pointer-events: none !important; animation: sa-novel-beacon 2.6s ease-in-out infinite; }
@keyframes sa-novel-beacon { 0%, 100% { opacity: 0; } 50% { opacity: 1; } }
#saNovelBtn.sa-novel-unopened::after { content: '新'; margin-left: .5em; padding: 1px 5px; border-radius: 4px; background: #e6b468; color: #35271b; font-size: 11px; }
@media (prefers-reduced-motion: reduce) {
  #cabinet.sa-novel-unopened { filter: brightness(var(--novel-light)) saturate(var(--novel-saturation)) drop-shadow(0 0 8px rgba(255, 214, 150, .85)) !important; }
  #saNovelBeacon { display: none !important; }
}
.sa-nav-menu [data-icon=archive] { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 2.5h14a1.5 1.5 0 0 1 1.5 1.5v16a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 20V4A1.5 1.5 0 0 1 5 2.5zm0 1.8v7h14v-7zm0 8.9v6.5h14v-6.5zM10 6.6h4v1.6h-4zm0 8.9h4v1.6h-4z' fill='black'/%3E%3C/svg%3E"); }
.sa-novel-banner { position: fixed; left: 50%; bottom: max(18px, env(safe-area-inset-bottom)); translate: -50% 0; z-index: 40; display: flex; align-items: center; gap: 10px; max-width: calc(100vw - 24px); padding: 9px 10px 9px 18px; border-radius: 999px;
  background: rgba(32, 24, 18, .92); color: #f3e6cf; border: 1px solid rgba(216, 176, 120, .3); box-shadow: 0 12px 34px rgba(0, 0, 0, .4); font: 14px/1.4 -apple-system, "PingFang SC", sans-serif; }
.sa-novel-banner button { flex: none; padding: 7px 14px; border-radius: 999px; border: 1px solid #e6b468; background: #c98533; color: #2b1c08; font: inherit; cursor: pointer; }
.sa-novel-banner button.quiet { background: transparent; color: #c9b391; border-color: rgba(216, 176, 120, .3); }
