/* 《雨夜山庄》系列 · 公共样式 */
:root{
  --bg:#0e1116; --panel:#161b24; --panel2:#1c2330; --line:#2a3242;
  --ink:#c9d3e0; --dim:#7c8aa0; --gold:#d8b36c; --red:#c0504d; --teal:#5aa8a0;
}
*{box-sizing:border-box; margin:0; padding:0;}
html,body{height:100%;}
body{
  background:var(--bg); color:var(--ink);
  font-family:"Songti SC","STSong","SimSun","Noto Serif SC",serif;
}
button{
  background:var(--panel2); color:var(--ink); border:1px solid var(--line);
  padding:6px 14px; font-family:inherit; font-size:14px; cursor:pointer; border-radius:3px; letter-spacing:2px;
  transition:all .15s;
}
button:hover{border-color:var(--gold); color:var(--gold);}
button:disabled{opacity:.35; cursor:default; border-color:var(--line); color:var(--dim);}
button.primary{background:#3a2f1c; border-color:#6b5430; color:var(--gold);}
button.primary:hover{background:#4a3c24;}
button.danger{border-color:#5a3030;}

/* ================= 首页 ================= */
.home{max-width:980px; margin:0 auto; padding:40px 18px 60px; text-align:center;}
.home h1{color:var(--gold); font-size:34px; letter-spacing:16px; margin-bottom:12px;}
.home .sub{color:var(--dim); letter-spacing:5px; font-size:13px; margin-bottom:14px;}
.home .divider{width:220px; height:1px; margin:0 auto 40px; background:linear-gradient(90deg,transparent,#6b5430,transparent);}
.script-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:22px; text-align:left;}
.script-card{
  background:var(--panel); border:1px solid var(--line); border-radius:6px; overflow:hidden;
  cursor:pointer; transition:all .2s; display:flex; flex-direction:column;
  position:relative;
}
.script-card:hover{border-color:var(--gold); transform:translateY(-4px); box-shadow:0 10px 30px rgba(0,0,0,.5);}
.script-card.locked{cursor:not-allowed;}
.script-card.locked:hover{border-color:var(--line); transform:none; box-shadow:none;}
.script-card.locked .cover{filter:grayscale(.85) brightness(.55);}
.script-card.locked .ct,.script-card.locked .ci{color:var(--dim);}
.script-card .lockbadge{
  position:absolute; top:12px; right:12px; z-index:2;
  background:rgba(10,12,16,.85); border:1px solid #4a4030; color:var(--gold);
  font-size:12px; letter-spacing:2px; padding:4px 10px; border-radius:3px;
}
/* 成就墙 */
.achv-section{margin-top:52px; text-align:center;}
.achv-section h2{color:var(--gold); letter-spacing:8px; font-size:18px; margin-bottom:8px;}
.achv-section .asub{color:var(--dim); font-size:12px; letter-spacing:3px;}
.achv-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:12px; margin-top:20px; text-align:left;}
.achv{background:var(--panel); border:1px solid var(--line); border-radius:4px; padding:12px 14px;}
.achv .an{color:var(--dim); font-size:14px; letter-spacing:2px;}
.achv .ad{color:var(--dim); font-size:12px; line-height:1.8; margin-top:4px;}
.achv.got{border-color:#6b5430; background:#211d12;}
.achv.got .an{color:var(--gold);}
.achv.got .ad{color:var(--ink);}
.achv:not(.got){opacity:.55;}
.toast-achv{
  position:fixed; top:18px; left:50%; transform:translateX(-50%);
  background:#2d2410; border:1px solid var(--gold); color:var(--gold);
  padding:10px 22px; font-size:14px; letter-spacing:2px; z-index:99; border-radius:3px;
  box-shadow:0 4px 18px rgba(0,0,0,.5); transition:opacity .5s;
}
.script-card .cover{width:100%; aspect-ratio:16/9; object-fit:cover; display:block; background:#000;}
.script-card .cbody{padding:16px 18px 18px; flex:1; display:flex; flex-direction:column;}
.script-card .ct{color:var(--gold); font-size:19px; letter-spacing:5px; margin-bottom:6px;}
.script-card .cs{color:var(--dim); font-size:12px; letter-spacing:2px; margin-bottom:10px;}
.script-card .ci{color:var(--ink); font-size:13.5px; line-height:1.9; flex:1;}
.script-card .cfoot{display:flex; justify-content:space-between; align-items:center; margin-top:14px;}
.script-card .badge{color:var(--teal); font-size:12px; letter-spacing:1px;}
.script-card .badge .nogot{color:var(--dim); opacity:.6;}
.home .total{color:var(--dim); font-size:12px; letter-spacing:2px; margin-top:36px;}

/* ================= 游玩页 ================= */
#app{width:100%; max-width:820px; min-height:100vh; margin:0 auto; display:flex; flex-direction:column; padding:14px;}
#topbar{display:flex; align-items:center; justify-content:space-between; padding:8px 4px 12px; border-bottom:1px solid var(--line);}
#topbar .title{color:var(--gold); letter-spacing:4px; font-size:16px;}
#topbar .btns button{margin-left:8px;}
#chapter{color:var(--dim); font-size:13px; letter-spacing:3px; padding:16px 4px 4px; text-align:center;}
#stage{flex:1; display:flex; flex-direction:column; padding:12px 6px 16px;}
#sceneWrap{display:none; margin-bottom:14px; border:1px solid var(--line); border-radius:4px; overflow:hidden; cursor:zoom-in; position:relative;}
#sceneWrap.show{display:block;}
#sceneImg{width:100%; aspect-ratio:16/7; object-fit:cover; display:block;}
#sceneWrap .cap{position:absolute; left:0; right:0; bottom:0; padding:6px 14px; font-size:12px; letter-spacing:2px; color:var(--dim); background:linear-gradient(transparent,rgba(8,10,14,.85));}
#text{
  background:linear-gradient(180deg,var(--panel) 0%, #131822 100%);
  border:1px solid var(--line); border-radius:4px;
  padding:24px 26px; min-height:240px; font-size:17px; line-height:2.05;
  cursor:pointer; box-shadow:0 4px 24px rgba(0,0,0,.35); white-space:pre-wrap;
}
#text .para{margin-bottom:14px;}
#cursor{display:inline-block; width:9px; height:18px; background:var(--gold); vertical-align:-3px; animation:blink .8s step-end infinite;}
@keyframes blink{50%{opacity:0;}}
#choices{margin-top:18px; display:flex; flex-direction:column; gap:10px;}
#choices button{
  text-align:left; padding:12px 18px; font-size:15px; line-height:1.7; letter-spacing:1px;
  background:var(--panel2); border:1px solid var(--line); border-left:3px solid var(--gold); border-radius:2px;
}
#choices button.locked{border-left-color:#3a4557; color:var(--dim); font-size:13px;}
#hint{color:var(--dim); font-size:12px; text-align:center; margin-top:10px; letter-spacing:2px;}
#ending{display:none; flex:1; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:40px 20px;}
#ending .etitle{color:var(--gold); font-size:30px; letter-spacing:10px; margin-bottom:26px;}
#ending .etext{color:var(--ink); font-size:16px; line-height:2.2; max-width:620px; text-align:left; white-space:pre-wrap; margin-bottom:30px;}
#ending .elist{color:var(--dim); font-size:13px; letter-spacing:2px; margin-top:24px; line-height:2;}
#ending .elist .got{color:var(--teal);}
#ending .elist .nogot{opacity:.45;}
#splash{flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;}
#splash h1{color:var(--gold); font-size:30px; letter-spacing:12px; margin-bottom:14px;}
#splash .sub{color:var(--dim); letter-spacing:5px; font-size:13px; margin-bottom:44px;}
#splash .menu{display:flex; flex-direction:column; gap:12px; width:240px;}

/* ================= 弹窗 ================= */
.mask{position:fixed; inset:0; background:rgba(5,8,12,.78); display:none; z-index:50; overflow:auto; padding:30px 14px;}
.mask.show{display:flex; justify-content:center;}
.modal{background:var(--panel); border:1px solid var(--line); border-radius:6px; width:100%; max-width:680px; padding:22px; height:max-content;}
.modal h3{color:var(--gold); letter-spacing:4px; font-size:16px; margin-bottom:14px; border-bottom:1px solid var(--line); padding-bottom:10px;}
.clue-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:10px; margin-bottom:16px;}
.clue-card{background:var(--panel2); border:1px solid var(--line); border-radius:3px; padding:12px;}
.clue-card .cn{color:var(--gold); font-size:14px; margin-bottom:6px;}
.clue-card .cd{color:var(--dim); font-size:13px; line-height:1.8;}
.empty-tip{color:var(--dim); text-align:center; padding:30px 0;}
.accuse-row{margin-bottom:16px;}
.accuse-row label{display:block; color:var(--dim); font-size:13px; margin-bottom:8px; letter-spacing:2px;}
.accuse-row select{
  width:100%; background:var(--panel2); color:var(--ink); border:1px solid var(--line);
  padding:10px; font-family:inherit; font-size:15px; border-radius:3px;
}
/* 图片灯箱 */
#lightbox{position:fixed; inset:0; z-index:90; background:rgba(4,6,10,.92); display:none; align-items:center; justify-content:center; cursor:zoom-out; padding:24px;}
#lightbox.show{display:flex;}
#lightbox img{max-width:100%; max-height:100%; border:1px solid var(--line); border-radius:4px;}
/* 新线索提示 */
.toast-clue{
  position:fixed; top:18px; left:50%; transform:translateX(-50%);
  background:#2a2416; border:1px solid #6b5430; color:#d8b36c;
  padding:10px 22px; font-size:14px; letter-spacing:2px; z-index:99; border-radius:3px;
  box-shadow:0 4px 18px rgba(0,0,0,.5); transition:opacity .5s;
}
@media (max-width:560px){
  #text{padding:18px 16px; font-size:15.5px;}
  .home h1{font-size:26px; letter-spacing:8px;}
}
