@font-face{
  font-family:'Friends';
  src:url('fonts/FRIENDS.TTF') format('truetype');
  font-weight:400 700;
  font-display:swap;
}
:root{
  --bg1:#fff3e6; --bg2:#ffe0c7;
  --purple:#6d4aa6; --orange:#ef7d3b; --teal:#2bb6a8;
  --ink:#3a2a1f; --muted:#8a7a6d;
  --card-front:#ffffff; --card-back:#fdeede;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
/* 注意：这里不要再给 html/body 设 height:100%。
   根元素/body 的背景会传播到画布，但背景图是按「根元素盒子」的尺寸绘制后再平铺的；
   一旦 html 被限定成一屏高，渐变就会每滑过一屏「从头重启」，出现接缝。
   故改为 min-height 让盒子随文档高度自由撑开，背景一次绘制覆盖全页。 */
html,body{margin:0;padding:0;}
html{min-height:100%;min-height:100dvh;overscroll-behavior-y:none;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",Arial,sans-serif;
  /* 正反循环渐变：一轮 1→2，下一轮 2→1，再 1→2 … 循环接缝处两侧同为色号1，天然无痕 */
  background-color:var(--bg2);
  background-image:repeating-linear-gradient(160deg,var(--bg1) 0px,var(--bg2) 100vh,var(--bg1) 200vh);
  color:var(--ink);
  min-height:100vh;
  min-height:100dvh;
  overflow-x:clip;
  overscroll-behavior-y:none;
  display:flex;justify-content:center;
}
.app{width:100%;max-width:430px;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;padding:0 18px 28px;}
.topbar{text-align:center;padding:26px 0 10px;}
.logo{
  font-family:'Friends','Caveat',cursive,Bradley Hand,-apple-system,BlinkMacSystemFont,sans-serif;
  font-weight:700;
  font-size:36px;
  color:var(--ink);
  display:flex;
  align-items:center;
  justify-content:center;
  gap:2px;
  line-height:1;
}
.logo .ltr{display:inline-block;line-height:1;}
.logo .dot{
  width:7px;
  height:7px;
  border-radius:50%;
  align-self:center;
  margin:0 2px;
  box-shadow:0 1px 2px rgba(0,0,0,.12);
}
.logo .dot.red{background:#e84a5f;}
.logo .dot.yellow{background:#f9c80e;}
.logo .dot.blue{background:#3a86ff;}
/* 首页「INSOMNIA」比 GOTCHA 多两字母，单独收一档字号避免窄屏溢出（仅影响首页 .app--home） */
.app--home .logo{font-size:30px;}
.subtitle{color:var(--muted);font-size:14px;margin-top:4px;}
/* 前端展示页（大标题下有文字副标题）：两行间距放大为基础 4px 的 1.3 倍 */
.front-sub .subtitle{margin-top:5.2px;}

/* flip card */
.stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding-top:10px;padding-bottom:56px;}
.flip-card{width:100%;height:400px;perspective:1200px;cursor:pointer;}
.flip-inner{position:relative;width:100%;height:100%;transition:transform .6s;transform-style:preserve-3d;}
.flip-card.flipped .flip-inner{transform:rotateY(180deg);}
.flip-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  border-radius:22px;padding:34px 24px 24px;display:flex;flex-direction:column;
  box-shadow:0 14px 30px rgba(120,70,30,.18);overflow:hidden;}
.flip-front{background:linear-gradient(155deg,#fff,#fff6ee);border:2px solid #ffe2c4;}
.flip-back{background:linear-gradient(155deg,#fdeede,#fcd9b8);transform:rotateY(180deg);border:2px solid var(--orange);}
.face-header{display:flex;align-items:center;justify-content:space-between;flex:none;}
.face-header-right{display:flex;align-items:center;gap:10px;}
.face-tag{font-size:12px;letter-spacing:3px;color:var(--orange);font-weight:700;}
.flip-back .face-tag{color:var(--purple);}
/* 题卡正面（中文题目 / 英文 Quiz）字号调小两字号：20px → 18px；文本左对齐（不居中）；背面答案保持 20px 居中不变 */
.flip-front .face-text{font-size:18px;text-align:left;justify-content:flex-start;}
.face-text{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;
  font-size:20px;line-height:1.5;font-weight:600;padding:6px 4px;overflow:auto;white-space:pre-wrap;word-break:break-word;}
.face-hint{text-align:center;color:var(--muted);font-size:13px;flex:none;}

/* 正面底部左侧 Hint：默认打码，点击切换明文；表面上看起来就是一行普通灰字 */
.front-hint{margin-top:auto;align-self:flex-start;text-align:left;
  font-size:13px;line-height:1.5;color:var(--muted);cursor:pointer;user-select:none;
  flex:none;padding-top:10px;letter-spacing:1px;word-break:break-word;white-space:pre-wrap;}
.front-hint.revealed{color:var(--ink);cursor:pointer;}

/* 背面底部左侧 Note */
.back-note{margin-top:auto;align-self:flex-start;text-align:left;
  font-size:13px;line-height:1.5;color:var(--muted);flex:none;padding-top:10px;
  word-break:break-word;white-space:pre-wrap;}

.front-stars{text-align:right;color:var(--orange);font-size:12px;letter-spacing:2px;font-weight:700;flex:none;}
.meta-box{display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--muted);
  overflow:auto;flex:none;max-height:140px;}
.meta-box img{max-width:100%;max-height:120px;border-radius:10px;align-self:center;}
.meta-box .meta-row{line-height:1.4;}
.meta-box .meta-row strong{color:var(--ink);}

/* 翻页方向动画：
   下一张 → 当前卡向左下倒下、移出页面；新卡从右侧滑入。
   上一张 → 当前卡平滑向右划去；新卡从左下反方向进入。
   退场终点与进场起点完全一致，且换内容在卡片屏外（不可见）时完成，故不会露出答案背面。 */
.flip-card.exit-next{transform-origin:bottom left;animation:exitNext .42s cubic-bezier(.55,.06,.68,.19) forwards;}
.flip-card.exit-prev{transform-origin:center right;animation:exitPrev .42s cubic-bezier(.55,.06,.68,.19) forwards;}
.flip-card.enter-next{animation:enterNext .46s cubic-bezier(.22,1,.36,1) forwards;}
.flip-card.enter-prev{animation:enterPrev .46s cubic-bezier(.22,1,.36,1) forwards;}
@keyframes exitNext{
  0%{transform:translate(0,0) rotate(0);opacity:1;}
  100%{transform:translate(-60%,65%) rotate(-16deg);opacity:0;}
}
@keyframes exitPrev{
  0%{transform:translate(0,0) rotate(0);opacity:1;}
  100%{transform:translate(60%,0) rotate(6deg);opacity:0;}
}
@keyframes enterNext{
  0%{transform:translate(60%,0) rotate(6deg);opacity:0;}
  100%{transform:translate(0,0) rotate(0);opacity:1;}
}
@keyframes enterPrev{
  0%{transform:translate(-60%,65%) rotate(-16deg);opacity:0;}
  100%{transform:translate(0,0) rotate(0);opacity:1;}
}

.counter{color:var(--muted);font-size:14px;}

/* 答题页操作区：位于卡片下方、页码之下两行 */
.quiz-actions{display:flex;flex-direction:column;gap:10px;width:100%;margin-top:14px;}
.main-actions{display:flex;gap:12px;}
.btn{flex:1;border:none;border-radius:14px;padding:14px;font-size:16px;font-weight:700;cursor:pointer;text-decoration:none;display:flex;align-items:center;justify-content:center;text-align:center;}
.btn-primary{background:var(--purple);color:#fff;}
.btn-ghost{background:rgba(255,255,255,.7);color:var(--purple);border:1px solid #e6d3f2;}
a.btn,a.btn:hover,a.btn:visited,a.btn:active{text-decoration:none;}

.admin-link{display:block;text-align:center;margin-top:16px;color:var(--purple);text-decoration:none;font-size:14px;font-weight:600;}
.admin-links{display:flex;gap:20px;justify-content:center;flex-wrap:wrap;margin-top:16px;}
.admin-links .admin-link{margin-top:0;}


.lang-toggle{display:flex;align-items:center;gap:8px;}
.lang-btn{background:none;border:none;cursor:pointer;color:var(--ink);font-size:14px;font-weight:400;font-family:inherit;padding:0;line-height:inherit;}
.lang-btn.active{color:var(--purple);font-weight:700;text-decoration:none;}
.lang-sep{color:var(--muted);user-select:none;}

/* difficulty modal */
.modal{position:fixed;inset:0;background:rgba(58,42,31,.55);backdrop-filter:blur(2px);
  display:flex;align-items:center;justify-content:center;padding:24px;z-index:50;}
.modal.hidden{display:none;}
.modal-card{background:#fff;border-radius:22px;width:100%;max-width:360px;padding:26px 22px;
  box-shadow:0 20px 50px rgba(80,40,10,.3);text-align:center;}
.modal-title{font-size:20px;font-weight:800;color:var(--ink);}
.modal-sub{font-size:13px;color:var(--muted);margin:6px 0 18px;}
.diff-options{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:20px;}
.diff-chip{border:1px solid #ecdcc9;background:#fffaf4;color:var(--muted);border-radius:999px;
  padding:9px 14px;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;letter-spacing:1px;}
.diff-chip.on{background:var(--purple);color:#fff;border-color:var(--purple);}
.diff-chip.all{background:#fffaf4;}
.diff-chip.all.on{background:var(--orange);border-color:var(--orange);}
.modal-start{width:100%;}
.modal-start:disabled{background:var(--muted);cursor:not-allowed;opacity:.7;}
.modal-count{font-size:13px;color:var(--purple);font-weight:700;margin:0 0 14px;}
.modal-back{display:block;text-align:center;margin-top:16px;color:var(--muted);font-size:14px;text-decoration:none;font-weight:500;}
.modal-back:hover{color:var(--orange);}

/* admin */
.admin{flex:1;overflow:visible;}
.card-form{background:#fff;border-radius:18px;padding:18px;box-shadow:0 10px 24px rgba(120,70,30,.12);display:flex;flex-direction:column;gap:4px;transition:flex-basis .28s ease,max-width .28s ease,opacity .2s ease,padding .2s ease;}
.card-form label{font-size:13px;color:var(--muted);font-weight:600;margin-top:10px;display:flex;justify-content:space-between;align-items:center;}
.card-form .req{color:#e0573e;font-size:11px;font-weight:700;}
.card-form textarea,.card-form input[type=text]{
  border:1px solid #ecdcc9;border-radius:12px;padding:12px;font-size:15px;font-family:inherit;resize:none;background:#fffaf4;
  line-height:1.5;white-space:pre-wrap;word-break:break-word;min-height:56px;max-height:340px;overflow-y:auto;}
.card-form input[type=file]{font-size:13px;margin-top:2px;}

/* 出处：二级联动 + 多条目 */
.source-list{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 2px;}
.source-chip{display:inline-flex;align-items:center;gap:6px;background:#e7e0f7;color:#6d4aa6;border-radius:999px;padding:4px 10px;font-size:13px;}
.source-chip button{border:none;background:none;color:#6d4aa6;cursor:pointer;font-size:15px;line-height:1;padding:0;}
.source-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:2px;}
.src-select,.src-other{border:1px solid #ecdcc9;border-radius:10px;padding:8px 10px;font-size:14px;font-family:inherit;background:#fffaf4;}
.src-select:disabled{background:#f1ece4;color:#b3a797;cursor:not-allowed;opacity:.85;}
.src-other{flex:1;min-width:150px;}

.img-preview{margin-top:6px;}
.img-preview img{max-width:120px;border-radius:10px;border:1px solid #ecdcc9;}

/* star selector */
.star-widget{display:flex;gap:6px;margin-top:4px;}
.star-widget button{background:none;border:none;cursor:pointer;font-size:26px;line-height:1;padding:0;color:#d9c2a8;transition:color .15s;}
.star-widget button.on{color:var(--orange);}

/* 列表「难度」列的可点击星星 */
.diff-stars{display:inline-flex;gap:1px;align-items:center;}
.diff-stars button{background:none;border:none;cursor:pointer;font-size:15px;line-height:1;padding:0 1px;color:#d9c2a8;transition:color .15s;}
.diff-stars button.on{color:var(--orange);}
.diff-stars button:hover{color:#f3a35d;}

.form-actions{display:flex;gap:10px;margin-top:14px;}
.btn-sm{padding:8px 14px;font-size:13px;flex:none;}

.list-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:18px 4px 8px;}

/* 录入卡收起/展开图标按钮（位于操作行最右侧） */
.panel-toggle{
  margin-left:auto;display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:34px;padding:0;border-radius:10px;
  border:1px solid #ecdcc9;background:#fffaf4;color:var(--muted);cursor:pointer;
  transition:color .15s,border-color .15s,background .15s;
}
.panel-toggle:hover{color:var(--purple);border-color:var(--purple);}
.panel-toggle.is-open{background:var(--orange);border-color:var(--orange);color:#fff;}
.panel-toggle svg{width:18px;height:18px;display:block;}

/* 录入卡默认收起：折叠其 flex 宽度而非移除，左栏(list-panel)即可响应式占满释放出的空间 */
body.form-collapsed .card-form{
  flex:0 0 0 !important;
  width:0;min-width:0;max-width:0;
  padding:0;border:0;margin:0;
  overflow:hidden;opacity:0;pointer-events:none;
}

/* 上下结构（<1100px，非并排）收起时直接隐藏，避免顶部残留巨大留空 */
@media (max-width:1099.98px){
  body.form-collapsed .card-form{display:none;}
}

.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:14px;box-shadow:0 8px 20px rgba(120,70,30,.1);border:1px solid #ede3f7;}
.data-table{min-width:1180px;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;background:#fff;font-size:13px;overflow:visible;}
.data-table th{background:#e7e0f7;color:var(--purple);text-align:left;padding:11px 10px;font-size:12px;font-weight:800;white-space:nowrap;letter-spacing:.5px;}
.data-table td{padding:11px 10px;border-top:1px solid #f3e7da;vertical-align:top;max-width:none;white-space:pre-wrap;word-break:break-word;}
.data-table tbody tr{height:48px;}
.data-table tbody tr.pad-row td{color:transparent;border-top:1px solid #f3e7da;}
.data-table tbody tr.pad-row:hover td{background:transparent;}
.data-table tr:hover td{background:#f9f6ff;}
.data-table td:first-child{font-weight:600;}
.data-table .thumb{max-width:60px;max-height:60px;border-radius:8px;display:block;}
.del-btn{border:none;background:#ffdede;color:#d64545;border-radius:8px;padding:6px 10px;font-size:12px;cursor:pointer;white-space:nowrap;}
.edit-btn{border:none;background:#e7e0f7;color:#6d4aa6;border-radius:8px;padding:6px 10px;font-size:12px;cursor:pointer;white-space:nowrap;}
.edit-btn:active{background:#d8cdf0;}
.poster-btn{border:none;background:#e0f3ea;color:#1b8a5a;border-radius:8px;padding:6px 10px;font-size:12px;cursor:pointer;white-space:nowrap;}
.poster-btn:active{background:#cfeede;}

/* admin 宽屏自适应（不再限制为移动端窄列） */
.app--wide{max-width:900px;}
@media (min-width:768px){
  .app--wide .card-form{padding:24px;}
  .app--wide .data-table{min-width:1180px;}
  .app--wide .table-scroll{overflow-x:auto;}
}

/* admin 宽屏：列表在左、新建表单在右（MacBook Air 等约 ≥1100px 视口触发） */
@media (min-width:1100px){
  .app--wide{max-width:1440px;}
  .admin{display:flex;flex-direction:row;align-items:flex-start;gap:28px;}
  .card-form{order:2;flex:0 0 clamp(440px,42%,600px);margin-top:18px;align-self:flex-start;position:sticky;top:18px;max-height:calc(100vh - 36px);overflow-y:auto;}
  .list-panel{order:1;flex:1 1 auto;min-width:0;}
}

/* 日历设置页：始终从上到下排布，不随视口变宽而左右分栏（覆盖上面的 flex-row） */
.admin.admin--vertical{display:block;flex-direction:column;gap:0;}

/* 列宽：题目 / 答案 / Quiz / Hint / 难度 / Note / 操作；Quiz 列加宽一倍 */
.data-table th,.data-table td{width:auto;}
.data-table th:nth-child(1),.data-table td:nth-child(1){width:180px;}   /* 题目（冻结左） */
.data-table th:nth-child(2),.data-table td:nth-child(2){width:220px;}   /* 答案 */
.data-table th:nth-child(3),.data-table td:nth-child(3){width:360px;}   /* Quiz（加宽一倍） */
.data-table th:nth-child(4),.data-table td:nth-child(4){width:220px;}   /* Hint */
.data-table th:nth-child(5),.data-table td:nth-child(5){width:120px;}   /* 难度 */
.data-table th:nth-child(6),.data-table td:nth-child(6){width:320px;}   /* Note（加宽一倍） */
.data-table th:nth-child(7),.data-table td:nth-child(7){width:180px;}   /* 操作（冻结右） */

/* 冻结列：左=题目，右=操作；中间 5 列随 .table-scroll 横向滚动 */
.data-table th:nth-child(1),.data-table td:nth-child(1){position:sticky;left:0;z-index:2;}
.data-table th:nth-child(7),.data-table td:nth-child(7){position:sticky;right:0;z-index:2;}
.data-table th:nth-child(1),.data-table th:nth-child(7){z-index:3;background:#e7e0f7;}
.data-table td:nth-child(1),.data-table td:nth-child(7){background:#fff;}
.data-table td:nth-child(1),.data-table th:nth-child(1){border-right:1px solid #ece9f3;}
.data-table td:nth-child(7),.data-table th:nth-child(7){border-left:1px solid #ece9f3;}

@media (max-width:767px){
  /* 卡片外观移到可滚动容器上；.data-table 解除 overflow，否则 sticky 失效 */
  .table-scroll{
    border:1px solid #ede3f7;border-radius:14px;
    box-shadow:0 8px 20px rgba(120,70,30,.1);
    overflow-x:auto;-webkit-overflow-scrolling:touch;
  }
  .data-table{border:none;border-radius:0;box-shadow:none;overflow:visible;min-width:1180px;}
}

.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 10px;}
.filter-label{font-size:13px;color:var(--muted);}
.filter-chip{border:1px solid #ecdcc9;background:#fffaf4;color:var(--muted);border-radius:999px;
  padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer;letter-spacing:1px;}
.filter-chip.on{background:var(--purple);color:#fff;border-color:var(--purple);}

/* 列表顶部导航：左侧页码（靠左）、右侧关键词检索 */
.list-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 22px;flex-wrap:wrap;}
.pager{display:flex;align-items:center;justify-content:flex-start;gap:14px;margin-top:0;}
.page-info{font-size:13px;color:var(--muted);}
.pager .btn:disabled{opacity:.45;cursor:not-allowed;}

.search-box{display:flex;align-items:center;}
#searchInput{
  width:280px;max-width:60vw;padding:8px 14px;border-radius:999px;
  border:1px solid #ecdcc9;background:#fffaf4;color:var(--ink);font-size:14px;outline:none;
  transition:border-color .15s ease,box-shadow .15s ease;
}
#searchInput::placeholder{color:#b6a691;}
#searchInput:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(109,74,166,.15);}

.empty-tip{text-align:center;color:var(--muted);font-size:14px;margin-top:14px;}

/* 题目编号与左右提示（卡片下方一行） */
.counter-row{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:2px;padding:0 2px;}
.hint-side{font-size:12px;color:var(--muted);white-space:nowrap;cursor:default;user-select:none;}
.counter{flex:none;text-align:center;min-width:54px;}

/* 主题切换按钮：当前选中项高亮为橙色 */
.btn.active{background:var(--orange);color:#fff;border-color:var(--orange);box-shadow:0 4px 12px rgba(239,125,59,.35);}

/* ===== admin 深色（固定启用，无切换） ===== */
body.admin-dark{
  --bg1:#241d18; --bg2:#140f0b;
  --ink:#f4ede2; --muted:#b6a692;
  --purple:#9b78e0; --orange:#ff9a52; --teal:#3fd0c0;
}
body.admin-dark .card-form{
  background:#2a221b;
  box-shadow:0 10px 24px rgba(0,0,0,.45);
}
body.admin-dark .card-form textarea,
body.admin-dark .card-form input[type=text]{
  background:#1f1812;
  border:1px solid #4a3a2c;
  color:var(--ink);
}
body.admin-dark .card-form textarea::placeholder,
body.admin-dark .card-form input[type=text]::placeholder{color:rgba(244,237,226,.45);}
body.admin-dark #searchInput{
  background:#1f1812;border:1px solid #4a3a2c;color:var(--ink);
}
body.admin-dark #searchInput::placeholder{color:rgba(244,237,226,.45);}
body.admin-dark #searchInput:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(155,120,224,.22);}
body.admin-dark .panel-toggle{background:#1f1812;border-color:#4a3a2c;color:var(--muted);}
body.admin-dark .panel-toggle:hover{color:var(--purple);border-color:var(--purple);}
body.admin-dark .panel-toggle.is-open{background:var(--orange);border-color:var(--orange);color:#fff;}
body.admin-dark .src-select,
body.admin-dark .src-other{
  background:#1f1812;
  border:1px solid #4a3a2c;
  color:var(--ink);
}
body.admin-dark .src-select:disabled{background:#241c15;color:#8c7d6c;}
body.admin-dark .source-chip{background:rgba(155,120,224,.18);color:#c9b3f0;border:1px solid rgba(155,120,224,.4);}
body.admin-dark .source-chip button{color:#c9b3f0;}

/* —— 录入卡预览弹层（复刻 Quiz 页题卡）—— */
.pv-modal{position:fixed;inset:0;background:rgba(20,15,11,.62);backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;padding:24px;z-index:60;}
.pv-modal[hidden]{display:none;}
.pv-card{width:100%;max-width:480px;display:flex;flex-direction:column;align-items:center;gap:14px;}
.pv-actions{display:flex;justify-content:center;}
.pv-close{width:46px;height:46px;border-radius:50%;border:none;cursor:pointer;
  background:rgba(255,255,255,.92);color:var(--purple);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 18px rgba(0,0,0,.28);transition:transform .15s ease,background .15s ease;}
.pv-close:hover{transform:scale(1.06);background:#fff;}
.pv-close svg{width:20px;height:20px;}

/* 列表「操作」列：预览按钮（置于修改 / 删除之间） */
.pv-btn{border:none;background:#def2ef;color:#1f9c8b;border-radius:8px;padding:6px 10px;font-size:12px;cursor:pointer;white-space:nowrap;}
.pv-btn:active{background:#c9e8e3;}
body.admin-dark .pv-btn{background:#22413a;color:#5fd6c2;}
body.admin-dark .pv-btn:active{background:#2c5048;}

/* 预览卡片强制深色（与 Quiz 页深色题卡一致，且不提供切换） */
#previewModal .flip-front{background:linear-gradient(155deg,#3b3127,#2b231c);border-color:#5b4631;}
#previewModal .flip-back{background:linear-gradient(155deg,#3a2f24,#4a3829);border-color:var(--orange);}
#previewModal .face-text{color:var(--ink);}
#previewModal .front-hint,#previewModal .back-note{color:var(--muted);}
#previewModal .front-hint.revealed{color:var(--ink);}
body.admin-dark .data-table{
  background:#2a221b;
  border:1px solid rgba(255,255,255,.1);
  box-shadow:0 8px 20px rgba(0,0,0,.4);
}
body.admin-dark .data-table th{background:#3a2f24;color:var(--purple);}
body.admin-dark .data-table td{border-top:1px solid rgba(255,255,255,.08);}
body.admin-dark .data-table tbody tr.pad-row td{border-top:1px solid rgba(255,255,255,.08);}
body.admin-dark .data-table tr:hover td{background:#332a22;}
body.admin-dark .data-table tbody tr.pad-row:hover td{background:transparent;}
body.admin-dark .del-btn{background:rgba(214,69,69,.18);color:#ff9a9a;border:1px solid rgba(214,69,69,.4);}
body.admin-dark .edit-btn{background:rgba(155,120,224,.18);color:#c9b3f0;border:1px solid rgba(155,120,224,.4);}
body.admin-dark .edit-btn:active{background:rgba(155,120,224,.3);}
body.admin-dark .poster-btn{background:rgba(27,138,90,.18);color:#8fe3bd;border:1px solid rgba(27,138,90,.4);}
body.admin-dark .poster-btn:active{background:rgba(27,138,90,.3);}
body.admin-dark .filter-chip{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);color:var(--muted);}
body.admin-dark .filter-chip.on{background:var(--purple);color:#fff;border-color:var(--purple);}
body.admin-dark .btn-ghost{background:rgba(255,255,255,.08);color:var(--ink);border:1px solid rgba(255,255,255,.16);}
body.admin-dark .btn-ghost:hover{background:rgba(255,255,255,.14);}
/* 冻结列：深色背景，避免白底刺眼 */
body.admin-dark .table-scroll{border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 20px rgba(0,0,0,.4);}
body.admin-dark .data-table th:nth-child(1),
body.admin-dark .data-table th:nth-child(7){background:#3a2f24;}
body.admin-dark .data-table td:nth-child(1),
body.admin-dark .data-table td:nth-child(7){background:#2a221b;}

/* ===== 深色主题（仅答题页 Friends 风格；admin 页不加 .theme-dark，故不受影响） ===== */
body.theme-dark{
  --bg1:#241d18; --bg2:#140f0b;
  --ink:#f4ede2; --muted:#b6a692;
  --purple:#9b78e0; --orange:#ff9a52; --teal:#3fd0c0;
}
body.theme-dark .flip-front{background:linear-gradient(155deg,#3b3127,#2b231c);border-color:#5b4631;}
body.theme-dark .flip-back{background:linear-gradient(155deg,#3a2f24,#4a3829);border-color:var(--orange);}
body.theme-dark .btn-ghost{background:rgba(255,255,255,.08);color:var(--ink);border:1px solid rgba(255,255,255,.16);}
body.theme-dark .lang-btn{color:var(--ink);}
body.theme-dark .lang-btn.active{color:var(--purple);}
body.theme-dark .lang-sep{color:var(--muted);}
body.theme-dark .modal{background:rgba(0,0,0,.6);}
body.theme-dark .modal-card{background:#2a221b;box-shadow:0 20px 50px rgba(0,0,0,.5);}
body.theme-dark .diff-chip{background:rgba(255,255,255,.06);color:var(--muted);border-color:rgba(255,255,255,.16);}
body.theme-dark .diff-chip.on{background:var(--purple);color:#fff;border-color:var(--purple);}
body.theme-dark .diff-chip.all.on{background:var(--orange);border-color:var(--orange);}
body.theme-dark .front-hint{color:var(--muted);}
body.theme-dark .front-hint.revealed{color:var(--ink);}
body.theme-dark .back-note{color:var(--muted);}

/* ===== 首页（landing）：两卡入口 ===== */
.app--home{max-width:920px;}
.home{display:flex;flex-direction:column;align-items:center;gap:22px;padding:6px 4px 30px;}
.home-lead{font-size:16px;color:var(--muted);margin:2px 0;line-height:1.6;text-align:center;}
.home-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;width:100%;max-width:960px;}
/* 后台总览（houtai）分组 */
.houtai-group{display:flex;flex-direction:column;gap:14px;width:100%;max-width:960px;}
.houtai-group + .houtai-group{margin-top:26px;}
.houtai-group-title{font-size:14px;font-weight:800;letter-spacing:3px;color:var(--muted);text-align:left;margin:0;padding-left:4px;}
.home-card{
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;
  background:linear-gradient(160deg,#ffffff,#fff6ee);
  border:2px solid #ffe2c4;border-radius:24px;padding:18px 20px 16px;
  text-decoration:none;color:var(--ink);cursor:pointer;
  box-shadow:0 14px 30px rgba(120,70,30,.16);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
/* 临时隐藏入口卡片：hidden 属性本应 display:none，但会被上面 .home-card 的 display:flex 覆盖，故显式压制 */
.home-card[hidden]{display:none !important;}
.home-card:hover{transform:translateY(-6px);box-shadow:0 22px 46px rgba(120,70,30,.24);border-color:var(--orange);}
.home-card--line:hover{border-color:var(--teal);}
.home-card--pacman{grid-column:1/-1;position:relative;overflow:hidden;min-height:118px;flex-direction:row;justify-content:center;gap:22px;background:radial-gradient(circle at 28% 30%,#4e33664d,transparent 34%),linear-gradient(145deg,#2b203d,#130e1f)!important;border-color:#8e6ab5!important;color:#f7f0e4!important;box-shadow:0 10px 32px #17122555!important}
.home-card--pacman:after{content:"PLAY";position:absolute;right:-9px;top:12px;padding:5px 13px;background:#f3c464;color:#24172f;font:800 9px/1 Arial,sans-serif;letter-spacing:1px;transform:rotate(35deg)}
.home-card--pacman .hc-icon-wrap{background:#1a1128!important;box-shadow:inset 0 0 0 1px #b59acf33,0 0 22px #f3c4641f}
.home-card--pacman .hc-icon{width:44px;height:44px}
.home-card--pacman h2{margin:0;font-family:'American Typewriter',Georgia,serif;font-size:clamp(24px,4vw,38px);letter-spacing:.08em}
.home-card--pacman .home-card-cta{color:#f3c464!important}
.home-card--pacman:hover,.home-card--pacman:active{border-color:#f3c464!important;background:linear-gradient(145deg,#38294c,#181022)!important;transform:translateY(-2px)}
@media(max-width:520px){.home-card--pacman{min-height:0;flex-wrap:wrap;gap:8px 16px}.home-card--pacman .home-card-cta{width:100%;margin-top:0}}
.home-card--line{border-color:#d4f0ec;}
.home-card--line .home-card-cta{color:var(--teal);}
.hc-icon-wrap{
  width:62px;height:62px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(239,125,59,.12);margin-bottom:4px;
}
.home-card--line .hc-icon-wrap{background:rgba(43,182,168,.12);}
.hc-icon{width:34px;height:34px;}
.home-card h2{font-size:20px;line-height:1.45;margin:4px 0 0;font-weight:800;}
.home-card p{font-size:14px;color:var(--muted);margin:2px 0 0;line-height:1.55;}
.home-card-cta{margin-top:8px;font-weight:700;font-size:14px;color:var(--purple);letter-spacing:.5px;}
/* 入口卡标题/副标题：静态 HTML 即为正确内容，进页直接显示（2026-09-08 用户确认）；
   page-cards.js 仅在后台改过文案/顺序时做静默校正，不再先藏后显 */
.home-card--quiz .home-card-cta{color:var(--orange);}
.home-card:hover .home-card-cta{color:var(--orange);}
.home-card--line:hover .home-card-cta{color:var(--teal);}
.home-card--gotcha{border-color:#e7e0f7;}
.home-card--gotcha .hc-icon-wrap{background:rgba(109,74,166,.12);}
.home-card--gotcha .home-card-cta{color:var(--purple);}
.home-card--gotcha:hover{border-color:var(--purple);}
.home-card--gotcha:hover .home-card-cta{color:var(--purple);}
/* Which Friend Are You（沙发橙 #ef7d3b，与 Gotcha 紫区分） */
.home-card--whichfriend{border-color:#fde3cc;}
.home-card--whichfriend .hc-icon-wrap{background:rgba(239,125,59,.12);}
.home-card--whichfriend .home-card-cta{color:#ef7d3b;}
.home-card--whichfriend:hover{border-color:#ef7d3b;}
.home-card--whichfriend:hover .home-card-cta{color:#ef7d3b;}
body.theme-dark .home-card--whichfriend .hc-icon-wrap{background:rgba(239,125,59,.18);}
body.theme-dark .home-card--whichfriend:hover{border-color:#ef7d3b;}
body.theme-dark .home-card--whichfriend:hover .home-card-cta{color:#ef7d3b;}
/* 影视 / 菲比歌单 变体（houtai 与前台共用） */
.home-card--movies{border-color:#dbe6fb;}
.home-card--movies .hc-icon-wrap{background:rgba(61,126,234,.12);}
.home-card--movies .home-card-cta{color:#3d7eea;}
.home-card--movies:hover{border-color:#3d7eea;}
.home-card--movies:hover .home-card-cta{color:#3d7eea;}
.home-card--phoebesongs{border-color:#fbe0ef;}
.home-card--phoebesongs .hc-icon-wrap{background:rgba(224,86,155,.12);}
.home-card--phoebesongs .home-card-cta{color:#e0569b;}
.home-card--phoebesongs:hover{border-color:#e0569b;}
.home-card--phoebesongs:hover .home-card-cta{color:#e0569b;}
/* Magic 8 Ball（靛蓝） */
.home-card--magic8{border-color:#dfe2f9;}
.home-card--magic8 .hc-icon-wrap{background:rgba(70,80,201,.12);}
.home-card--magic8 .home-card-cta{color:#4650c9;}
.home-card--magic8:hover{border-color:#4650c9;}
.home-card--magic8:hover .home-card-cta{color:#4650c9;}
/* Who-Dated-Whom Map（科技靛蓝 #5b6ef5，知识图谱） */
.home-card--dating{border-color:#dfe3fd;}
.home-card--dating .hc-icon-wrap{background:rgba(91,110,245,.12);}
.home-card--dating .home-card-cta{color:#5b6ef5;}
.home-card--dating:hover{border-color:#5b6ef5;}
.home-card--dating:hover .home-card-cta{color:#5b6ef5;}
body.theme-dark .home-card--dating .hc-icon-wrap{background:rgba(91,110,245,.22);}
body.theme-dark .home-card--dating:hover{border-color:#5b6ef5;}
body.theme-dark .home-card--dating:hover .home-card-cta{color:#5b6ef5;}
/* 首页入口（houtai 前台展示组） */
.home-card--home{border-color:#fbebd5;}
.home-card--home .hc-icon-wrap{background:rgba(244,160,97,.12);}
.home-card--home .home-card-cta{color:#f4a261;}
.home-card--home:hover{border-color:#f4a261;}
.home-card--home:hover .home-card-cta{color:#f4a261;}
@media (max-width:640px){
  .home-cards{grid-template-columns:1fr;max-width:420px;}
}

/* 首页深色（复用 .theme-dark 暗色变量） */
body.theme-dark .home-card{
  background:linear-gradient(160deg,#2b231c,#211a14);
  border-color:rgba(255,255,255,.12);
}
body.theme-dark .home-card:hover{border-color:var(--orange);}
body.theme-dark .home-card--line:hover{border-color:var(--teal);}
body.theme-dark .hc-icon-wrap{background:rgba(255,154,82,.18);}
body.theme-dark .home-card--line .hc-icon-wrap{background:rgba(43,182,168,.18);}
body.theme-dark .home-card--gotcha .hc-icon-wrap{background:rgba(109,74,166,.18);}
body.theme-dark .home-card--gotcha:hover{border-color:var(--purple);}
body.theme-dark .home-card--gotcha:hover .home-card-cta{color:var(--purple);}
body.theme-dark .home-card--movies .hc-icon-wrap{background:rgba(61,126,234,.20);}
body.theme-dark .home-card--magic8 .hc-icon-wrap{background:rgba(70,80,201,.22);}
body.theme-dark .home-card--phoebesongs .hc-icon-wrap{background:rgba(224,86,155,.20);}
body.theme-dark .home-card--movies:hover{border-color:#3d7eea;}
body.theme-dark .home-card--phoebesongs:hover{border-color:#e0569b;}
body.theme-dark .home-card--home .hc-icon-wrap{background:rgba(244,160,97,.18);}
body.theme-dark .home-card--home:hover{border-color:#f4a261;}
body.theme-dark .home-card--home:hover .home-card-cta{color:#f4a261;}
body.theme-dark .home-card--movies:hover .home-card-cta{color:#3d7eea;}
body.theme-dark .home-card--phoebesongs:hover .home-card-cta{color:#e0569b;}
body.theme-dark .home-card--magic8:hover{border-color:#4650c9;}
body.theme-dark .home-card--magic8:hover .home-card-cta{color:#4650c9;}

/* ===== Gotcha 日历页 ===== */
.app--gotcha{max-width:560px;}
.gotcha{display:flex;flex-direction:column;align-items:center;gap:24px;width:100%;padding-bottom:28px;}
.gotcha-card{
  width:100%;background:linear-gradient(155deg,#ffffff,#fff6ee);border:2px solid #ede3f7;border-radius:24px;
  padding:22px 24px 24px;box-shadow:0 14px 30px rgba(120,70,30,.12);
}
.gotcha-card-top{display:flex;justify-content:flex-end;margin-bottom:4px;}
/* 周日歌卡：右上角替代 中/En 切换的标签 */
.gotcha-song-tag{
  font-size:13px;color:var(--purple);font-weight:700;
  letter-spacing:.3px;user-select:none;
}
.gotcha-song-tag[hidden]{display:none;}
.gotcha-lang-toggle{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);}
/* display:flex 会盖过浏览器默认的 [hidden]{display:none}，必须显式补回（同 .gotcha-song-tag 的做法） */
.gotcha-lang-toggle[hidden]{display:none;}
.gotcha-lang-toggle .lang-btn{background:none;border:none;cursor:pointer;color:var(--muted);font:inherit;padding:0;font-size:13px;}
.gotcha-lang-toggle .lang-btn.active{color:var(--purple);font-weight:700;}
.gotcha-lang-toggle .lang-sep{color:var(--muted);user-select:none;}

.gotcha-date-block{display:flex;align-items:center;justify-content:center;gap:18px;margin:4px 0 8px;}
.gotcha-day-big{
  font-size:120px;line-height:1;font-weight:700;color:var(--purple);
  font-family:Georgia,'Times New Roman',serif;letter-spacing:-6px;
}
.gotcha-day-meta{display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-family:Georgia,'Times New Roman',serif;}
.gotcha-weekday{font-size:24px;color:#9b8aa0;}
.gotcha-month{font-size:22px;color:#b6a8c0;}

.gotcha-daily-title{
  text-align:center;font-size:22px;font-weight:700;color:var(--purple);
  margin:6px 0 16px;font-family:Georgia,'Times New Roman',serif;
}
.gotcha-question{
  font-size:20px;line-height:1.55;font-weight:600;color:var(--ink);text-align:left;cursor:pointer;margin-bottom:12px;
  min-height:calc(3 * 1.55em);
}
.gotcha-question:hover{color:var(--purple);}
.gotcha-hint{font-size:14px;color:var(--muted);text-align:left;margin-bottom:2px;cursor:pointer;user-select:none;letter-spacing:1px;word-break:break-word;}
.gotcha-hint.revealed{color:var(--ink);}
.gotcha-hint:empty{cursor:default;}
/* 周日歌卡：出处 + 播放按钮同一行；按钮在最右 */
.gotcha-hint-row{display:flex;align-items:center;gap:10px;}
.gotcha-hint-row .gotcha-hint{flex:1 1 auto;min-width:0;}
.gotcha-play-btn{
  flex:0 0 auto;width:34px;height:34px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:rgba(109,74,166,.10);border:none;color:var(--purple);
  font-size:14px;line-height:1;cursor:pointer;padding:0;
  -webkit-tap-highlight-color:transparent;transition:background .15s;
}
.gotcha-play-btn:hover,.gotcha-play-btn:focus{background:rgba(109,74,166,.22);}
.gotcha-play-btn:active{background:rgba(109,74,166,.34);}
.gotcha-play-btn[hidden]{display:none;}
/* 周日歌卡：题目位置改为歌词；字体与平日题目相同，仅小两个字号（20px→16px）；默认 5 行截断，第 4 行加渐隐遮罩；展开态取消截断 */
.gotcha-question.song{
  font-size:16px;                              /* 比普通题目（20px）小两个字号 */
  color:#9d8de6;                               /* 浅紫（用户色卡估读），与 gotcha-purple 主题色系一致 */
  white-space:pre-wrap;word-break:break-word;
  display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;
  position:relative;padding-bottom:2px;
}
/* 显式加 song 的 hover：特异性 (0,3,0) 高于基类 .gotcha-question.song 的 (0,2,0)，保证悬停仍能变深紫 */
.gotcha-question.song:hover{color:var(--purple);}

/* ===== 周日波西米亚风（只改色，不改布局） =====
   触发条件：.gotcha-card 加了 .is-song 类（JS 在周日选题时挂上）。 */
.gotcha-card.is-song{
  background:linear-gradient(155deg,#fbf2e3,#f5e3c2);
  border-color:#c66b3d;
  box-shadow:0 14px 30px rgba(166,84,50,.18);
}
.gotcha-card.is-song .gotcha-day-big{color:#a85432;}
.gotcha-card.is-song .gotcha-weekday{color:#8b3e1a;}
.gotcha-card.is-song .gotcha-month{color:#a8855a;}
.gotcha-card.is-song .gotcha-daily-title{color:#7c2d3e;}
.gotcha-card.is-song .gotcha-song-tag{color:#7c2d3e;}
.gotcha-card.is-song .gotcha-question.song{color:#3a5a4a;}
.gotcha-card.is-song .gotcha-question.song.overflow::after{
  background:linear-gradient(to bottom,rgba(251,242,227,0),#f5e3c2 80%);
}
.gotcha-card.is-song .gotcha-question.song:hover{color:#7c2d3e;}
.gotcha-card.is-song .gotcha-hint{color:#6b4423;}
.gotcha-card.is-song .gotcha-play-btn{
  background:rgba(200,155,60,.18);color:#a85432;
}
.gotcha-card.is-song .gotcha-play-btn:hover,
.gotcha-card.is-song .gotcha-play-btn:focus{background:rgba(200,155,60,.32);}
.gotcha-card.is-song .gotcha-play-btn:active{background:rgba(200,155,60,.48);}
/* 周日歌卡：出处为纯展示文本，不显示手型光标 */
.gotcha-card.is-song .gotcha-hint{cursor:default;}

/* ===== 播放按钮播放态（参考 phoebesongs）=====
   播放中：▶ 三角隐藏，切换为三根上下跳动的均衡器条；底色改为青绿渐变。
   放在波西米亚块之后，保证 .playing 的背景在普通主题与波西米亚主题下都生效。 */
.gotcha-play-btn .tri{
  width:0;height:0;margin-left:2px;
  border-left:10px solid currentColor;
  border-top:6px solid transparent;border-bottom:6px solid transparent;
}
.gotcha-play-btn .eq{display:none;align-items:flex-end;gap:2px;height:14px;}
.gotcha-play-btn .eq i{
  width:3px;background:currentColor;border-radius:2px;
  transform-origin:center bottom;
  animation:gotcha-eq .8s ease-in-out infinite;
}
/* 每根条必须有明确高度（0 高度会被 scaleY 动画缩成不可见）；参差高度更接近均衡器 */
.gotcha-play-btn .eq i:nth-child(1){height:8px;animation-delay:0s;}
.gotcha-play-btn .eq i:nth-child(2){height:14px;animation-delay:.2s;}
.gotcha-play-btn .eq i:nth-child(3){height:11px;animation-delay:.4s;}
@keyframes gotcha-eq{0%,100%{transform:scaleY(.45);}50%{transform:scaleY(1);}}
.gotcha-play-btn.playing,
.gotcha-play-btn.playing:hover,
.gotcha-play-btn.playing:focus,
.gotcha-play-btn.playing:active{background:linear-gradient(135deg,#3f9e8c,#74c9b6);color:#fff;}
.gotcha-card.is-song .gotcha-play-btn.playing,
.gotcha-card.is-song .gotcha-play-btn.playing:hover,
.gotcha-card.is-song .gotcha-play-btn.playing:focus,
.gotcha-card.is-song .gotcha-play-btn.playing:active{background:linear-gradient(135deg,#3f9e8c,#74c9b6);color:#fff;}
.gotcha-play-btn.playing .tri{display:none;}
.gotcha-play-btn.playing .eq{display:flex;}

/* ===== 周日波西米亚风：月历栏 =====
   页面背景规则见文件末尾（必须放在 html.gotcha-purple 之后才能覆盖紫色背景）。
   通过在 <main class="gotcha"> 上挂 .is-song 类驱动，JS 已在 renderQuestion 同步切换。 */
.gotcha.is-song .gotcha-calendar-wrap{
  background:#fbf2e3;border-color:#c66b3d;
  box-shadow:0 8px 20px rgba(166,84,50,.18);
}
.gotcha.is-song .gotcha-cal-header{color:#6b4423;}
.gotcha.is-song .gotcha-cal-day{color:#3a2510;}
.gotcha.is-song .gotcha-cal-sub{color:#a8855a;}
.gotcha.is-song .gotcha-cal-arrow{color:#a85432;}
.gotcha.is-song .gotcha-cal-arrow:hover,
.gotcha.is-song .gotcha-cal-arrow:focus{background:rgba(166,84,50,.12);}
.gotcha.is-song .gotcha-cal-arrow:active{background:rgba(166,84,50,.24);}
.gotcha.is-song .gotcha-cal-toggle--top{background:rgba(166,84,50,.08);}
.gotcha.is-song .gotcha-cal-toggle--top:hover,
.gotcha.is-song .gotcha-cal-toggle--top:focus{background:rgba(166,84,50,.14);}
.gotcha.is-song .gotcha-cal-toggle--top .gotcha-cal-toggle-bar{background:rgba(166,84,50,.5);}
.gotcha.is-song .gotcha-cal-toggle-bar{background:rgba(166,84,50,.35);}
.gotcha.is-song .gotcha-cal-toggle:hover .gotcha-cal-toggle-bar,
.gotcha.is-song .gotcha-cal-toggle:focus .gotcha-cal-toggle-bar{background:rgba(166,84,50,.55);}
.gotcha.is-song .gotcha-cal-toggle[aria-expanded="true"] .gotcha-cal-toggle-bar{background:rgba(166,84,50,.65);}
.gotcha.is-song .gotcha-cal-month-text{color:#6b4423;}
.gotcha.is-song .gotcha-cal-cell.row-alt{background:rgba(166,84,50,.06);}
.gotcha.is-song .gotcha-cal-cell.row-alt.other-month{background:rgba(166,84,50,.03);}
.gotcha.is-song .gotcha-cal-cell.today .gotcha-cal-day{border-color:#8b3e1a;}
.gotcha.is-song .gotcha-cal-cell.has-note{box-shadow:inset 0 -2px 0 0 rgba(166,84,50,.7);}
.gotcha.is-song .gotcha-anno{color:#a8855a;}
.gotcha-question.song.overflow::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:calc(1.55em * 2);
  background:linear-gradient(to bottom,rgba(255,255,255,0),#fff6ee 80%);
  pointer-events:none;
}
.gotcha-question.song.expanded{
  display:block;-webkit-line-clamp:unset;-webkit-box-orient:unset;overflow:visible;
}
.gotcha-question.song.expanded::after{display:none;}

.gotcha-calendar-wrap{
  width:100%;background:#fff;border:2px solid #ede3f7;border-radius:18px;padding:16px 14px;
  box-shadow:0 8px 20px rgba(120,70,30,.08);
}
.gotcha-cal-header{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:11px;color:var(--muted);margin-bottom:8px;font-weight:600;}
/* 视窗：裁掉左右滑动时溢出的部分 */
.gotcha-cal-viewport{overflow:hidden;}
.gotcha-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px 2px;touch-action:pan-y;}
/* 操作行（顶部、底部各一份）：左箭头 / 展开把手 / 右箭头 */
.gotcha-cal-nav{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:6px;}
.gotcha-cal-nav[hidden]{display:none;}
/* 顶部那份：整行仅在展开模式出现，贴合卡片上沿 */
.gotcha-cal-nav--top{margin-top:0;margin-bottom:8px;}
/* 年月标签：顶部在把手内、底部在把手下方，共用同一套文字样式 */
.gotcha-cal-month-text{
  font-size:11px;line-height:1.2;color:var(--muted);font-weight:600;letter-spacing:1px;
  font-family:Georgia,'Times New Roman',serif;
}
/* 顶部「收起」把手：年月在上，浅紫色横杆在下（与底部横杆+年月互为镜像） */
.gotcha-cal-toggle--top{
  flex-direction:column;
  padding:8px 12px 6px;
  gap:5px;
  border-radius:14px;
  background:rgba(109,74,166,.08);
}
.gotcha-cal-toggle--top:hover,.gotcha-cal-toggle--top:focus{background:rgba(109,74,166,.14);}
.gotcha-cal-toggle--top .gotcha-cal-toggle-bar{background:rgba(109,74,166,.5);}
.gotcha-cal-arrow{
  flex:0 0 30px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;
  border:none;background:transparent;color:var(--purple);font-size:22px;line-height:1;cursor:pointer;
  border-radius:50%;-webkit-tap-highlight-color:transparent;transition:background .15s;
}
.gotcha-cal-arrow:hover,.gotcha-cal-arrow:focus{background:rgba(109,74,166,.12);}
.gotcha-cal-arrow:active{background:rgba(109,74,166,.24);}
.gotcha-cal-arrow[hidden]{display:none;}
.gotcha-cal-toggle{
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;padding:10px 6px 2px;
  background:transparent;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent;
}
.gotcha-cal-toggle-bar{
  display:block;width:48px;height:5px;border-radius:3px;background:rgba(109,74,166,.35);transition:background .2s,width .2s;
}
.gotcha-cal-toggle:hover .gotcha-cal-toggle-bar,.gotcha-cal-toggle:focus .gotcha-cal-toggle-bar{background:rgba(109,74,166,.55);width:56px;}
.gotcha-cal-toggle[aria-expanded="true"] .gotcha-cal-toggle-bar{background:rgba(109,74,166,.65);}
/* 展开模式下，把手下方的小字年月（如 Sept. 2026） */
.gotcha-cal-month-label{text-align:center;padding-bottom:2px;}
.gotcha-cal-month-label[hidden]{display:none;}
.gotcha-cal-cell{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:5px 2px;border-radius:10px;min-height:52px;text-align:center;position:relative;
}
.gotcha-cal-cell.other-month{opacity:.45;}
.gotcha-cal-cell.today .gotcha-cal-day{
  width:32px;height:32px;border-radius:50%;border:2px solid #a65e44;
  display:flex;align-items:center;justify-content:center;
}
.gotcha-cal-day{font-size:15px;font-weight:600;color:var(--ink);font-family:Georgia,'Times New Roman',serif;}
.gotcha-cal-sub{font-size:10px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
/* 副文案超过 4 个字：只显示 4 个字宽，向左自动滚动、循环 */
.gotcha-cal-sub.is-marquee{width:4em;max-width:100%;overflow:hidden;text-overflow:clip;}
.gotcha-cal-sub-inner{
  display:inline-block;white-space:nowrap;
  animation-name:gotcha-sub-scroll;animation-timing-function:linear;animation-iteration-count:infinite;
  will-change:transform;
}
@keyframes gotcha-sub-scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media (prefers-reduced-motion:reduce){
  .gotcha-cal-sub-inner{animation:none;}
}
.gotcha-anno{font-size:16px;color:var(--muted);font-weight:600;letter-spacing:1px;font-family:Georgia,'Times New Roman',serif;}

.gotcha-modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;}
.gotcha-modal[hidden]{display:none;}
.gotcha-modal-overlay{position:absolute;inset:0;background:rgba(58,42,31,.55);backdrop-filter:blur(2px);}
.gotcha-modal-card{
  position:relative;width:92%;max-width:360px;background:linear-gradient(155deg,#fdeede,#fcd9b8);
  border:2px solid var(--orange);border-radius:22px;padding:28px 24px;text-align:center;
  box-shadow:0 20px 50px rgba(0,0,0,.25);
}
.gotcha-modal-tag{font-size:12px;letter-spacing:3px;color:var(--purple);font-weight:700;margin-bottom:12px;}
#noteModalDate{letter-spacing:0.5px;}
.gotcha-modal-text{font-size:20px;line-height:1.55;font-weight:600;color:var(--ink);margin-bottom:24px;white-space:pre-wrap;word-break:break-word;}
.gotcha-modal-card .btn{width:100%;}

/* ===== 后台「日期备注设置」模块 ===== */
.notes-section{width:100%;margin-top:8px;}
.notes-title{font-size:18px;font-weight:800;color:var(--ink);margin:26px 0 10px;}
.notes-card{
  background:#2a221b;border-radius:18px;padding:18px;box-shadow:0 10px 24px rgba(0,0,0,.45);
  display:flex;flex-direction:column;gap:4px;
}
body:not(.admin-dark) .notes-card{background:#fff;box-shadow:0 10px 24px rgba(120,70,30,.12);}
.notes-card label{font-size:13px;color:var(--muted);font-weight:600;margin-top:12px;display:flex;justify-content:space-between;align-items:center;}
.notes-form-row{display:flex;gap:14px;margin-top:10px;}
.notes-field{flex:1;display:flex;flex-direction:column;gap:5px;}
.notes-field label{margin-top:0;}
.notes-select{
  border:1px solid #4a3a2c;border-radius:12px;padding:11px 12px;font-size:15px;font-family:inherit;
  background:#1f1812;color:var(--ink);cursor:pointer;
}
body:not(.admin-dark) .notes-select{border:1px solid #ecdcc9;background:#fffaf4;}
.notes-card textarea{
  border:1px solid #4a3a2c;border-radius:12px;padding:12px;font-size:15px;font-family:inherit;resize:vertical;
  background:#1f1812;color:var(--ink);line-height:1.5;min-height:56px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;
}
body:not(.admin-dark) .notes-card textarea{border:1px solid #ecdcc9;background:#fffaf4;}
.notes-card textarea::placeholder{color:rgba(244,237,226,.45);}
body:not(.admin-dark) .notes-card textarea::placeholder{color:#b6a691;}
.note-error{color:#ff8a7a;font-size:13px;min-height:18px;margin-top:6px;line-height:1.4;}
body:not(.admin-dark) .note-error{color:#d64545;}
.notes-list-wrap{margin-top:16px;overflow-x:auto;-webkit-overflow-scrolling:touch;}
/* 两张表都覆盖 .app--wide .data-table 的 min-width:1180px，确保随浏览器宽度收缩、不撑出 */
.app--wide .notes-table,.app--wide .cal-history-table{min-width:0;width:100%;table-layout:fixed;}

/* 日期备注表：月份/日期固定小宽，操作固定，仅「备注」随宽度变化 */
.notes-table{font-size:13px;}
.notes-table th,.notes-table td{position:static;left:auto;white-space:pre-wrap;word-break:break-word;vertical-align:top;}
.notes-table th:nth-child(1),.notes-table td:nth-child(1){width:64px;white-space:nowrap;font-weight:600;position:static;left:auto;border-right:none;}   /* 月份 固定 */
.notes-table th:nth-child(2),.notes-table td:nth-child(2){width:64px;white-space:nowrap;font-weight:600;}   /* 日期 固定 */
.notes-table th:nth-child(4),.notes-table td:nth-child(4){width:208px;text-align:center;}                    /* 操作 固定（原 104px 的 2 倍） */
.notes-table th:nth-child(3),.notes-table td:nth-child(3){width:calc(100% - 336px);}                          /* 备注 流体（=总宽-月份-日期-操作） */
.notes-table .notes-empty{text-align:center;color:var(--muted);font-weight:400;padding:18px 10px;}
.notes-table .pad-row td{border-top:1px solid #f3e7da;}

/* 菲比歌单：文本输入（歌名/出处）复用 notes-card 外观，与 textarea 一致 */
.notes-card input[type="text"]{width:100%;border-radius:12px;padding:10px 12px;font-size:14px;font-family:inherit;line-height:1.5;color:var(--ink);}
body:not(.admin-dark) .notes-card input[type="text"]{border:1px solid #ecdcc9;background:#fffaf4;}
.notes-card input[type="text"]::placeholder{color:rgba(244,237,226,.45);}
body:not(.admin-dark) .notes-card input[type="text"]::placeholder{color:#b6a691;}
body.admin-dark .notes-card input[type="text"],
body.admin-dark .notes-card textarea,
body.admin-dark .notes-select{background:#1f1812;border:1px solid #4a3a2c;color:var(--ink);}
body.admin-dark .notes-card input[type="text"]:focus,
body.admin-dark .notes-card textarea:focus,
body.admin-dark .notes-select:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(155,120,224,.22);}

/* 菲比歌单表：歌名/出处/说明/音频/操作固定，歌词流体；min-width 保证窄屏不挤压、可横向滚动 */
/* min-width 1120 = 固定列内容宽 780 + 各列左右 padding 100 + 歌词最低内容宽 240；表格 min-width 是保证歌词列下限的唯一可靠手段（fixed 布局会忽略单元格上的 min-width） */
.app--wide .songs-table{min-width:1120px;width:100%;table-layout:fixed;}
.songs-table{font-size:13px;}
.songs-table th,.songs-table td{position:static;left:auto;white-space:pre-wrap;word-break:break-word;vertical-align:top;}
.songs-table th:nth-child(1),.songs-table td:nth-child(1){width:140px;font-weight:600;}            /* 歌名 */
.songs-table th:nth-child(3),.songs-table td:nth-child(3){width:160px;}                            /* 出处 */
.songs-table th:nth-child(4),.songs-table td:nth-child(4){width:200px;}                            /* 说明 */
.songs-table th:nth-child(5),.songs-table td:nth-child(5){width:120px;text-align:center;}           /* 音频 */
/* 歌词列：fixed 布局下百分比 width 按表格总宽解析，且固定列 width 是内容宽、另有左右 10px padding（5 列共 100px），故分配基数用 880 而非 780；
   最低宽 240px 不能只靠单元格 min-width（fixed 布局会忽略），由上方表格 min-width:1120 = 880+240 兜底，出处(160)×1.5=240 */
.songs-table th:nth-child(2),.songs-table td:nth-child(2){width:calc(100% - 880px);min-width:240px;}
/* 操作列（第 6 列）：固定 160px = 原 320px 的一半；右侧冻结 */
.songs-table th:nth-child(6),.songs-table td:nth-child(6){width:160px;text-align:center;position:sticky;right:0;z-index:2;}
.songs-table th:nth-child(6){z-index:3;}                                                            /* 表头层级高于表体冻结列 */
/* 冻结列底色：防止横向滚动内容透出（浅色） */
.songs-table th:nth-child(6){background:#e7e0f7;}
.songs-table td:nth-child(6){background:#fff;}
.songs-table td:nth-child(6),.songs-table th:nth-child(6){border-left:1px solid #ece9f3;}
/* 深色冻结列底色（本页 body.admin-dark）：与 movies-table 冻结列一致 */
body.admin-dark .songs-table td:nth-child(6){background:#2a221b;}
body.admin-dark .songs-table th:nth-child(6){background:#3a2f24;}
body.admin-dark .songs-table td:nth-child(6),body.admin-dark .songs-table th:nth-child(6){border-left:1px solid rgba(255,255,255,.12);}
.songs-table .notes-empty{text-align:center;color:var(--muted);font-weight:400;padding:18px 10px;}
.songs-table .pad-row td{border-top:1px solid #f3e7da;}
/* 出处表头可点击排序 */
.songs-table th.sortable{cursor:pointer;user-select:none;-webkit-user-select:none;}
.songs-table th.sortable:hover{color:var(--purple);}
.songs-table .sort-ind{margin-left:5px;font-size:11px;opacity:.5;font-weight:700;}
.songs-table th.sortable.active .sort-ind{opacity:1;color:var(--purple);}
/* ---------- 史前故事表（pre-table，5 列：时间 / 事件 / 出处 / 图片 / 操作）---------- */
/* min-width 890 = 固定列内容宽 570 + 各列左右 padding 80 + 事件最低内容宽 240；
   fixed 布局忽略单元格 min-width，事件列下限只能靠表格 min-width 兜底（同 songs-table 教训） */
.app--wide .pre-table{min-width:890px;width:100%;table-layout:fixed;}
.pre-table{font-size:13px;}
.pre-table th,.pre-table td{position:static;left:auto;right:auto;white-space:pre-wrap;word-break:break-word;vertical-align:top;border-left:none;}
.pre-table th:nth-child(2),.pre-table td:nth-child(2){width:calc(100% - 650px);min-width:240px;} /* 事件 流体（650=140+160+110+160 内容宽 + 4 列 padding 80） */
.pre-table th:nth-child(3),.pre-table td:nth-child(3){width:160px;}                            /* 出处 */
.pre-table th:nth-child(4),.pre-table td:nth-child(4){width:110px;text-align:center;}           /* 图片 */
/* 时间列（第 1 列）：左冻结 */
.pre-table th:nth-child(1),.pre-table td:nth-child(1){width:140px;font-weight:600;position:sticky;left:0;z-index:2;}
/* 操作列（第 5 列）：右冻结 */
.pre-table th:nth-child(5),.pre-table td:nth-child(5){width:160px;text-align:center;white-space:nowrap;position:sticky;right:0;z-index:2;}
.pre-table th:nth-child(1),.pre-table th:nth-child(5){z-index:3;}
/* 浅色冻结列底色 + 分隔线 */
.pre-table th:nth-child(1),.pre-table th:nth-child(5){background:#e7e0f7;}
.pre-table td:nth-child(1),.pre-table td:nth-child(5){background:#fff;}
.pre-table td:nth-child(1),.pre-table th:nth-child(1){border-right:1px solid #ece9f3;}
.pre-table td:nth-child(5),.pre-table th:nth-child(5){border-left:1px solid #ece9f3;}
/* 深色冻结列底色（本页 body.admin-dark） */
body.admin-dark .pre-table td:nth-child(1),body.admin-dark .pre-table td:nth-child(5){background:#2a221b;}
body.admin-dark .pre-table th:nth-child(1),body.admin-dark .pre-table th:nth-child(5){background:#3a2f24;}
body.admin-dark .pre-table td:nth-child(1),body.admin-dark .pre-table th:nth-child(1){border-right:1px solid rgba(255,255,255,.12);}
body.admin-dark .pre-table td:nth-child(5),body.admin-dark .pre-table th:nth-child(5){border-left:1px solid rgba(255,255,255,.12);}
/* 图片单元格：缩略图 + 上传/重传按钮 */
.pre-table .pre-img-cell{text-align:center;}
.pre-table .pre-img-cell .thumb{max-width:80px;max-height:60px;border-radius:8px;display:block;margin:0 auto 6px;}
.pre-table .img-up-btn{border:none;background:#e7e0f7;color:#6d4aa6;border-radius:8px;padding:5px 9px;font-size:12px;cursor:pointer;white-space:nowrap;}
.pre-table .img-up-btn:active{background:#d8cdf0;}
.pre-table .notes-empty{text-align:center;color:var(--muted);font-weight:400;padding:18px 10px;}
.pre-table .pad-row td{border-top:1px solid #f3e7da;}
.pre-table th.sortable{cursor:pointer;user-select:none;-webkit-user-select:none;}
.pre-table th.sortable:hover{color:var(--purple);}
.pre-table .sort-ind{margin-left:5px;font-size:11px;opacity:.5;font-weight:700;}
.pre-table th.sortable.active .sort-ind{opacity:1;color:var(--purple);}
/* 表单里「图片外链 + 选择本地图片」一行 */
.pre-img-row{display:flex;gap:10px;align-items:center;}
.pre-img-row input[type="text"]{flex:1;min-width:0;}
.pre-img-row .btn{flex-shrink:0;padding:10px 14px;}
@media (max-width:520px){.pre-img-row{flex-direction:column;align-items:stretch;}}

/* ---------- 史前故事卡（houtai / index 入口，琥珀色，区别于既有橙/紫/蓝/粉/青）---------- */
.home-card--prehistory{border-color:#f3e2c2;}
.home-card--prehistory .hc-icon-wrap{background:rgba(200,145,47,.12);}
.home-card--prehistory .home-card-cta{color:#c8912f;}
.home-card--prehistory:hover{border-color:#c8912f;}
.home-card--prehistory:hover .home-card-cta{color:#c8912f;}
body.theme-dark .home-card--prehistory .hc-icon-wrap{background:rgba(200,145,47,.18);}
body.theme-dark .home-card--prehistory:hover{border-color:#c8912f;}
body.theme-dark .home-card--prehistory:hover .home-card-cta{color:#c8912f;}

/* 列表上方：检索框 + 条数统计 */
.notes-toolbar{display:flex;align-items:center;gap:12px;margin-top:16px;}
.song-search{flex:1;min-width:0;border-radius:12px;padding:10px 12px;font-size:14px;font-family:inherit;line-height:1.5;color:var(--ink);background:#1f1812;border:1px solid #4a3a2c;}
body:not(.admin-dark) .song-search{background:#fffaf4;border:1px solid #ecdcc9;}
.song-search::placeholder{color:rgba(244,237,226,.45);}
body:not(.admin-dark) .song-search::placeholder{color:#b6a691;}
.song-search:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(155,120,224,.22);outline:none;}
.song-count{font-size:13px;color:var(--muted);white-space:nowrap;flex-shrink:0;}
@media (max-width:520px){.notes-toolbar{flex-direction:column;align-items:stretch;gap:8px;}.song-count{text-align:right;}}

/* ---------- 影视作品表（movies-table，9 列：…豆瓣链接 / 海报 / 操作）---------- */
.app--wide .movies-table{min-width:1470px;width:100%;table-layout:fixed;}
.movies-table{font-size:13px;}
/* 影视表默认不强制 sticky；冻结列在下方显式设置（首列=电影名_En 左冻，末列=操作 右冻） */
.movies-table th,.movies-table td{white-space:pre-wrap;word-break:break-word;vertical-align:top;background:transparent;}
body.admin-dark .movies-table th,.movies-table td{background:transparent;}
.movies-table th:nth-child(1),.movies-table td:nth-child(1){width:150px;font-weight:600;}            /* 电影名_En */
.movies-table th:nth-child(2),.movies-table td:nth-child(2){width:150px;font-weight:600;}            /* 电影名_CN */
.movies-table th:nth-child(3),.movies-table td:nth-child(3){width:140px;}                            /* 出处 */
.movies-table th:nth-child(4),.movies-table td:nth-child(4){width:calc(100% - 1110px);min-width:450px;}  /* 出处台词（唯一流体列，吸收全部剩余宽度；1110px = 其余 8 列固定宽之和：150+150+140+150+130+120+120+150） */
.movies-table th:nth-child(5),.movies-table td:nth-child(5){width:150px;}  /* 类型 */
.movies-table th:nth-child(6),.movies-table td:nth-child(6){width:130px;}  /* 说明 */
.movies-table th:nth-child(7),.movies-table td:nth-child(7){width:120px;text-align:center;}  /* 豆瓣链接 */
.movies-table th:nth-child(8),.movies-table td:nth-child(8){width:120px;text-align:center;}  /* 海报（预览 / 上传） */
.movies-table th:nth-child(9),.movies-table td:nth-child(9){width:150px;text-align:center;}  /* 操作（与电影名_En 同宽 150px） */
/* 冻结列：仅首列（电影名_En，左）与末列（操作，右）固定；显式覆盖全局 .data-table 的 nth-child(1)/(7) sticky，避免误冻中间列（如豆瓣链接） */
.movies-table th:nth-child(1),.movies-table td:nth-child(1){position:sticky;left:0;z-index:2;}      /* 电影名_En 冻结（左） */
.movies-table th:nth-child(9),.movies-table td:nth-child(9){position:sticky;right:0;z-index:2;}     /* 操作 冻结（右） */
.movies-table th:nth-child(2),.movies-table td:nth-child(2),
.movies-table th:nth-child(3),.movies-table td:nth-child(3),
.movies-table th:nth-child(4),.movies-table td:nth-child(4),
.movies-table th:nth-child(5),.movies-table td:nth-child(5),
.movies-table th:nth-child(6),.movies-table td:nth-child(6),
.movies-table th:nth-child(7),.movies-table td:nth-child(7),
.movies-table th:nth-child(8),.movies-table td:nth-child(8){position:static;left:auto;right:auto;border-left:none;}  /* 中间 7 列不冻结，随容器横向滚动；取消全局右冻列遗留的左分隔线 */
.movies-table th:nth-child(1),.movies-table th:nth-child(9){z-index:3;}                              /* 表头层级高于表体冻结列 */
/* 浅色冻结列底色：表头 lavender，表体白底，防止滚动内容透出 */
.movies-table th:nth-child(1),.movies-table th:nth-child(9){background:#e7e0f7;}
.movies-table td:nth-child(1),.movies-table td:nth-child(9){background:#fff;}
.movies-table td:nth-child(1),.movies-table th:nth-child(1){border-right:1px solid #ece9f3;}         /* 左冻结列右分隔线 */
.movies-table td:nth-child(9),.movies-table th:nth-child(9){border-left:1px solid #ece9f3;}          /* 右冻结列左分隔线 */
/* 深色冻结列底色：与 admin 题库表一致，避免白底刺眼 */
body.admin-dark .movies-table td:nth-child(1),body.admin-dark .movies-table td:nth-child(9){background:#2a221b;}
body.admin-dark .movies-table th:nth-child(1),body.admin-dark .movies-table th:nth-child(9){background:#3a2f24;}
body.admin-dark .movies-table td:nth-child(1),body.admin-dark .movies-table th:nth-child(1){border-right:1px solid rgba(255,255,255,.12);}
body.admin-dark .movies-table td:nth-child(9),body.admin-dark .movies-table th:nth-child(9){border-left:1px solid rgba(255,255,255,.12);}

/* 影视表「海报」列：预览 / 上传 两个小按钮，以及无海报时的灰色提示 */
.poster-cell{white-space:nowrap;display:inline-flex;align-items:center;gap:6px;justify-content:center;}
.poster-cell .poster-none{color:var(--muted);font-size:12px;margin-right:2px;}
.movies-table td .poster-view-btn,
.movies-table td .poster-btn{
  padding:3px 9px;font-size:12px;border-radius:999px;cursor:pointer;
  border:1px solid rgba(109,74,166,.45);background:rgba(109,74,166,.1);color:var(--purple);
  transition:background .15s ease,color .15s ease;
}
.movies-table td .poster-view-btn:hover,
.movies-table td .poster-btn:hover{background:var(--purple);color:#fff;}
body.admin-dark .movies-table td .poster-view-btn,
body.admin-dark .movies-table td .poster-btn{
  border-color:rgba(205,184,239,.45);background:rgba(155,120,224,.16);color:#d6c8f7;
}
body.admin-dark .movies-table td .poster-view-btn:hover,
body.admin-dark .movies-table td .poster-btn:hover{background:#9b78e0;color:#fff;}
body.admin-dark .poster-cell .poster-none{color:#9b8fc4;}

/* 后台海报大图预览灯箱（影视管理页「预览」用） */
.admin-poster-lightbox{
  position:fixed;inset:0;z-index:1300;
  background:rgba(10,7,16,.9);
  display:flex;align-items:center;justify-content:center;padding:28px;cursor:zoom-out;
}
.admin-poster-lightbox[hidden]{display:none;}
.admin-poster-lightbox img{
  max-width:90vw;max-height:88vh;object-fit:contain;border-radius:10px;
  box-shadow:0 20px 60px rgba(0,0,0,.6);background:#fff;
}
.admin-poster-lightbox .lb-hint{
  position:absolute;left:0;right:0;bottom:22px;text-align:center;color:#cfc4ea;font-size:13px;
}

.movies-table .notes-empty{text-align:center;color:var(--muted);font-weight:400;padding:18px 10px;}
.movies-table .pad-row td{border-top:1px solid #f3e7da;}
.movies-table a{color:var(--purple);text-decoration:underline;}
/* 影视表：出处列表头可点击排序（同 songs-table.sortable 视觉语言） */
.movies-table th.sortable{cursor:pointer;user-select:none;-webkit-user-select:none;}
.movies-table th.sortable:hover{color:var(--purple);}
.movies-table th.sortable .sort-ind{margin-left:5px;font-size:11px;opacity:.5;font-weight:700;}
.movies-table th.sortable.active .sort-ind{opacity:1;color:var(--purple);}

/* 类型单选（电影 / 剧 / 短片 / 综艺 / 其他）*/
.movie-type-group{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:6px;}
.radio-inline{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--ink);cursor:pointer;user-select:none;-webkit-user-select:none;}
body:not(.admin-dark) .radio-inline{color:#5b4636;}
.radio-inline input[type="radio"]{width:16px;height:16px;accent-color:var(--purple);cursor:pointer;}

/* 日历 Quiz 历史表（6 列，顺序：日期/星期/难度/题目/Quiz/操作）：日期/星期/难度固定，操作冻结；题目/Quiz 流体且 Quiz=2×题目；难度列宽=原 64px 的 1.5 倍（96px）、内容居中 */
.cal-history-table{font-size:13px;}
.cal-history-table th,.cal-history-table td{position:static;left:auto;white-space:normal;word-break:break-word;vertical-align:top;}
.cal-history-table th:nth-child(1),.cal-history-table td:nth-child(1){width:88px;white-space:nowrap;font-weight:600;position:static;left:auto;border-right:none;}  /* 日期 固定 */
.cal-history-table th:nth-child(2),.cal-history-table td:nth-child(2){width:56px;white-space:nowrap;text-align:center;}  /* 星期 固定 */
.cal-history-table th:nth-child(3),.cal-history-table td:nth-child(3){width:96px;white-space:nowrap;text-align:center;}  /* 难度 固定（原 64px 的 1.5 倍），内容居中 */
.cal-history-table th:nth-child(4),.cal-history-table td:nth-child(4){width:calc((100% - 324px) / 3);}   /* 题目 流体 */
.cal-history-table th:nth-child(5),.cal-history-table td:nth-child(5){width:calc((100% - 324px) * 2 / 3);}  /* Quiz 流体（=2×题目） */
.cal-history-table th:nth-child(6){width:84px;text-align:center;position:sticky;right:0;z-index:3;background:#e7e0f7;}  /* 操作 冻结（表头） */
.cal-history-table td:nth-child(6){width:84px;text-align:center;position:sticky;right:0;z-index:2;background:#fff;}     /* 操作 冻结（表体） */
body.admin-dark .cal-history-table th:nth-child(6){background:#3a2f24;}
body.admin-dark .cal-history-table td:nth-child(6){background:#2a221b;}
.cal-history-table .notes-empty{text-align:center;color:var(--muted);font-weight:400;padding:18px 10px;}
.cal-history-tip{font-size:13px;color:var(--muted);margin:0 0 12px;line-height:1.6;}

/* 月历隔行轻微底纹（每 7 格一组，偶数行加 row-alt），在白卡内呈淡紫纹 */
.gotcha-cal-cell.row-alt{background:rgba(109,74,166,.07);}
.gotcha-cal-cell.row-alt.other-month{background:rgba(109,74,166,.04);}

/* 月历上与「日期备注」重合的日期：仅底部浅紫边框（过去/未来同款，用 inset 阴影画线不影响布局）；当日不画该边框，只保留红圈 */
.gotcha-cal-cell.has-note{box-shadow:inset 0 -2px 0 0 rgba(155,120,224,.85);cursor:pointer;}
.gotcha-cal-cell.has-note.today{box-shadow:none;}

/* 日历页紫色背景（参考图底部紫色调）
   html 不再限定高度（见文件顶部 html,body 规则的说明），背景一次绘制覆盖全页；
   渐变采用正反循环：一轮 1→2，下一轮 2→1，再下一轮 1→2… 循环接缝处两侧同为色号1，天然无痕。
   周期 200vh（单程 100vh）：约一屏走完一个单程，可按观感调整这两个数值。 */
html.gotcha-purple{
  --gp1:#2e1a4d;  /* 深紫 */
  --gp2:#6d4aa6;  /* 品牌紫 */
  background-color:var(--gp2);
  background-image:repeating-linear-gradient(160deg,var(--gp1) 0px,var(--gp2) 100vh,var(--gp1) 200vh);
}
body.gotcha-purple{background:transparent;}
body.gotcha-purple .topbar .logo{color:#f3ecff;margin-bottom:20px;}

/* Movies 页：与 gotcha 同款处理 —— 根元素铺纯黑，body 背景透明。
   否则 body 的默认浅橙渐变（var(--bg2) #ffe0c7）会从页面底部/边缘露出来。 */
html.movies-purple{
  background-color:#000;
  background-image:none;
}
body.movies-purple{background:transparent;}
body.gotcha-purple .gotcha-anno{color:#cdb8ef;}
body.gotcha-purple .admin-link{color:#e3d4ff;}
body.gotcha-purple .admin-link:hover{color:#fff;}

/* 四个管理页（admin / admin_calendar / admin_movie / admin_phoebeslyrics）
   右下角固定「后台总览」浮层（同款圆角胶囊样式）。
   底部 .admin-links 保持空 div（原本的空行距不变），导航改由浮层承担。 */
.houtai-fab{
  position:fixed;
  right:18px;
  bottom:24px;
  /* z-index 需低于各种全屏弹层（.pv-modal 60 / .gotcha-modal 100 / 海报灯箱 1300），
     否则浮层会浮在弹窗遮罩之上。页面普通内容与 sticky 列最高才 3，40 足够压住。 */
  z-index:40;
  padding:10px 16px;
  border-radius:999px;
  background:rgba(109,74,166,.92);
  color:#fff;
  text-decoration:none;
  font-size:14px;
  font-weight:600;
  box-shadow:0 4px 14px rgba(0,0,0,.45);
  backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.18);
  transition:transform .15s ease,background .15s ease;
}
.houtai-fab:hover{background:#6d4aa6;color:#fff;transform:translateY(-2px);}

/* Gotcha / Movies 顶部 GOTCHA/MOVIES：沿用 .logo 默认手写体（Caveat/Friends），
   浅色统一字母 + 彩色小圆点，与首页 LOGO 视觉一致。 */

/* ---------- 页面标题设置（admin_titles.html）：页面名称左冻结、操作右冻结 ---------- */
.app--wide .titles-table{min-width:1340px;width:100%;table-layout:fixed;}
.titles-table{font-size:13px;}
.titles-table th,.titles-table td{position:static;left:auto;right:auto;white-space:pre-wrap;word-break:break-word;vertical-align:top;border-left:none;}
.titles-table th:first-child,.titles-table td:first-child{width:130px;font-weight:600;position:sticky;left:0;z-index:2;}   /* 页面名称 冻结左 */
.titles-table th:nth-child(2),.titles-table td:nth-child(2){width:150px;}                                                    /* 大标题 */
.titles-table th:nth-child(3),.titles-table td:nth-child(3){width:160px;}                                                    /* 副标题 */
.titles-table th:nth-child(4),.titles-table td:nth-child(4){width:140px;}                                                    /* 前端卡片标题 */
.titles-table th:nth-child(5),.titles-table td:nth-child(5){width:160px;}                                                    /* 前端卡片副标题 */
.titles-table th:nth-child(6),.titles-table td:nth-child(6){width:100px;text-align:center;}                                  /* 开放首页入口 */
.titles-table th:nth-child(7),.titles-table td:nth-child(7){width:100px;text-align:center;}                                  /* 首页入口排序 */
.titles-table th:nth-child(8),.titles-table td:nth-child(8){width:130px;}                                                    /* 后台卡片标题 */
.titles-table th:nth-child(9),.titles-table td:nth-child(9){width:auto;}                                                      /* 后台卡片副标题 流体 */
.titles-table th:last-child,.titles-table td:last-child{width:90px;text-align:center;white-space:nowrap;position:sticky;right:0;z-index:2;} /* 操作 冻结右 */
.titles-table th:first-child,.titles-table th:last-child{z-index:3;}
.titles-table th:first-child,.titles-table th:last-child{background:#e7e0f7;}
.titles-table td:first-child,.titles-table td:last-child{background:#fff;}
.titles-table td:first-child,.titles-table th:first-child{border-right:1px solid #ece9f3;}
.titles-table td:last-child,.titles-table th:last-child{border-left:1px solid #ece9f3;}
body.admin-dark .titles-table td:first-child,body.admin-dark .titles-table td:last-child{background:#2a221b;}
body.admin-dark .titles-table th:first-child,body.admin-dark .titles-table th:last-child{background:#3a2f24;}
body.admin-dark .titles-table td:first-child,body.admin-dark .titles-table th:first-child{border-right:1px solid rgba(255,255,255,.12);}
body.admin-dark .titles-table td:last-child,body.admin-dark .titles-table th:last-child{border-left:1px solid rgba(255,255,255,.12);}
.titles-table .notes-empty{text-align:center;color:var(--muted);font-weight:400;padding:18px 10px;}
.titles-table .titles-dash{color:var(--muted);}
.titles-table .titles-muted{color:var(--muted);font-size:12px;}
.titles-table th:last-child,.titles-table td:last-child{width:300px;white-space:normal;}
.title-row-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;align-items:center;}
.title-row-actions button{white-space:nowrap;flex:0 0 auto;}
.titles-inline-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink);cursor:pointer;font-weight:400;}
.titles-inline-check input{width:16px;height:16px;margin:0;cursor:pointer;}
.titles-field-checkbox label:first-child{margin-bottom:6px;display:block;}
.titles-edit-hint{margin:0 0 10px;font-size:13px;color:var(--muted);}
.titles-edit-hint b{color:var(--purple);}
/* 卡片文案分组 */
.titles-fieldset{margin-top:16px;padding:12px 14px 14px;border:1px solid rgba(255,255,255,.12);border-radius:14px;background:rgba(255,255,255,.03);}
.titles-fieldset-title{margin:0 0 2px;font-size:13px;font-weight:700;color:var(--purple);}
.titles-form-row-2{margin-top:8px;}
.titles-no-card-note{display:none;margin:8px 0 0;font-size:12px;color:var(--muted);}
.titles-fieldset.is-empty .titles-no-card-note{display:block;}
.titles-fieldset.is-empty input{opacity:.45;}

/* ---------- 首页底部署名 + 人物介绍弹窗 ---------- */
.home-credit{margin:26px 0 6px;text-align:center;font-size:12px;color:var(--muted);letter-spacing:.3px;}
.credit-name{
  border:none;background:transparent;padding:0;font:inherit;font-weight:700;
  color:var(--purple,#6d4aa6);cursor:pointer;text-decoration:none;
}
.credit-name:hover{color:var(--orange,#ef7d3b);text-decoration:underline;text-underline-offset:3px;}
.credit-modal{
  position:fixed;inset:0;z-index:95;display:flex;align-items:center;justify-content:center;
  padding:24px;background:rgba(8,5,14,.66);backdrop-filter:blur(2px);
}
.credit-modal[hidden]{display:none;}
.credit-panel{
  position:relative;width:min(520px,94vw);max-height:82vh;overflow:auto;
  border-radius:16px;padding:22px 22px 18px;text-align:left;
  background:#fff;border:1px solid #efe4d2;box-shadow:0 18px 50px rgba(0,0,0,.35);
}
body.theme-dark .credit-panel{background:#241d29;border-color:rgba(255,255,255,.08);box-shadow:0 18px 50px rgba(0,0,0,.55);}
.credit-x{
  position:absolute;top:10px;right:12px;width:28px;height:28px;padding:0;border:none;border-radius:50%;
  background:transparent;color:#a89a8c;font-size:20px;line-height:1;cursor:pointer;
}
.credit-x:hover{background:rgba(0,0,0,.06);color:#241c16;}
body.theme-dark .credit-x{color:#8f859b;}
body.theme-dark .credit-x:hover{background:rgba(255,255,255,.1);color:#fff;}
.credit-body p{
  margin:0 0 11px;font-size:14px;line-height:1.85;color:#241c16;
  white-space:normal;word-break:break-word;
}
.credit-body p:last-child{margin-bottom:0;}
.credit-body b{color:#6d4aa6;}
body.theme-dark .credit-body p{color:#efe6f7;}
body.theme-dark .credit-body b{color:#e0a94a;}
.credit-link,
.credit-link:link,
.credit-link:visited{
  color:var(--purple,#6d4aa6);font-weight:700;text-decoration:none;cursor:pointer;
}
.credit-link:hover,
.credit-link:active{
  color:var(--orange,#ef7d3b);text-decoration:underline;text-underline-offset:3px;
}

/* ---------- Which Friend Are You 后台设置（admin_personality.html） ---------- */
.pq-meta{display:flex;gap:14px;flex-wrap:wrap;}
.pq-meta .notes-field{flex:1 1 220px;min-width:0;}
.pq-opts{display:flex;flex-direction:column;gap:12px;margin-top:6px;}
.pq-opt{border:1px dashed rgba(255,255,255,.12);border-radius:12px;padding:10px 12px;}
.pq-opt label{font-size:13px;font-weight:700;}
.pq-w{display:grid;grid-template-columns:repeat(6,minmax(52px,1fr));gap:6px;margin-top:8px;}
.pq-w span{display:flex;flex-direction:column;gap:3px;}
.pq-w i{font-style:normal;font-size:11px;color:var(--muted);letter-spacing:.2px;}
.pq-w input{padding:6px 4px;font-size:13px;text-align:center;}
@media (max-width:520px){.pq-w{grid-template-columns:repeat(3,1fr);}}
.app--wide .pq-table{min-width:980px;width:100%;table-layout:fixed;}
.pq-table{font-size:13px;}
.pq-table th,.pq-table td{position:static;left:auto;right:auto;white-space:pre-wrap;word-break:break-word;vertical-align:top;border-left:none;}
.pq-table th:nth-child(1),.pq-table td:nth-child(1){width:230px;font-weight:600;position:sticky;left:0;z-index:2;}
.pq-table th:nth-child(2),.pq-table td:nth-child(2){width:96px;}
.pq-table th:nth-child(3),.pq-table td:nth-child(3){width:64px;}
.pq-table th:nth-child(4),.pq-table td:nth-child(4){width:calc(100% - 590px);min-width:220px;font-size:12px;line-height:1.7;}
.pq-table th:nth-child(5),.pq-table td:nth-child(5){width:200px;text-align:center;white-space:nowrap;position:sticky;right:0;z-index:2;}
.pq-table th:nth-child(1),.pq-table th:nth-child(5){z-index:3;}
.pq-table td:nth-child(1),.pq-table td:nth-child(5){background:#2a221b;}
.pq-table th:nth-child(1),.pq-table th:nth-child(5){background:#3a2f24;}
.pq-table td:nth-child(1),.pq-table th:nth-child(1){border-right:1px solid rgba(255,255,255,.12);}
.pq-table td:nth-child(5),.pq-table th:nth-child(5){border-left:1px solid rgba(255,255,255,.12);}
.pq-table .edit-btn[disabled]{opacity:.35;cursor:not-allowed;}
.app--wide .res-table,.app--wide .runs-table{min-width:0;width:100%;table-layout:fixed;}
.res-table,.runs-table{font-size:13px;}
.res-table th,.res-table td,.runs-table th,.runs-table td{position:static;left:auto;right:auto;white-space:pre-wrap;word-break:break-word;vertical-align:top;}
.res-table th:nth-child(1),.res-table td:nth-child(1){width:120px;font-weight:600;}
.res-table th:nth-child(2),.res-table td:nth-child(2){width:220px;}
.res-table th:nth-child(4),.res-table td:nth-child(4){width:100px;text-align:center;white-space:nowrap;}
/* 测试历史 runs-table：时间/昵称保持均分；「最像」收窄为原来的 1/3，多出的宽度给「六人得分」弹性吸收 */
.runs-table th:nth-child(1),.runs-table td:nth-child(1){width:25%;}
.runs-table th:nth-child(2),.runs-table td:nth-child(2){width:25%;}
.runs-table th:nth-child(3),.runs-table td:nth-child(3){width:8.33%;text-align:center;white-space:nowrap;}
.runs-table th:nth-child(4),.runs-table td:nth-child(4){width:auto;text-align:left;}
.res-desc-cell{font-size:12px;line-height:1.75;color:var(--muted);}

/* ===== Magic 8 Ball 设置表：窄序号/操作列，操作列右冻结，余量给答案解说 ===== */
.m8-table th:nth-child(1),.m8-table td:nth-child(1){width:60px;}               /* 序号：原 180px 的 1/3 */
.m8-table th:nth-child(2),.m8-table td:nth-child(2){width:220px;}              /* 答案：维持全局宽 */
.m8-table th:nth-child(3),.m8-table td:nth-child(3){width:auto;}               /* 答案解说：吃掉全部余量 */
.m8-table th:nth-child(4),.m8-table td:nth-child(4){width:90px;}               /* 操作：压缩为窄列 */
/* 覆盖全局首列左冻结：本表只冻结操作列 */
.m8-table th:nth-child(1),.m8-table td:nth-child(1){position:static;border-right:none;}
/* 操作列右冻结（沿用 songs/pre 表的冻结样式） */
.m8-table th:nth-child(4),.m8-table td:nth-child(4){position:sticky;right:0;z-index:2;text-align:center;white-space:nowrap;}
.m8-table th:nth-child(4){z-index:3;background:#e7e0f7;}
.m8-table td:nth-child(4){background:#fff;}
.m8-table td:nth-child(4),.m8-table th:nth-child(4){border-left:1px solid #ece9f3;}

/* ===== 周日波西米亚风：页面背景（必须放在文件末尾） =====
   html.gotcha-purple（紫色背景）在本文件靠后位置，同特异性 (0,1,1) 靠后者胜，
   所以这里必须更靠后才能真正盖过紫色；预览页（无 gotcha-purple 类）同样命中。 */
html.is-song{
  background-color:#5a3e1f;
  background-image:repeating-linear-gradient(160deg,#3a2510 0px,#6b4423 100vh,#3a2510 200vh);
}

/* ===== 抢答器（Buzzer）：首页/后台总览卡片配色（招牌红 #e84a5f） ===== */
.home-card--buzzer{border-color:#fbdde1;}
.home-card--buzzer .hc-icon-wrap{background:rgba(232,74,95,.12);}
.home-card--buzzer .home-card-cta{color:#e84a5f;}
.home-card--buzzer:hover{border-color:#e84a5f;}
.home-card--buzzer:hover .home-card-cta{color:#e84a5f;}
body.theme-dark .home-card--buzzer .hc-icon-wrap{background:rgba(232,74,95,.20);}
body.theme-dark .home-card--buzzer:hover{border-color:#e84a5f;}
body.theme-dark .home-card--buzzer:hover .home-card-cta{color:#e84a5f;}

/* ===== Bamboozled!（首页/后台总览卡片配色，Chandler & Joey 门绿 #2e5647） ===== */
.home-card--bamboozled{border-color:#d5e3dc;}
.home-card--bamboozled .hc-icon-wrap{background:rgba(46,86,71,.12);}
.home-card--bamboozled .home-card-cta{color:#2e5647;}
.home-card--bamboozled:hover{border-color:#2e5647;}
.home-card--bamboozled:hover .home-card-cta{color:#2e5647;}
body.theme-dark .home-card--bamboozled .hc-icon-wrap{background:rgba(46,86,71,.20);}
body.theme-dark .home-card--bamboozled:hover{border-color:#2e5647;}
body.theme-dark .home-card--bamboozled:hover .home-card-cta{color:#2e5647;}

/* Bamboozled 首页入口：金色；限定 front 卡片，不改后台卡片或游戏主题。 */
.home-card--bamboozled[data-card-group="front"]{border-color:#ffe2c4;}
.home-card--bamboozled[data-card-group="front"] .hc-icon-wrap{background:rgba(201,154,53,.15);}
.home-card--bamboozled[data-card-group="front"] .home-card-cta{color:#94651b;}
.home-card--bamboozled[data-card-group="front"]:hover,
.home-card--bamboozled[data-card-group="front"]:active{border-color:#c99a35;}
.home-card--bamboozled[data-card-group="front"]:hover .home-card-cta{color:#94651b;}
body.theme-dark .home-card--bamboozled[data-card-group="front"]{border-color:rgba(255,255,255,.12);}
body.theme-dark .home-card--bamboozled[data-card-group="front"] .hc-icon-wrap{background:rgba(201,154,53,.22);}
body.theme-dark .home-card--bamboozled[data-card-group="front"] .home-card-cta{color:#e3b857;}
body.theme-dark .home-card--bamboozled[data-card-group="front"]:hover,
body.theme-dark .home-card--bamboozled[data-card-group="front"]:active{border-color:#e3b857;}
body.theme-dark .home-card--bamboozled[data-card-group="front"]:hover .home-card-cta{color:#f0cd79;}

/* ===== 抢答器设置（admin_buzzer.html） ===== */
/* 工具栏比别的页多一个下拉 + 三个按钮，允许换行 */
.bz-toolbar{flex-wrap:wrap;}
.bz-toolbar .notes-select{flex:none;}
/* 生成规则（只读） */
.bz-rules{margin:6px 0 10px;padding-left:20px;font-size:13px;line-height:1.95;color:var(--ink);}
.bz-rules li::marker{color:#e84a5f;}
/* 活动记录表（8 列：活动码 冻结左 / 创建时间 流体 / 操作 冻结右） */
/* min-width 1120 = 固定列内容宽 796 + 8 列左右 padding 160 + 创建时间最低 160 */
.app--wide .bz-admin-table{min-width:1120px;width:100%;table-layout:fixed;}
.bz-admin-table{font-size:13px;}
.bz-admin-table th,.bz-admin-table td{position:static;left:auto;right:auto;white-space:pre-wrap;word-break:break-word;vertical-align:top;border-left:none;}
.bz-admin-table th:nth-child(1),.bz-admin-table td:nth-child(1){width:110px;font-weight:600;letter-spacing:2px;position:sticky;left:0;z-index:2;}
.bz-admin-table th:nth-child(2),.bz-admin-table td:nth-child(2){width:calc(100% - 956px);min-width:160px;}   /* 创建时间（流体） */
.bz-admin-table th:nth-child(3),.bz-admin-table td:nth-child(3){width:96px;}                               /* 状态 */
.bz-admin-table th:nth-child(4),.bz-admin-table td:nth-child(4){width:70px;}                               /* 轮次 */
.bz-admin-table th:nth-child(5),.bz-admin-table td:nth-child(5){width:100px;}                              /* 进场玩家 */
.bz-admin-table th:nth-child(6),.bz-admin-table td:nth-child(6){width:100px;}                              /* 抢答条数 */
.bz-admin-table th:nth-child(7),.bz-admin-table td:nth-child(7){width:170px;}                              /* 最近抢答 */
.bz-admin-table th:nth-child(8),.bz-admin-table td:nth-child(8){width:150px;text-align:center;white-space:nowrap;position:sticky;right:0;z-index:2;}
.bz-admin-table th:nth-child(1),.bz-admin-table th:nth-child(8){z-index:3;}
.bz-admin-table th:nth-child(1),.bz-admin-table th:nth-child(8){background:#e7e0f7;}
.bz-admin-table td:nth-child(1),.bz-admin-table td:nth-child(8){background:#fff;}
.bz-admin-table td:nth-child(1),.bz-admin-table th:nth-child(1){border-right:1px solid #ece9f3;}
.bz-admin-table td:nth-child(8),.bz-admin-table th:nth-child(8){border-left:1px solid #ece9f3;}
body.admin-dark .bz-admin-table td:nth-child(1),body.admin-dark .bz-admin-table td:nth-child(8){background:#2a221b;}
body.admin-dark .bz-admin-table th:nth-child(1),body.admin-dark .bz-admin-table th:nth-child(8){background:#3a2f24;}
body.admin-dark .bz-admin-table td:nth-child(1),body.admin-dark .bz-admin-table th:nth-child(1){border-right:1px solid rgba(255,255,255,.12);}
body.admin-dark .bz-admin-table td:nth-child(8),body.admin-dark .bz-admin-table th:nth-child(8){border-left:1px solid rgba(255,255,255,.12);}
.bz-admin-table .notes-empty{text-align:center;color:var(--muted);font-weight:400;padding:18px 10px;}
/* 明细面板 */
.bz-detail{margin-top:16px;}
.bz-detail-inner{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:14px 16px;}
.bz-detail-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;}
.bz-detail-top b{color:var(--purple);letter-spacing:2px;}
.bz-detail-round{margin-top:12px;}
.bz-detail-head{font-size:13px;font-weight:800;color:var(--ink);margin-bottom:6px;}
.bz-detail-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;}
.bz-detail-list li{display:flex;align-items:center;gap:10px;font-size:13px;padding:5px 10px;border-radius:8px;background:rgba(0,0,0,.22);}
.bz-detail-rank{flex:none;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(249,200,14,.18);color:#f9c80e;font-size:12px;font-weight:800;}
.bz-detail-list li:first-child .bz-detail-rank{background:#f9c80e;color:#3a2a1f;}
.bz-detail-time{margin-left:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--muted);}
.bz-detail-top .btn{margin-left:auto;flex:none;}

/* Cups 首页功能卡：绿色主题。 */
.home-card--cups[data-card-group="front"]{border-color:#cce2d5;}
.home-card--cups[data-card-group="front"] .hc-icon-wrap{background:rgba(46,112,86,.14);}
.home-card--cups[data-card-group="front"] .home-card-cta{color:#2e7056;}
.home-card--cups[data-card-group="front"]:hover,.home-card--cups[data-card-group="front"]:active{border-color:#2e7056;}
.home-card--cups[data-card-group="front"]:hover .home-card-cta{color:#245b46;}
body.theme-dark .home-card--cups[data-card-group="front"]{border-color:rgba(106,185,144,.3);}
body.theme-dark .home-card--cups[data-card-group="front"] .hc-icon-wrap{background:rgba(66,150,107,.22);}
body.theme-dark .home-card--cups[data-card-group="front"] .home-card-cta{color:#83cca5;}
body.theme-dark .home-card--cups[data-card-group="front"]:hover,body.theme-dark .home-card--cups[data-card-group="front"]:active{border-color:#83cca5;}
body.theme-dark .home-card--cups[data-card-group="front"]:hover .home-card-cta{color:#a2e0bf;}

/* PIVOT! 搬沙发（琥珀色，楼梯扶手木色） */
.home-card--pivot{border-color:#f3e2c8;}
.home-card--pivot .hc-icon-wrap{background:rgba(201,128,29,.12);}
.home-card--pivot .home-card-cta{color:#c9801d;}
.home-card--pivot:hover{border-color:#c9801d;}
.home-card--pivot:hover .home-card-cta{color:#c9801d;}
body.theme-dark .home-card--pivot{border-color:rgba(224,158,77,.32);}
body.theme-dark .home-card--pivot .hc-icon-wrap{background:rgba(224,158,77,.18);}
body.theme-dark .home-card--pivot .home-card-cta{color:#e6a654;}
body.theme-dark .home-card--pivot:hover{border-color:#e6a654;}
body.theme-dark .home-card--pivot:hover .home-card-cta{color:#f0b76b;}

/* On a Break 仲裁庭（暖黄，红蓝紫三色之外的中立色） */
.home-card--break{border-color:#f2e6c0;}
.home-card--break .hc-icon-wrap{background:rgba(217,169,13,.12);}
.home-card--break .home-card-cta{color:#d9a90d;}
.home-card--break:hover{border-color:#d9a90d;}
.home-card--break:hover .home-card-cta{color:#d9a90d;}
body.theme-dark .home-card--break{border-color:rgba(230,190,80,.32);}
body.theme-dark .home-card--break .hc-icon-wrap{background:rgba(230,190,80,.16);}
body.theme-dark .home-card--break .home-card-cta{color:#e6bd3d;}
body.theme-dark .home-card--break:hover{border-color:#e6bd3d;}
body.theme-dark .home-card--break:hover .home-card-cta{color:#f0cc5e;}

/* 固定底部导航：为滚动内容预留空间，兼容手机底部安全区。 */
.fixed-bottom-nav{
  position:fixed;left:0;right:0;bottom:0;z-index:40;
  margin:0;padding:0 12px env(safe-area-inset-bottom, 0px);
}
.fixed-bottom-nav[hidden]{display:none;}
.fixed-bottom-nav .admin-link,
.fixed-bottom-nav .admin-link:hover{text-decoration:none;}

/* Game Night: the deep-purple stage palette, with a cat-eared gamepad and moon. */
.home-card--gamenight,
body.theme-dark .home-card--gamenight{background:linear-gradient(145deg,#2b203d,#171225);border-color:#73558e;box-shadow:0 8px 28px #17122522;color:#f7f0e4;}
.home-card--gamenight .hc-icon-wrap,
body.theme-dark .home-card--gamenight .hc-icon-wrap{background:#382748;box-shadow:inset 0 0 0 1px #b59acf22;}
.home-card--gamenight .hc-icon{width:40px;height:40px;}
.home-card--gamenight .home-card-cta,
body.theme-dark .home-card--gamenight .home-card-cta{color:#c7acdf;}
.home-card--gamenight:hover,
body.theme-dark .home-card--gamenight:hover{border-color:#b59acf;background:linear-gradient(145deg,#35264a,#1d162c);box-shadow:0 10px 32px #17122544;}
.home-card--gamenight:hover .home-card-cta,
body.theme-dark .home-card--gamenight:hover .home-card-cta{color:#e2c9f7;}

/* ===== 首页 v2：夜场画报 / 咖啡馆节目单 ===== */
body.theme-dark.front-sub{
  --home-night:#171225;--home-panel:#211a2d;--home-panel-2:#271f33;
  --home-cream:#f7f0e4;--home-muted:#b6a9cb;--home-gold:#f4c56e;--home-line:rgba(184,160,221,.2);
  background-color:var(--home-night);
  background-image:
    radial-gradient(ellipse at 88% 0%,rgba(144,82,187,.27),transparent 38rem),
    radial-gradient(ellipse at 2% 42%,rgba(176,109,37,.14),transparent 34rem),
    linear-gradient(115deg,transparent 46%,rgba(214,178,255,.025) 50%,transparent 54%);
  color:var(--home-cream);
}
body.theme-dark.front-sub .app--home{max-width:1120px;padding:0 34px 34px;}
body.theme-dark.front-sub .topbar{
  display:flex;align-items:flex-start;justify-content:space-between;gap:24px;
  padding:28px 0 20px;border-bottom:1px solid var(--home-line);text-align:left;
}
body.theme-dark.front-sub .topbar .logo{justify-content:flex-start;font-size:25px;letter-spacing:.05em;}
body.theme-dark.front-sub .topbar .subtitle{margin-top:5px;color:var(--home-muted);font-size:10px;letter-spacing:.16em;text-transform:uppercase;}
body.theme-dark.front-sub .home{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:0 14px;padding:0 0 28px;}
.home-hero{grid-column:1/-1;padding:52px 0 34px;}
.home-eyebrow{margin:0 0 17px;color:var(--home-gold);font-size:10px;letter-spacing:.22em;}
.home-hero h1{margin:0;font-family:'American Typewriter',Georgia,serif;font-size:clamp(44px,6.3vw,68px);font-weight:700;line-height:1.03;letter-spacing:calc(-.055em + 2px);}

.home-daily{
  position:relative;display:grid;grid-template-columns:92px minmax(0,1fr) auto;align-items:center;gap:22px;
  width:100%;min-height:112px;margin-bottom:22px;padding:12px 24px 12px 12px;overflow:hidden;
  color:var(--home-cream);text-decoration:none;border:1px solid var(--home-line);border-radius:18px;
  background:linear-gradient(100deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  transition:transform .18s ease,border-color .18s ease,background .18s ease;
}
.home-daily{grid-column:1/-1;}
.home-daily:hover{transform:translateY(-2px);border-color:rgba(244,197,110,.62);background:linear-gradient(100deg,rgba(255,255,255,.07),rgba(255,255,255,.025));}
.home-daily[hidden]{display:none;}
.home-daily-date{display:flex;min-height:86px;flex-direction:column;align-items:center;justify-content:center;border-radius:12px;background:var(--home-gold);color:#281d31;}
.home-daily-date b{font:800 38px/1 'American Typewriter',Georgia,serif;}
.home-daily-date small{margin-top:7px;font-size:8px;font-weight:800;letter-spacing:.12em;}
.home-daily-copy{display:flex;min-width:0;flex-direction:column;gap:5px;}
.home-daily-copy small{color:var(--home-gold);font-size:9px;letter-spacing:.18em;}
.home-daily-copy strong{font:700 clamp(20px,2.7vw,30px)/1.25 'American Typewriter',Georgia,serif;}
.home-daily-copy em{color:var(--home-muted);font-size:12px;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.home-daily-mark{font:800 clamp(58px,8vw,90px)/1 'American Typewriter',Georgia,serif;color:rgba(244,197,110,.13);}

.home-programs{display:contents;}
.home-program{min-width:0;}
.home-program--featured{grid-column:1;}
.home-program--afterdark{grid-column:2;}
.home-program-head,.home-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:18px;margin:0 2px 10px;}
.home-program-head>span,.home-section-head h2{margin:0;font-size:14px;font-weight:800;}
.home-program-head small,.home-section-head>span{color:var(--home-muted);font-size:9px;letter-spacing:.18em;}
.home-featured-card{
  position:relative;display:grid;grid-template-columns:76px minmax(0,1fr) auto;align-items:center;gap:20px;
  min-height:188px;padding:28px;border:1px solid rgba(244,197,110,.48);border-radius:20px;
  background:radial-gradient(circle at 82% 8%,rgba(150,103,189,.28),transparent 36%),linear-gradient(145deg,#332342,#1d162b);
  color:var(--home-cream);box-shadow:0 22px 60px rgba(5,3,12,.24);text-decoration:none;
  transition:transform .18s ease,border-color .18s ease;
}
.home-featured-card[hidden]{display:none;}
.home-featured-card:hover{transform:translateY(-3px);border-color:var(--home-gold);}
.home-featured-card .hc-icon-wrap{width:76px;height:76px;margin:0;background:rgba(11,7,18,.35)!important;box-shadow:inset 0 0 0 1px rgba(244,197,110,.16);}
.home-featured-card .hc-icon{width:42px!important;height:42px!important;}
.home-featured-copy{display:flex;min-width:0;flex-direction:column;gap:7px;}
.home-featured-copy small{color:var(--home-gold);font-size:9px;letter-spacing:.18em;}
.home-featured-copy strong{font:700 clamp(23px,3.1vw,34px)/1.2 'American Typewriter',Georgia,serif;overflow-wrap:anywhere;}
.home-featured-copy em{color:var(--home-muted);font-size:12px;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.home-featured-card>b{align-self:end;color:var(--home-gold);font-size:20px;}
.home-featured-empty{display:grid;place-items:center;min-height:188px;margin:0;border:1px dashed var(--home-line);border-radius:20px;color:var(--home-muted);font-size:12px;}
.home-featured-empty[hidden]{display:none;}

.home-afterdark-grid{display:grid;grid-template-rows:repeat(2,minmax(0,1fr));gap:10px;min-height:188px;}
.home-afterdark-card{
  display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:16px;min-height:89px;padding:14px 18px;
  border:1px solid var(--home-line);border-radius:16px;background:rgba(255,255,255,.025);color:var(--home-cream);text-decoration:none;
  transition:transform .18s ease,border-color .18s ease,background .18s ease;
}
.home-afterdark-card[hidden]{display:none;}
.home-afterdark-card:hover{transform:translateY(-2px);border-color:rgba(244,197,110,.52);background:rgba(255,255,255,.045);}
.home-afterdark-art{display:flex;width:64px;height:60px;align-items:center;justify-content:center;border-radius:11px;background:#2c2039;color:#e5bbcb;}
.home-afterdark-card--music .home-afterdark-art{align-items:flex-end;gap:3px;padding:14px 12px;}
.home-afterdark-card--music .home-afterdark-art i{display:block;width:5px;border-radius:4px;background:#e884ac;}
.home-afterdark-card--music .home-afterdark-art i:nth-child(1){height:14px}.home-afterdark-card--music .home-afterdark-art i:nth-child(2){height:26px}.home-afterdark-card--music .home-afterdark-art i:nth-child(3){height:19px}.home-afterdark-card--music .home-afterdark-art i:nth-child(4){height:31px}.home-afterdark-card--music .home-afterdark-art i:nth-child(5){height:17px}
.home-afterdark-card--movie .home-afterdark-art{flex-direction:column;background:#222c42;color:#8eb5ff;font:800 8px/1.4 ui-monospace,monospace;letter-spacing:.12em;text-align:center;}
.home-afterdark-card--movie .home-afterdark-art b{font-size:14px;color:#f4c56e;letter-spacing:.04em;}
.home-afterdark-card--generic .home-afterdark-art .hc-icon{width:34px;height:34px;}
.home-afterdark-card>span:nth-child(2){display:flex;min-width:0;flex-direction:column;gap:3px;}
.home-afterdark-card small{color:var(--home-gold);font-size:8px;letter-spacing:.16em;}
.home-afterdark-card strong{font:700 16px/1.25 'American Typewriter',Georgia,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.home-afterdark-card em{color:var(--home-muted);font-size:10px;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.home-afterdark-card>b{color:var(--home-muted);font-size:15px;}

.home-section-head{grid-column:1/-1;margin:38px 0 13px;padding-top:2px;}
body.theme-dark.front-sub .home-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;max-width:none;}
body.theme-dark.front-sub .home-cards{grid-column:1/-1;}
body.theme-dark.front-sub .home-cards>.home-card--section-afterdark,
body.theme-dark.front-sub .home-cards>.home-card--featured-source,
body.theme-dark.front-sub .home-cards>[data-home-placement="afterdark"],
body.theme-dark.front-sub .home-cards>[data-home-placement="featured"]{display:none!important;}
body.theme-dark.front-sub .home-card,
body.theme-dark.front-sub .home-card--pacman,
body.theme-dark.front-sub .home-card--gamenight{
  grid-column:auto;display:grid;grid-template-columns:54px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;gap:4px 14px;
  min-height:112px;padding:19px 18px;text-align:left;color:var(--home-cream)!important;
  border:1px solid var(--home-line)!important;border-radius:18px;
  background:linear-gradient(145deg,rgba(255,255,255,.038),rgba(255,255,255,.012))!important;
  box-shadow:none!important;transform:none;
}
body.theme-dark.front-sub .home-card--pacman:after{content:none;}
body.theme-dark.front-sub .home-card:hover,
body.theme-dark.front-sub .home-card--pacman:hover,
body.theme-dark.front-sub .home-card--gamenight:hover{
  transform:translateY(-3px);border-color:rgba(244,197,110,.65)!important;
  background:linear-gradient(145deg,rgba(255,255,255,.06),rgba(255,255,255,.02))!important;
  box-shadow:0 14px 34px rgba(5,3,12,.2)!important;
}
body.theme-dark.front-sub .home-card .hc-icon-wrap,
body.theme-dark.front-sub .home-card--pacman .hc-icon-wrap,
body.theme-dark.front-sub .home-card--gamenight .hc-icon-wrap{
  grid-row:1/3;width:54px;height:54px;margin:0;background:rgba(255,255,255,.055)!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035)!important;
}
body.theme-dark.front-sub .home-card .hc-icon,
body.theme-dark.front-sub .home-card--pacman .hc-icon,
body.theme-dark.front-sub .home-card--gamenight .hc-icon{width:31px!important;height:31px!important;}
body.theme-dark.front-sub .home-card h2,
body.theme-dark.front-sub .home-card--pacman h2{
  align-self:end;margin:0;font-family:'American Typewriter',Georgia,serif;font-size:17px!important;font-weight:700;line-height:1.28;letter-spacing:0;overflow-wrap:anywhere;
}
body.theme-dark.front-sub .home-card-cta,
body.theme-dark.front-sub .home-card:hover .home-card-cta{
  align-self:start;margin:0;color:var(--home-muted)!important;font-size:10px;font-weight:600;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
body.theme-dark.front-sub .home-card:hover .home-card-cta{color:var(--home-gold)!important;}
body.theme-dark.front-sub .home-credit{margin:34px 0 4px;color:var(--home-muted);}

@media(max-width:800px){
  body.theme-dark.front-sub .app--home{padding:0 22px 30px;}
  body.theme-dark.front-sub .home-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:900px) and (orientation:portrait){
  body.theme-dark.front-sub .home{grid-template-columns:1fr;}
  .home-hero{grid-column:1;order:1}.home-daily{grid-column:1;order:2}
  .home-hero{display:flex;flex-direction:column;}
  .home-hero h1{order:1;}
  .home-eyebrow{order:2;margin:17px 0 0;}
  .home-program--featured{grid-column:1;order:3}
  .home-section-head{grid-column:1;order:4;margin-top:32px}
  body.theme-dark.front-sub .home-cards{grid-column:1;order:5}
  .home-program--afterdark{grid-column:1;order:6;margin-top:34px}
  body.theme-dark.front-sub .home-credit{grid-column:1;order:7}
}
@media(max-width:560px){
  body.theme-dark.front-sub .app--home{padding:0 16px 24px;}
  body.theme-dark.front-sub .topbar{flex-direction:column;align-items:flex-start;gap:7px;padding:22px 0 16px;}
  body.theme-dark.front-sub .topbar .subtitle{max-width:none;margin-top:0;text-align:left;line-height:1.5;}
  .home-hero{padding:38px 0 27px;}.home-hero h1{font-size:42px;}
  .home-daily{grid-template-columns:72px minmax(0,1fr);gap:15px;padding:10px 14px 10px 10px;}.home-daily-date{min-height:72px}.home-daily-date b{font-size:31px}.home-daily-mark{display:none;}
  .home-featured-card{grid-template-columns:58px minmax(0,1fr) auto;gap:14px;min-height:156px;padding:20px;}.home-featured-card .hc-icon-wrap{width:58px;height:58px}.home-featured-copy strong{font-size:23px;}
  .home-afterdark-card{grid-template-columns:55px minmax(0,1fr) auto;padding:13px 14px}.home-afterdark-art{width:55px;height:55px;}
  body.theme-dark.front-sub .home-cards{grid-template-columns:1fr;}
  body.theme-dark.front-sub .home-card,body.theme-dark.front-sub .home-card--pacman,body.theme-dark.front-sub .home-card--gamenight{min-height:94px;}
}
